mysql中唯一约束、key和索引的区别,unique key 就是唯一约束吗,新手麻烦指点,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中唯一约束、key和索引的区别,unique key 就是唯一约束吗,新手麻烦指点,谢谢相关的知识,希望对你有一定的参考价值。

书上说删除唯一约束的方法为ALTER TABLE tbl_name DROP INDEX/KEY index_name
为什么drop后面跟的是INDEX/KEY index_name索引名,
mysql删除唯一约束就是删除索引的意思吗?不然为什么drop后面会跟索引名呢

参考技术A 唯一约束是唯一,但可以为空;key唯一且不为空;合理的用索引是为了加快检索速度追问

mysql删除唯一约束就是删除索引吗

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

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的数据而无需回表

以上是关于mysql中唯一约束、key和索引的区别,unique key 就是唯一约束吗,新手麻烦指点,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

mysql约束与索引的区别

mysql中key和primary key的区别

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

SQLServer 唯一键约束和唯一索引有啥区别

mysql 主键索引和唯一索引的区别

唯一性约束和唯一性索引的区别