多表_SQL约束-外键约束


外键约束

 

主键:可以唯一标识一条记录的列

外键:从表中与主表的主键对应的字段

主表:外键所指向的表,约束其他表的表

从表:外键所在的表,被约束的表

价值:建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性

多表_SQL约束-外键约束

 

 

建立外键约束

  • 创建表时添加外键约束:CONSTRAINT [外键约束的名称] FOREIGN KEY (外键字段) REFERENCES [主表名称(主键字段)]

  • 添加外键约束:ALTER TABLE [表名] ADD CONSTRAINT [外键约束的名称] FOREIGN KEY [外键字段] REFERENCES [主表名称(主键字段)]

alter table emp_part add constraint emp_dept foreign key(dept_id) references dept(id);

# 创建一个关联到主表的从表
CREATE TABLE emp_part(  
emp_id INT PRIMARY KEY AUTO_INCREMENT,  
ename VARCHAR(20),  
age INT ,  
gender VARCHAR(10),
dept_id INT,
-- 添加外键约束 
CONSTRAINT emp_dept FOREIGN KEY(dept_id) REFERENCES dept(id)

删除外键约束

  • 语法:
    • ALTER TABLE [表名] DROP FOREIGN KEY [外键约束名称]
  • 注意事项
    • 从表外键数据类型必须与主表的主键一致
    • 删除数据时,需先删除从表数据再删除主表的数据
    • 添加数据时先添加主表数据,再添加从表数据
# 删除外键约束 

ALTER TABLE emp_part DROP FOREIGN KEY emp_dept 

# 插入一条非法数据
INSERT INTO emp_part VALUES(1,'cindy',20,'female','4') 

SELECT * FROM emp_part  

# 向主表中插入一条数据
INSERT INTO dept VALUES(2,'运营部','张三','北京') 
# 向从表中插入一条数据
INSERT INTO emp_part VALUES(1,'cindy',20,'female','2') 
# 删除主表中的数据 
DELETE FROM dept WHERE id=2

级联删除

  • 删除主表数据的同时,也删除掉从表中相关的数据;即当你删除一个部门信息,就会把所关联的该部门员工信息删除。
    • ON DELETE CASCADE

alter table emp_part add constraint emp_dept foreign key(dept_id) references dept(id) on delete cascade;

 

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/244962.html

(0)
上一篇 2022年4月18日
下一篇 2022年4月18日

相关推荐

发表回复

登录后才能评论