一道数据库原理的题

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:41:19
限制输入到列的值的范围,应使用( )约束。
(A) CHECK (B) PRIMARY KEY
(C) FOREIGN KEY (D) UNIQUE

我个人觉得答案应该是(A)CHECK。
但为什么网上的答案都是(D) UNIQUE 啊?

应该是A.
就对列的取值约束来说,Unique和Primary Key都限制了唯一性,如果是单选考试题,这两个答案首先应当排除。
其实,如果较真的话,
Unique和Primary Key限制列的取值范围是非已存在的值。
Foreigh Key 限制列的取值范围是引用表中已存在的值。
也就是说,这几个约束都是限制了一个列的取值范围。但我觉得出题者本意是A。
网上的答案不一定都对的。
我说的也仅供参考。

UNIQUE约束和主键的比较

可以使用 UNIQUE 约束确保在非主键列中不输入重复的值。尽管 UNIQUE 约束和 PRIMARY KEY 约束都强制唯一性,但想要强制一列或多列组合(不是主键)的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束。

可以对一个表定义多个 UNIQUE 约束,但只能定义一个 PRIMARY KEY 约束。

而且,UNIQUE 约束允许 NULL 值,这一点与 PRIMARY KEY 约束不同。不过,当与参与 UNIQUE 约束的任何值一起使用时,每列只允许一个空值。

FOREIGN KEY 约束可以引用 UNIQUE 约束

什么时候用UNIQUE约束,而不是主键

创建唯一约束可确保在未参与主键的特定列中不输入重复值。尽管唯一约束和主键都强制唯一性,但如果情况如下,则应向表附加唯一约束而不是主键约束:

希望在某一列或某一组列中强制唯一性。您可以向表附加多个唯一约束,但只能向表附加一个主键约束。
希望在允许空值的列中强制唯一性。您可以向允许空值的列附加唯一约束,但只能向不允许空值的列附加主键约束。当向允许空值的列附加唯一约束时,请确保在所约束的列中最多只有一行包含空值。