3.啥是键、候选键、主键和外键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.啥是键、候选键、主键和外键?相关的知识,希望对你有一定的参考价值。

主外键和外键约束
主键
主键(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)。
参考技术A 主外键和外键约束
主键
主键(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)。

SQL - 唯一键,主键和外键

关于SQL的概念,Unique Key,Primary Key和Foreign Key之间有什么区别?

他们是如何彼此不同的?

答案

PRIMARY Key和UNIQUE Key约束都是相似的,它提供了定义它们的列的唯一强制唯一性。

Primary Key

  • 主键不能具有NULL值。
  • 每个表只能有一个主键。
  • 默认情况下,主键是聚簇索引,数据库表中的数据按聚簇索引的顺序进行物理组织。
  • 主键可以与另一个表作为外键相关联。
  • 我们可以在Auto Increment字段的帮助下自动生成ID。主键支持自动增量值。

Unique Key

  • 唯一约束可能具有NULL值。
  • 每个表都可以有多个唯一约束。
  • 默认情况下,唯一键是唯一的非聚集索引。
  • 唯一约束不能与另一个表作为外键相关联。
  • 唯一约束不支持自动增量值。

Foreign Key

  • 外键是表中的一个字段,它是另一个表中的主键。
  • 外键可以接受多个空值。
  • 外键不会自动创建索引,群集或非群集。您可以在外键上手动创建索引。
  • 我们可以在表中有多个外键。
  • 使用聚簇索引支持外键有一些实际的优点,但每个表只能获得一个。有什么好处?如果要选择父级加上所有子级记录,则希望子级记录彼此相邻。使用聚簇索引很容易实现。
  • 拥有空外键通常是个坏主意。在下面的示例中,[dbo]。[child]中的记录将被称为“孤儿记录”。在做这件事之前要长时间地思考。
另一答案

注意:我们使用约束来强制执行数据完整性

首要的关键 1)不能插入空值 2)一个表有一个主键

唯一键1)在时间插入一个空值2)一个表有多个唯一键3)你也可以作为候选键

外键1)维护两个表之间的关系也是多个注意:没有任何约束你可以在多个表中获取数据,但是你无法获得数据

另一答案

关于唯一键的说明

主键 - 外键关系中的父表通常称为主键表,但父表中的PK不是必需的。父表中的唯一键/约束就足够了。由于PK始终是唯一的,因此它通常在另一个表中用作外键。看到这个SO post

以上是关于3.啥是键、候选键、主键和外键?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 中的“键”是啥意思?主键和外键是啥?

SQL中啥叫主键,啥是外键,有啥关系

数据库中的键码,候选键码,主键码,公共键码,外键码有啥区别?求高人,谢谢了

数据库中 主键与外键的区别?

数据库中主键和外键是干嘛用的?

关于 主键和外键