SQL - 唯一键,主键和外键

问题描述 投票:7回答:3

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

他们是如何彼此不同的?

sql foreign-keys primary-key rdbms unique-key
3个回答
23
投票

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

Primary Key

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

Unique Key

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

Foreign Key

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

1
投票

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

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

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

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


-1
投票

关于唯一键的说明

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

© www.soinside.com 2019 - 2024. All rights reserved.