SQL中的外键

外键

概念:sql

     外键与主键相对,做用就是经过主外键的之间关系使对张表中的数据更好的关联。code

外键特色:table

     从表外键的值是对主表主键的引用。class

     从表外键类型,必须与主表主键类型一致。引用

做用:外键能够保证数据的完整性和一致性技术

格式:(2种)数据

[constraint 外键约束关系的名称] foreign key 从表(外键字段名称) references 主表(主键字段名称)
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

egg:

数据:异常

#部门表:
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的部门