很多人问我,唯一键中一个空值的优势是什么?
我仍然无法找到该问题的答案
答案 0 :(得分:0)
unique
约束意味着不允许重复的值。因此,拥有一个null
值没有错。
仅供参考,在SQL Server 2008及更高版本之后,您可以在具有多个UNIQUE
值的列上创建NULL
索引。这是使用Filtered Index完成的。
我只是想检查一下@MartinSmith所说的NULL = NULL
是不正确的,并且该标准未在SQL Server中应用。因此,经过快速研究后,我发现以下解释证明了他的观点:
唯一键约束并不意味着NOT NULL约束 实践。因为NULL不是实际值(它代表缺乏 一个值的值,当比较两行时,两行在a中都是NULL 列,列值不被视为相等。因此,在 命令唯一键唯一标识表中的每一行,NULL 不得使用值。根据{{3}}和关系 模型理论,一个唯一的键(唯一约束)应该接受NULL 几行/元组 - 但并非所有RDBMS都实现此功能 正确。
答案 1 :(得分:0)
虽然这个问题征求了推测,但是从实现者的角度来看,有一个NULL
值是有意义的事实:在SQL Server用来实现索引的磁盘上的B树结构中, NULL
值与任何其他值一样。只要SQL Server的设计人员不决定为NULL
值创建特殊情况,这就是您默认 的行为。
能够索引NULL
值是有意义的,并且是一个有用的功能。反直觉地可以使用索引来NULL
:WHERE IndexCol IS NULL
。