关于唯一索引的说法不正确

时间:2013-08-18 16:08:57

标签: mysql indexing unique

我正在学习MySQL。我遇到了一些多项选择题。 如果我怀疑答案是什么或者不相信它是正确的我开始搜索google,stackoverflow和mysql网站。 但是对于一些人,我仍然无法确认答案是正确的。

问题: 以下所有关于唯一索引的陈述都是正确的,除了哪一个? 答:对于表格的所有列,它必须是唯一的 B.不应为表格明确定义 C.必须仅为具有PRIMARY KEY或UNIQUE约束的列创建 D.它本身不能创造 E.无法确保索引中包含的所有值的组合是唯一的

建议答案:E。

我的想法:

一个。我真的不知道它们的意思。但在这个问题上,它应该是一个正确的陈述。有人能说清楚吗?
B.为表定义?表列上有唯一索引。默认情况下,非唯一值是可能的,因此应明确定义 C.看起来正确。主键也是唯一的,因此应该由MySQL构建索引(但不明确) D.哇?另一个对我没有任何意义的答案(我是愚蠢的吗?:S)
E.价值观的结合?否则不能确保列值的这些组合是唯一的。如果它是可能在主键中组合的不同列的组合:则可以确保不使用UNIQUE索引。

大多数情况下,如果有疑问,我可以得到一个首选答案,但是在这里我没有任何线索:s

这个让我疯狂:这只是语言障碍还是......

如果您对此问题/答案有任何评论或对我的任何评论有任何评论,我很高兴听到它!

1 个答案:

答案 0 :(得分:0)

这些答案没有意义:

  

一个。它必须对表的所有列都是唯一的

通常在表的列子集上定义唯一索引。如果以这种方式定义,则给定索引仅适用于所有列。因此,这是错误的。

  

B中。它不应该为表

明确定义

如果不应该使用构造,为什么会存在?唯一索引非常有用。有人可能会说它没有在“表格”中定义,而是在“表格中的列”中定义,但这对于这个问题来说似乎太微妙了。

  

℃。必须仅为具有PRIMARY KEY或UNIQUE约束的列创建它。

这接近成真。您可能会争辩说,创建唯一索引等同于创建唯一约束。但是,它们是用于执行相同操作的不同语法结构。此外, you 不会为具有唯一约束的列创建唯一索引,因为数据库会为您执行此操作。

  

d。它不能自己创建

我不知道这是什么意思。从某种意义上说,它不能“自己”创建,因为它需要一个表来定义。

  

电子。无法确保索引中包含的所有值的组合是唯一的

这是事实,因为允许重复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)对我的阅读来说似乎是错误的。

您可能希望在其他地方寻找此类问题。