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

标签 mysql indexing unique

我正在学习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/

相关文章:

php - Laravel 5.1 - mysql 按不同计数的最高值排序

sql - PostgreSQL 文本范围扫描

R:制作一个可用于 Shiny selectInput 的唯一值列表

mongodb - 处理mongodb唯一、稀疏、复合索引

mysql - 使用 JMeter 测试 Web 应用程序中的并发性和/或事务完整性

javascript - 运行 Node server.js 并重新播种数据库时,表被删除。 Sequelize

慢查询的MYSQL查询优化

java - 如何使用 apache lucene 索引优化搜索

MySQL - 唯一行,仅对应于 3 个表之一

mysql - 如何根据我选择的表创建一个 "default value column"的新表?