更新时间:2022-02-20 19:27:09
让我给你解释一下主键和唯一索引的区别。相信朋友们也应该非常关注这个话题。现在让我告诉你主键和唯一索引的区别。边肖还收集了关于主键和唯一索引之间差异的相关信息。我希望你看到后会喜欢。
区别:1。主键是约束,唯一索引是索引。2.创建主键后,它必须包含唯一的索引,该索引不一定是主键。3.唯一索引列允许Null值,但主键列不允许。4.主键可以作为外键被其他表引用,但唯一索引不能。
本教程运行环境:windows7系统,mysql8版本,Dell G3电脑。
主键索引和唯一索引之间的差异
主键是约束,唯一索引是索引,两者有本质区别。
创建主键后,它必须包含唯一的索引,该索引不一定是主键。
唯一索引列允许Null值,但主键列不允许。
创建主键时,默认情况下,它已经是一个具有空值的唯一索引。
主键可以作为外键被其他表引用,但唯一索引不能。
一个表最多只能创建一个主键,但可以创建多个唯一索引。
主键更适合不易更改的唯一标识符,如自动增量列、ID号等。
在RBO模式下,主键的执行计划优先级高于唯一索引。两者都可以提高查询速度。
示例:
-创建只包含主键和唯一索引的表。
创建表测试
(PrimaryKey VARCHAR2(20)、
UniqueKey VARCHAR2(20)
);-使用不同的语法分别创建主键和唯一索引。
ALTER TABLE test ADD CONSTRAINT test _ PRIMARY KEY主键(PRIMARY KEY);在test (UniqueKey)上创建唯一索引test _ UniqueKey-您可以在USER_INDEXES中看到两个索引名称。
SELECT表名,表类型,索引名,索引类型,唯一性
来自用户索引
其中TABLE _ NAME=' TEST
-您可以在USER_IND_COLUMNS中看到两个索引字段名称。
SELECT表名,索引名,列名,列位置
从用户_索引_列
其中TABLE _ NAME=" TEST
-在USER_CONSTRAINTS中只能看到主键约束名。
SELECT表名,约束名,约束类型
来自用户约束
其中TABLE _ NAME=" TEST
-在USER _ CONS _列中只能看到主键约束字段名。
SELECT表名,约束条件名,列名,位置
从用户_ CONS _列
其中约束名称在(选择约束名称
来自用户约束
其中TABLE _ NAME=" TEST ');
-向唯一索引添加非空约束。
ALTER TABLE test MODIFY UniqueKey不为NULL-在USER_CONSTRAINTS中只能看到主键约束名和非空约束名。
SELECT表名,约束名,约束类型
来自用户约束
其中TABLE _ NAME=" TEST '
-在USER _ CONS _列中只能看到主键约束字段名和非空约束字段名。
SELECT表名,约束条件名,列名,位置
从用户_ CONS _列
其中约束名称在(选择约束名称
来自用户约束
其中TABLE _ NAME=" TEST ')
关于编程的更多信息,请访问:编程教学!以上是主键和唯一索引有什么区别的细节。请多关注php中文网站的其他相关文章!
来源:php中文网站