我正在学习MySQL。我遇到了一些选择题。 如果我怀疑答案是什么或者不相信它是正确的,我就开始搜索 google、stackoverflow 和 mysql 网站。 然而,对于某些人来说,我仍然无法确认正确答案是什么。
问题:
以下关于唯一索引的所有陈述都正确,除了哪一个?
A. 对于表的所有列来说它必须是唯一的
B. 不应该为表显式定义
C. 只能为具有 PRIMARY KEY 或 UNIQUE 约束的列创建它。
D. 不能自行创建
E. 无法保证索引包含的所有值的组合是唯一的
建议答案:E。
我的想法:
A.我真的不知道他们的意思是什么。但在这个问题上,这应该是一个正确的说法。有人能说清楚吗?
B. 为表定义?唯一索引位于表列上。默认情况下,非唯一值是可能的,因此应该显式定义
C. 看起来正确。主键也是唯一的,因此MySQL应该建立索引(但不是明确的)
D.吴?另一个对我来说没有任何意义的答案(我是愚蠢的吗?:S)
E. 值(value)观的组合?不,那么不能确保列值的这些组合是唯一的。如果它是可能组合在主键中的不同列的组合:那么可以确保它,否则没有唯一索引的用途。
大多数情况下,当有疑问时我能够得到首选答案,但是在这里我没有任何线索:s
这真的让我抓狂:这只是语言障碍还是......
如果您对此问题/答案或我的任何言论有任何意见,我很高兴听到!
最佳答案
这些答案没有意义:
A. it must be unique for all columns of a table
唯一索引通常是在表的列子集上定义的。给定的索引仅适用于以这种方式定义的所有列。因此,这是错误的。
B. it should not be explicitly defined for tables
如果不应该使用该构造,为什么还要存在?唯一索引非常有用。有人可能会说它不是在“表”上定义的,而是在“表中的列”上定义的,但这对于这个问题来说似乎太微妙了。
C. It must be created only for columns having PRIMARY KEY or UNIQUE constraints.
这几乎是事实。您可能会认为创建唯一索引相当于创建唯一约束。然而,它们是做同样事情的不同语法结构。此外,您不会为具有唯一约束的列创建唯一索引,因为数据库会为您完成此操作。
D. It cannot be created by itself
我不知道这是什么意思。从某种意义上说,它不能“自行”创建,因为它需要定义一个表。
E. It cannot be ensured that the combination of all values contained in the index are unique
这是真的,因为 NULL 值允许重复:
A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. For all engines, a UNIQUE index permits multiple NULL values for columns that can contain NULL.][1]
我读到只有 (e) 是明确正确的。选项 (c) 和 (d) 很接近,具体取决于解释。根据我的阅读,选项 (a) 和 (b) 似乎是错误的。
您可能想在其他地方寻找此类问题。
关于mysql - 关于唯一索引的说法不正确的是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18301085/