MYSQL中唯一约束和唯一索引的区别 您所在的位置:网站首页 mysql删除唯一键约束 MYSQL中唯一约束和唯一索引的区别

MYSQL中唯一约束和唯一索引的区别

2024-03-22 13:42| 来源: 网络整理| 查看: 265

1、唯一约束和唯一索引,都可以实现列数据的唯一,列值可以有null。2、创建唯一约束,会自动创建一个同名的唯一索引,该索引不能单独删除,删除约束会自动删除索引。唯一约束是通过唯一索引来实现数据的唯一。3、创建一个唯一索引,这个索引就是独立,可以单独删除。4、如果一个列上想有约束和索引,且两者可以单独的删除。可以先建唯一索引,再建同名的唯一约束。5、如果表的一个字段,要作为另外一个表的外键,这个字段必须有唯一约束(或是主键),如果只是有唯一索引,就会报错。

  约束是业务检查,比方说非空约束,check约束,那是检查字段非空,是否符合check。而索引是一种数据结构, rowid与字段值的键值对.  两个东西的效果是一样。但:在建立唯一约束时,会自动创建一个唯一索引.并且,失效该约束时,索引自动删除.而创建唯一索引则不会自动创建唯一约束.因此在建表时,如果要创建唯一索引,最好先建唯一索引再创建唯一约束.这样的话,在进行大批量数据插入时,可以先失效约束,插入完成后再进行索引重建.  除了引文中提到的,要被外键引用必须有唯一约束,还有这个区别:索引的键不一定要和唯一约束完全匹配,唯一约束可以只用索引的前导列。

例子:create table t (n1 number,n2 number);create index t_idx on t(n1,n2);上面只是创建了两个列的复合索引,并不要求是唯一索引。alter table t add constraint t_uk unique (n1) using index t_idx;可以使用这个索引来创建唯一约束, 而且它只在第一个列上唯一,也就是说唯一约束比索引更加严格。那么这个索引的第二个列有什么意义?有些时候,带一些冗余列可以使得你直接从索引中取到所有SELECT的数据而无需回表



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有