外键约束
-- 创建表
CREATE TABLE emp(
id int PRIMARY KEY auto_increment,
name varchar(30),
age INT,
dep_name VARCHAR(30),
dep_location VARCHAR(30)
);
-- 添加数据
INSERT INTO emp (NAME,age,dep_name,dep_location) VALUES ('张三',20,'研发部','广州');
INSERT INTO emp (NAME,age,dep_name,dep_location) VALUES ('李四',21,'研发部','广州');
INSERT INTO emp (NAME,age,dep_name,dep_location) VALUES ('王五',20,'研发部','广州');
INSERT INTO emp (NAME,age,dep_name,dep_location) VALUES ('老王',28,'销售部','深圳');
INSERT INTO emp (NAME,age,dep_name,dep_location) VALUES ('大王',22,'销售部','深圳');
INSERT INTO emp (NAME,age,dep_name,dep_location) VALUES ('小王',18,'销售部','深圳');
CREATE TABLE department(
id INT PRIMARY KEY AUTO_INCREMENT,
dep_name VARCHAR(20), -- 部门名称
dep_location VARCHAR(20) -- 部门地址
);
-- 创建员工表(id,name,age,dep_id)
-- 多方,从表
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30),
age INT,
dep_id INT, -- 外键对应主表的主键
CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id)
);
-- 添加2个部门
INSERT INTO department VALUES(NULL,'研发部','广州'),(NULL,'销售部','广州');
-- 添加员工,dep_id 表示员工所在的部门
INSERT INTO employee(NAME,age,dep_id) VALUES ('张三',20,1);
INSERT INTO employee(NAME,age,dep_id) VALUES ('李四',21,1);
INSERT INTO employee(NAME,age,dep_id) VALUES ('王五',20,1);
INSERT INTO employee(NAME,age,dep_id) VALUES ('老王',28,2);
INSERT INTO employee(NAME,age,dep_id) VALUES ('大王',22,2);
INSERT INTO employee(NAME,age,dep_id) VALUES ('小王',18,2);
语法:foreign key :让表与表产生关系,从而保证数据的正确性。
在创建表示,可以添加外键
语法:
create table 表名(
…..
外键列
constrant (外键名称:随便起一个) foreign key (外键列名称) References 注意名称(主列表名称)
);
删除外键
-- 删除外键 ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk;
添加外键
-- 添加外键 ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id)
约束_外键约束_级联操作
创建表之后添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(id) on UPDATE CASCADE ON DELETE CASCADE;
分类:
级联更新:ON Update Cascade
级联删除:ON delete Cascade
-- 添加外键, 设置级联跟新,设置级联删除 ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) on UPDATE CASCADE ON DELETE CASCADE;
搜索
复制
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/276764.html