restrict 外键约束_主外键和外键约束
主外键和外键约束
主键
主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 。
外键
外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系
什么是外键约束
右边的DepartmentID是外键。 外键约束是指用于在两个表之间建立关系,需要指定引用主表的哪一列。
On Delete
On Delete可能取值如上图为:No Action, Cascade,Set Null, Restrict属性。 1. No Action / Restrict 当取值为No Action或者Restrict时,则当在父表(主表)(即外键的来源表)中删除对应记录时,首先检查该记录对应的从表是否有对应外键,如果有则不允许删除。 2. Cascade(级联) 当取值为Cascade时,则当在父表(主表)(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。(一起删除) 3. Set Null 当取值为Set Null时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。
On Update
On Update可能取值如上图为:No Action, Cascade,Set Null, Restrict属性。(更新的是外键的值)No Action / Restrict 当取值为No Action或者Restrict时,则当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。
Cascade(级联) 当取值为Cascade时,则当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。
Set Null 当取值为Set Null时,则当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。
理解示例
表结构
学生表(学号,姓名,性别,班级) // 学号唯一,能确定学生表的一行课程表(课程编号,课程名,学分) // 课程编号唯一,能确定课程表的一行成绩表(学号,课程号,成绩) // 学号和课程号才能唯一确定哪个人哪门课得了多少分,学号和课程号这两列为主键
具体分析
以上面的成绩表为例,学号和课程号是成绩表的主键,那么学号是成绩表的外键还是学生表的外键?当然是成绩表的外键,因为学号是学生表的主键呀,怎么可能是外键?同理成绩表课程号也应该是成绩表的外键。 其实,外键主要建立与其他表的联系,如果我们想知道成绩表中某一行成绩是谁考的,啥性别,在哪个班级,就可通过成绩表的外键学号与学生表建立一种关系。
restrict 外键约束_主外键和外键约束相关推荐
- mysql 添加外键 完整_详解mysql添加外键的方法
本文主要向大家介绍了mysql添加外键的方法,通过具体的实例让大家了解,希望对大家学习mysql有所帮助. 为已经添加好的数据表添加外键: 语法:alter table 表名 add constrai ...
- mysql主键标识_实体标识与数据库主键
今天,我们将讨论DDD意义上的标识与数据库主键之间的区别. 我们经常将两者混合在一起,但它们真的是一回事吗? 实体标识 在DDD的背景下,标识是实体固有的东西. 只有实体拥有它; 它是用于区别于所有其 ...
- mysql级联删除外键约束_玩转MySQL的外键约束之级联删除篇
[IT168 文档]如今,许多关系型数据库管理系统都提供了外键约束这一强大的功能特性,它能够帮助我们自动地触发指定的动作,诸如删掉.更新数据库表的记录等,从而维护各数据库表之间预定义的关系.本文将演示 ...
- 数据库 外键 优缺点_不同数据格式的优缺点:键值与元组
数据库 外键 优缺点 by Hieu Nguyen (Jack) 由Hieu Nguyen(Jack) 不同数据格式的优缺点:键值与元组 (The pros and cons of different ...
- mysql非主键索引_主键索引和非主键索引的区别
1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...
- mysql非主键索引_主键索引和非主键索引解析
1. 什么是最左前缀原则? 以下回答全部是基于MySQL的InnoDB引擎 例如对于下面这一张表 如果我们按照 name 字段来建立索引的话,采用B+树的结构,大概的索引结构如下 如果我们要进行模糊查 ...
- 华为虚拟home键关闭_华为P20怎么隐藏虚拟键?前置指纹键可轻触返回!
华为P20采用新一代HUAWEIFullViewDisplay屏幕技术,超高屏占比及极窄边框,带来沉浸式视觉感官体验,游戏娱乐更酣畅,显示信息更多,阅读更高效.采用双面玻璃机身设计,玻璃弧度曲线设计符 ...
- 怎么分辨是不是外包工司_花2万做外装农村自建房秒变别墅,农村工头:这还让人怎么混?...
设计很重要,施工更重要,外装最重要. 建房花了不少钱,费力操心,可外观往往变了样.走了型. 反面案例 在农村建别墅,外墙装修是个很大的痛点,而很多建房朋友往往是不知道怎么装好看,也不知道该找谁做.村里 ...
- templet 显示字段外键对应名_主外键和外键约束
主外键和外键约束 主键 主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 . 外键 外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个 ...
最新文章
- 趣图:好好干,今天再加个班
- HTTP状态码和支持的方法
- elementui的el-tree第一次加载无法展开和选中的问题
- 机器学习技法-随机森林(Random Forest)
- HDU [P3605] Escape
- 生产环境可以用吗_小型熔喷布设备可以生产出好的熔喷布吗?
- 默认轮播,鼠标移入停止,移出继续
- 数字化技术浪潮下,医院临床科研如何「华丽变身」
- C++:类的成员函数
- 2011年白银机会远超黄金 四妙招帮您赚大
- HTC公布多款Android新机系统内核源代码
- 突发 , 谷歌官宣安卓改名了!
- ansible 通过加密码来批量管理主机及管理Windows主机
- Qt QBoxLayout QVBoxLayout QGridLayout 清空布局内widget的正确做法
- 小程序源码:首席省钱赚钱专家微信小程序源码下载,淘宝客 外卖侠 外卖cps -多玩法安装简单
- win10计算机管理看不见蓝牙,解决win10蓝牙开关不见了的方法
- 一道携程SQL笔试题
- Android开发——ListView局部刷新的实现
- IT项目管理表格集合
- Kafka 集群搭建