为什么需要主键?

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

我正在阅读有关主键的信息,并且在许多教程,技术博客等中,我发现主键可以为null的答案。我认为这是完全错误的,因为我能够在列中插入空值。我想只有在列被声明为非null的情况下,主键才能具有非null的值。但这又不是主键的功能。

[我的另一个问题是,为什么我们有主键的概念,因为我发现主键和唯一键之间只有一个区别,就是“主键只能在一个列上声明,而唯一键可以在多列上声明” 。所以我的理解是,如果我们没有其他区别,为什么我们也不能将主键声明为唯一键。

sql sql-server primary-key
3个回答
5
投票

我想主键只有在列中可以具有不为null的值声明为非null。但这又不是primary的功能键。

主键不能为空值。根据主键的定义,它是UNIQUENOT NULL

我的另一个问题是,为什么我们要有主键的概念因为我发现主键和唯一键之间只有一个区别就是“主键只能在一列上声明,而唯一键可以在多列上声明“”>

这是完全错误的。您也可以在多列上创建主键,主键和唯一键之间的区别是主键不为空,唯一键可以具有空值。

主键的主要目的是标识行的唯一性,其中唯一键是为了防止重复,以下是主键和唯一键之间的主要区别。

主键:

  1. 一个表只能有一个主键。
  2. 主键由一个或多个列组成。
  3. 主键强制执行表的实体完整性。
  4. 定义的所有列必须定义为NOT NULL
  5. 主键唯一地标识一行。
  6. 默认情况下,主键会导致CLUSTERED唯一索引。
  7. 唯一键:

  1. 表上可以定义多个唯一键。

  2. 唯一键默认情况下会导致NONCLUSTERED唯一索引。

  3. 一个或多个列组成一个唯一键。

  4. 列可能是NULL,但每列允许一个NULL

  5. Foreign Key Constraint可以引用唯一约束。

  6. 我建议您阅读此primary key and unique key


0
投票

您忘记了索引编制。当涉及到大数据以查找特定的原始数据时,需要逐条记录地遍历内存。为了克服这一点,存在索引的概念。主键对此有所帮助。因此,这将有助于您更快地访问数据。此后,有了二进制搜索的概念,它将进一步帮助完成该任务。


0
投票

主键是特殊的关系数据库表列(或列的组合),指定用于唯一地标识所有表记录。

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