主键和唯一索引的区别
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键索引: 数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。 在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。 该索引要求主键中的每个值都唯一, 字段里面的值不能为空 。当在查询中使用主键索引时,它还允许对数据的快速访问。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认为空值 + 唯一索引了。 主键可以被其他表引用为外键,而唯一索引不能。 一个表最多只能创建一个主键,但可以创建多个唯一索引。 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。 在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。 -- 创建一张仅包含主键和唯一索引的表 CREATE TABLE test (PrimaryKey VARCHAR2(20), UniqueKey VARCHAR2(20) ); -- 分别创建主键和唯一索引,语法不同 ALTER TABLE test ADD CONSTRAINT test_PrimaryKey PRIMARY KEY (PrimaryKey); CREATE