外键约束和外键约束_级联操作

外键约束 : foreign key

外键约束可以让表与表产生关系,从而保证数据的正确性
在创建表的时候也可以添加外键
语法:
create table 表名(
...
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
准备表:

CREATE TABLE emp( -- 创建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,'销售部','深圳');

SELECT * FROM emp;

表的拆分
解决方案:分成两张表
创建部门表(id,dep_name,dep_location)
一方,主表

drop table emp;

-- 表的拆分
-- 解决方案:分成两张表
-- 创建部门表(id,dep_name,dep_location)
-- 一方,主表
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);

SELECT * FROM employee;

SELECT * FROM department;

删除外键
格式:alter table 表名 drop foreign key 外键名称。
代码实现:

alter table employee drop foreign key emp_dept_fk;

image

创建表之后添加外键
格式:alter table 表名 add constraint 外键名称 foreign key(外键字段名称) references 主表名称(主表列名称);
代码实现:

alter table employee add constraint emp_dept_fk foreign key (dep_id) references department(id);

image

外键约束_级联操作

添加级联操作
语法:
alter table 表名 add constraint 外键名称
foreign key(外键字段名称) references 主表名称(主列表名称) on update cascade on delete caseade;

分类:
级联更新: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;
posted @ 2022-07-25 13:32  我滴妈老弟  阅读(93)  评论(0编辑  收藏  举报