约束-外键约束以及级联操作
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;-- 查询
约束-外键约束
1.foreign key:让表与表产生关系,从而保证数据的正确性
语法:在创建表时,可以添加外键
CREATE TABLE 表名( ... 外键列 CONSTRAINT 外键名称 FOREIGN KEY (外键列名称) REFERENCES 主表名称(主表列名称)-- 添加外键约束 );
-----------------------------------------------------------------------------
-- 表的拆分(创建多表) -- 创建部门表(id,dep_name,dep_location) CREATE TABLE department( id INT PRIMARY KEY AUTO_INCREMENT, dep_name VARCHAR(20), -- 部门名称 dep_location VARCHAR(20) -- 部门地址 ); -- 添加2个部门 INSERT INTO department VALUES(NULL,'研发部','广州'),(NULL,'销售部','广州'); -- 创建员工表(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_id FOREIGN KEY (dep_id) REFERENCES department(id) ); -- 添加员工,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;-- 查询
2.删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称; -- 删除外键约束
3.在创建表后,添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);-- 创建表后,添加外键约束
实际操作:
约束_外键约束_级联操作
1.添加级联操作
语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;
2.分类:
1.级联更新:ON UPDATE CASCADE;
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE;-- 创建表后,添加外键约束,设置级联更新
作用:当更改主表中的数据信息后,从表中引用的主表信息也会相应更改。(例:更改主表中的自动化的专业编号(更改为04),则从表中自动化学生信息中的学生专业编号的值也会更改(变为04))
2.级联删除:ON DELETE CASCADE;
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON DELETE CASCADE; -- 删除级联更新
作用:当删除主表中的某一数据信息后,从表中引用相应主表信息的数据项也会被删除(例:当删除主表中的自动化专业后,从表中属于自动化专业的学生的信息也会被删除)
实际操作:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix