概念:外键用来两个表的数据之间建立连接,保证数据的一致性和完整性。
为什么会有外键约束呢:举个例子,有两个表,分别是员工表和部门表,A,B,C都是销售部的,如果没有外键约束,我现在删掉销售部,但是在员工表里,A,B,C仍然是销售部的,这样信息就有误;如果加上外键约束,数据库就不允许我先删去部门,而是要先删去员工表中属于销售部的所有员工,接下来我才可以删去部门表中的销售部。
第一步:先建立两个表(员工表和部门表):
-- 部门表
CREATE TABLE department(
id int PRIMARY KEY auto_increment,
`dep_name` VARCHAR(20),
`address` VARCHAR(20)
);
-- 员工表
CREATE TABLE staff(
id INT PRIMARY KEY auto_increment,
`name` VARCHAR(20),
age INT,
dep_id INT);
第二步:把数据加到两个部门里去
-- 添加两个部门
INSERT into department(`dep_name`,`address`)VALUES
('研发部','广州'),('销售部','深圳');
INSERT INTO staff(`name`,age,dep_id)VALUES
('张三',20,1),('李四',20,1),('王五',20,1),('赵六',20,2),('孙七',22,2),('周八',18,2);
第三步:想办法将两个表建立联系。
这时候就需要用到外键约束:
语法:
(1)添加约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名称) REFERENCES 主表名称(主列表名称);
(2)删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
所以添加外键约束为:
ALTER TABLE staff ADD CONSTRAINT wj_staff_department FOREIGN KEY(dep_id)REFERENCES department(id);
这时候再想删除部门表就会报错:
目前为止,你的外键约束就建立成功了。祝你每天开心,每天多学一点点。