概念:sql
外键与主键相对,做用就是经过主外键的之间关系使对张表中的数据更好的关联。code
外键特色:table
从表外键的值是对主表主键的引用。class
从表外键类型,必须与主表主键类型一致。引用
做用:外键能够保证数据的完整性和一致性技术
格式:(2种)数据
[constraint 外键约束关系的名称] foreign key 从表(外键字段名称) references 主表(主键字段名称)
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
数据:异常
#部门表: CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, dname VARCHAR(20) UNIQUE NOT NULL, dcode INT UNIQUE NOT NULL); #员工表: CREATE TABLE emp( id INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(20) NOT NULL, ecode INT UNIQUE NOT NULL, did INT, CONSTRAINT dept_emp FOREIGN KEY emp(did) REFERENCES dept(id));
插入数据:tab
#插入数据: INSERT INTO dept VALUES(NULL,'技术部',100); INSERT INTO dept VALUES(NULL,'财务部',200); INSERT INTO dept VALUES(NULL,'人事部',300); INSERT INTO emp VALUES(NULL,'张三',123,1); INSERT INTO emp VALUES(NULL,'李四',124,2); INSERT INTO emp VALUES(NULL,'王五',125,1); INSERT INTO emp VALUES(NULL,'田七',126,1);
抛出异常:di
问题:DELETE FROM dept WHERE id=1;
出错缘由:从表有员工关联部门中id为1的部门INSERT INTO emp VALUES(NULL,'haha',127,5);出错缘由:主表中没有主键id为5的部门