赞
踩
外键约束:
什么是外键约束:一张表中的某个字段引用另一个表的主键
主表: 约束别人
副表/从表: 使用别人的数据,被别人约束
-- 创建部门表 CREATE TABLE department ( id INT PRIMARY KEY AUTO_INCREMENT,-- 主键自增 dep_name VARCHAR(20), dep_location VARCHAR(20) ); -- 添加2个部门 INSERT INTO department (dep_name, dep_location) VALUES ('研发部', '广州'), ('销售部', '深圳'); -- 创建员工表,添加外键约束 CREATE TABLE employee ( id INT PRIMARY KEY AUTO_INCREMENT,-- 主键自增 NAME VARCHAR(20), age INT, dep_id INT,-- 外键 -- 添加一个外键 -- 外键取名公司要求,一般fk结尾 CONSTRAINT emp_depid_ref_dep_id_fk FOREIGN KEY(dep_id) REFERENCES department(id) );-- emp_depid_ref_dep_id_fk 外键的取名方式,外键约束方式 -- 正常添加数据 INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1), ('李四', 21, 1), ('王五', 20, 1), ('老王', 20, 2), ('大王', 22, 2), ('小王', 18, 2); -- 删除外键 -- 删除employee表的emp_depid_ref_dep_id_fk外键 ALTER TABLE employee DROP FOREIGN KEY emp_depid_ref_dep_id_fk; -- 在employee表存在下添加外键 ALTER TABLE employee ADD CONSTRAINT emp_depid_ref_dep_id_fk FOREIGN KEY(dep_id) REFERENCES department(id);
数据操作注意事项:
1.添加数据时:先添加主表中的数据,再添加从表中的数据
2.删除数据时:先删从表中的数据,再删主表中的数据
3.修改数据时:如果主表中的主键被从表引用了,不能修改此主键的值
级联删除和更新
级联:一个表改变,另一个表也跟着改变;
#外键的级联(扩展) CREATE TABLE department ( id INT PRIMARY KEY AUTO_INCREMENT, dep_name VARCHAR(20), dep_location VARCHAR(20) ); CREATE TABLE employee ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), age INT, dep_id INT, CONSTRAINT fk_002 foreign key (dep_id) references department(id)-- 这里添加外键约束,关联主表主键:department(id) on update cascade -- 字段支持 级联更新 on delete cascade ); -- 正常添加数据 INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1), ('李四', 21, 1), ('王五', 20, 1), ('老王', 20, 2), ('大王', 22, 2), ('小王', 18, 2); update department set id = 3 where id = 2; delete from department where id = 1;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。