首页 > 其他分享 >510约束_外键约束和511和约束_外键约束的级联操作

510约束_外键约束和511和约束_外键约束的级联操作

时间:2022-10-11 15:47:28浏览次数:48  
标签:DEP 外键 id employee 511 -- 约束 ID

外键约束
外键约束:foreign key ,让表与表产生关系,从而保证数据的正确性
1.在创建表时,可以添加外键
语法:
CREATE TABLE 表名(
....(值)
外键列
CONSTRAINT 外键名称,FOREIGN KEY (外键列名称)REFERENCES 主表名称(主表列名称)
);

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
('马云',55,'研发部','北京'),
('汤姆',19,'研发部','北京'),
('杰瑞',18,'研发部','北京'),
('马华腾',55,'财务部','青青草原'),
('红太狼',18,'财务部','青青草原'),
('灰太狼',19,'财务部','青青草原');
SELECT * FROM emp;

-- 数据有冗余出现相同数据

-- 表的拆分
/*
解决方案:
把他们两个部分分为两个表
创建部门表(id,dep_name,dep_location)
一方,主表
*/
CREATE TABLE department(
id INT PRIMARY KEY AUTO_INCREMENT,
DEP_NAME VARCHAR(30),
DEP_LOCATION VARCHAR(30)
);
-- 创建员工表(id,name,age,dep_id) 多方,从表
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30),
AGE INT,
DEP_ID INT,
CONSTRAINT epl_dept_fk FOREIGN KEY(DEP_ID)REFERENCES department(id)-- 新增外键
);
-- 添加两个部门
INSERT INTO department VALUES(NULL,'研发部','广州'),(NULL,'财务部','青青草原');
-- 添加员工,deo_id表示员工所在部门
INSERT into employee (NAME,AGE,DEP_ID)VALUES
('马云',55,1),
('汤姆',19,1),
('杰瑞',18,1),
('马华腾',55,2),
('红太狼',18,2),
('灰太狼',19,2);
SELECT * FROM department;
SELECT * FROM employee;

-- 删除外键
ALTER TABLE employee DROP FOREIGN KEY epl_dept_fk;

-- 创建完表之后新增外键

ALTER TABLE employee ADD CONSTRAINT epl_dept_fk FOREIGN KEY(DEP_ID)REFERENCES department(id);

级联操作

根据以上已经创建好的表我们可以更改(NAME,AGE,DEP_NAME,DEP_LOCATION)唯独两个表的id不能进行更改原因很简单就是外键关联

如果执意需要更改的话我们需要先将employee表的DEP_ID 值为空再进行更改

-- 外键值可以为null但是不可以是不存在的null值
UPDATE employee SET DEP_ID = NULL WHERE DEP_ID=1; 
id值更改为5
-- 修改键值 UPDATE employee SET DEP_ID = 5 WHERE DEP_ID IS NULL;

到employee 更改DEP_ID

 

还有一种方法就是

id更改后DEP_ID也就跟着自动更改

这样需要我们先删除外键,添加外键的时候我们需要对外键设置级联更新

 

-- 创建增外键并设置级联更新
ALTER TABLE employee ADD CONSTRAINT epl_dept_fk FOREIGN KEY(DEP_ID)REFERENCES department(id) ON UPDATE CASCADE;

-----

 

 

-- 创建增外键并设置级联更新也可以设置级联删除
ALTER TABLE employee ADD CONSTRAINT epl_dept_fk FOREIGN KEY(DEP_ID)REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE;
-- 也可以直接设置级联删除
ALTER TABLE employee ADD CONSTRAINT epl_dept_fk FOREIGN KEY(DEP_ID)REFERENCES department(id) ON DELETE CASCADE;
设置级联删除,删除
将一号部门研发部删掉之后employee 表所有为1号部门的自动删除

 

 

 

 

 

 

 

标签:DEP,外键,id,employee,511,--,约束,ID
From: https://www.cnblogs.com/agzq/p/16779432.html

相关文章

  • 外键约束级联操作
    外键约束:foreignkey 让表于表产生关系 从而保证数据的正确性1在创建表时 可以添加外键语法createtable 表名(constraint ......
  • 主键约束
    主键约束:primarykey含义 非空且唯一一张表只能有一个字段为主键主键就是表中记录的唯一标识创建表时 添加主键约束          删......
  • 唯一约束
    唯一约束:unique值不能重复1创建表时 添加唯一约束mysql中 唯一约束限定的列值可以有多个null   删除唯一约束 创建表后添加唯一约束   ......
  • 508约束_主键约束和509约束_主键约束_自动增长
    主键约束主键约束:primarykey。1.注意:含义:非空且唯一(既不是空值也是唯一的一个值)一张表只能有一个字段为主键主键就是表中纪录的唯一标识2.主键约束一下基础操作......
  • 非空约束
    1.创建表时添加约束     创建完表后,添加非空约束      删除name的非空约束   ......
  • 洛谷 P3530 / bzoj2788【tarjan】【差分约束】
    判断是否有解可以使用差分约束。求解赛车手的成绩的取值可以使用Floyd。但是\(O(n^3)\)会TLE。可以先进行一次缩点。然后进行Floyd求出每一个连通块内的最长路径......
  • MySQL中常见的约束(Constraints)
    0.约束的概念SQL约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。1.主键约束PRIMARYKEY约束唯一标识数据库表中的每条记录。要求必须包含唯......
  • 创建表加入约束
    约束什么是约束?约束:constraint在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的完整性、有效性!!约束包括哪些非空约束:notnull唯一性约束:uniq......
  • 差分约束模板补坑与学习
    很久以前就学了差分约束,但是一直没搞懂,也懒得搞懂。今天看板子,脑补了几秒钟突然就懂了。对于一个不等式,\(x_i-x_j\lek\),可以变形:\(x_i\lex_j+k\)。这跟最短......
  • 【路径规划】基于粒子群和遗传算法求解充电量和时间窗约束下的多AGV路径规划问题复mat
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......