轻松学习SQL外键约束的核心原理和实用技巧

简介: 轻松学习SQL外键约束的核心原理和实用技巧

image.png

测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。

SQL 约束-外键约束

测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。

简介

外键约束(FOREIGN KEY,缩写 FK)是用来实现数据库表的参照完整性的。它是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须且有主键约束或者唯一约束。被依赖的表通常称之为父表或者主表,设置外键约束的表称为子表或从表。

相关概念

  • 主键:可以唯一标识一条记录的列
  • 外键:从表中与主表的主键对应的字段
  • 主表:外键所指向的表,约束其他表的表
  • 从表:外键所在的表,被约束的表
  • 价值:建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性

建立外键约束

  • 创建表时添加外键约束:CONSTRAINT [外键约束的名称] FOREIGN KEY (外键字段) REFERENCES [主表名称(主键字段)]
  • 添加外键约束:ALTER TABLE [表名] ADD CONSTRAINT [外键约束的名称] FOREIGN KEY [外键字段] REFERENCES [主表名称(主键字段)]
#创建一个关联到主表的从表
CREATETABLEemp_part(
emp_idINTPRIMARYKEYAUTO_INCREMENT,
enameVARCHAR(20),
ageINT,
genderVARCHAR(10),
dept_idINT,
-- 添加外键约束
CONSTRAINTemp_deptFOREIGNKEY(dept_id)REFERENCESdept(id));
#插入一条非法数据
INSERTINTOemp_partVALUES(1,'cindy',20,'female','4')

删除外键约束

  • 语法:

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


#删除外键约束
ALTERTABLEemp_partDROPFOREIGNKEYemp_dept
#插入一条非法数据
INSERTINTOemp_partVALUES(1,'cindy',20,'female','4')
SELECT*FROMemp_part
#向主表中插入一条数据
INSERTINTOdeptVALUES(2,'运营部','张三','北京')
#向从表中插入一条数据
INSERTINTOemp_partVALUES(1,'cindy',20,'female','2')
#删除主表中的数据
DELETEFROMdeptWHEREid=2

级联删除

  • 删除主表数据的同时,也删除掉从表中相关的数据
    • ON DELETE CASCADE


#创建员工信息表并添加级联删除的外键约束
CREATETABLEemp_part(
emp_idINTPRIMARYKEYAUTO_INCREMENT,
enameVARCHAR(20),
ageINT,genderVARCHAR(10),
dept_idINT,
-- 添加外键约束
CONSTRAINTemp_deptFOREIGNKEY(dept_id)REFERENCESdept(id)
-- 设置允许级联删除
ONDELETECASCADE);
#向员工信息表中添加一条数据
INSERTINTOemp_partVALUES(1,'cindy',20,'female','2')
#删除主表中部门id=2的部门
DELETEFROMdeptWHEREid=2
#查看从表中的数据是否同时被删除
SELECT*FROMemp_part

总结

SQL 中的外键约束是一种参照完整性约束,它用于确保两个表之间的数据一致性,构建了一种父子关系。当在子表中插入或更新数据时,外键约束确保所提供的外键值必须在父表的相应主键或唯一键值范围内。如果父表中不存在相应的值,则操作将失败,从而确保了数据的完整性和一致性。

相关文章
|
2月前
|
SQL 缓存 关系型数据库
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
65 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
51 0
|
6天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
1月前
|
SQL 数据库 内存技术
学习数据库要掌握的54条SQL查询语句
学习数据库要掌握的54条SQL查询语句
15 0
|
2月前
|
SQL 存储 缓存
SQL底层执行原理详解
SQL底层执行原理详解
|
2月前
|
SQL 存储 关系型数据库
MySQL索引原理以及SQL优化
MySQL索引原理以及SQL优化
66 0
|
2月前
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
36 0
|
2月前
|
SQL 编译器 网络安全
【网络安全 | SQL注入】一文讲清预编译防御SQL注入原理
【网络安全 | SQL注入】一文讲清预编译防御SQL注入原理
83 0
|
10月前
|
SQL 关系型数据库 MySQL
15天学习MySQL计划-SQL语言学习(基础篇)-第二天
15天学习MySQL计划-SQL语言学习(基础篇)-第二天
151 1
|
SQL 网络协议 Ubuntu
简单学习SQL语言
简单学习SQL语言
118 0