0

我需要在脑海中清除以下内容。

当我创建一个没有主键或唯一约束的表时,我得到一个平面文件。
当我创建主键时,会创建一个主索引,并且正是这个索引维护了主键的唯一性,对吗?所以我不能添加重复的值。
因此,如果我在任何列上创建索引,这是否会强制该列具有唯一值?或者这取决于使用关键字UNIQUE创建索引?
最后,每次我声明一个具有UNIQUE约束的列时,这是否意味着创建了一个索引,因此这些操作是可以互换的?

4

2 回答 2

1

当我创建主键时,会创建一个主索引,并且正是这个索引维护了主键的唯一性,对吗?

是的,尽管主键索引与唯一索引并不完全相同(它比“常规”唯一索引具有某些优先级。

因此,如果我在任何列上创建索引,这是否会强制该列具有唯一值?或者这取决于使用关键字 UNIQUE 来创建索引?

除非您显式使用UNIQUE INDEX.

最后,每次我声明一个具有 UNIQUE 约束的列时,这是否意味着创建了一个索引,因此这些操作是可以互换的?

唯一约束是通过UNIQUE INDEX. 它们是一回事。

于 2013-03-12T18:39:59.600 回答
1
  1. 如果我们在任何列上创建索引,则不会强制该列具有唯一值。列中可以有重复的值,但这些值将被索引。
  2. 列中的唯一值将通过对列使用关键字 UNIQUE 来强制执行。
  3. UNIQUE 列和主键列之间的区别是 - UNIQUE 键列可以在一个且仅一个表行中保存 NULL 值。主键列将不包含空值。
  4. 创建 UNIQUE 列时,会隐式创建索引。但是,当在列上创建索引时,并不意味着该列的所有行值都是唯一的。所以它们是不可互换的。
于 2013-03-12T18:41:14.660 回答