转载

[mysql基础文档]-16-Unique约束

Unique约束能够防止数据表中指定的列中出现两个完全相同的值。

文章目录

  • [1].如何在建表时添加Unique约束
  • [2].如何给已存在的列添加Unique约束
  • [3].如何创建命名Unique约束
  • [4].如何删除Unique约束

[1].如何在建表时添加Unique约束

● 在创建数据表时,有三种不同的方法可以添加unique约束:

//方法一:同not null约束一样,直接写在数据类型后面,此时id列数据具有唯一性 mysql> create table t22(id int unique); //另两种方法,效果相同,写在所有列创建语句的最后,用逗号单独隔开,constraint在普通unique约束声明语法中,可以省略(后面介绍的命名unique约束中,必须要写constraint) mysql> create table t22(id int,constraint unique(id)); mysql> create table t22(id int,unique(id));  //key下面UNI就是unique属性列 mysql> desc t22; +-------+---------+------+-----+---------+-------+ | Field | Type    | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id    | int(11) | YES  | UNI | NULL    |       | +-------+---------+------+-----+---------+-------+  //unique约束特性,插入相同值会报错 mysql> insert into t22 values(1); mysql> insert into t22 values(1); ERROR 1062 (23000): Duplicate entry '1' for key 'id' mysql> insert into t22 values(2);  mysql> select * from t22; +------+ | id   | +------+ |    1 | |    2 | +------+

● Unique约束不仅限于一列,可以给多列创建联合unique约束,只有当联合的列数据都相同时,才抛出错误:

//在末尾括号中用逗号隔开每一个联合unique约束成员 mysql> create table t23(id int,uid int,unique(id,uid));  mysql> desc t23; +-------+---------+------+-----+---------+-------+ | Field | Type    | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id    | int(11) | YES  | MUL | NULL    |       | | uid   | int(11) | YES  |     | NULL    |       | +-------+---------+------+-----+---------+-------+  //只有一列数据相同时,数据正常写入 mysql> insert into t23 values(1,1); mysql> insert into t23 values(1,2);  //当unique联合约束里面的所有成员数据与已经存在的数据相同时,才抛出错误 mysql> insert into t23 values(1,1); ERROR 1062 (23000): Duplicate entry '1-1' for key 'id'

[2].如何给已存在的列添加Unique约束

● 如果建表时没有给某列添加unique约束,后期因为需求需要添加,有四种添加unique约束的方法:

//创建表t24,仅一列整型,无约束属性 create table t24(id int);  //同not null约束,使用change参数改变列属性(重命名,添加属性都可以通过change) mysql> alter table t24 change id id int unique;  //下面三种方法效果同上,在MySQL中都能给id列添加unique属性 mysql> alter table t24 modify id int unique; mysql> alter table t24 add unique(id); mysql> alter table t24 add constraint unique(id);

[3].如何创建命名Unique约束

命名Unique约束并不能改变其功能,可以通过命名,添加注释,解释这一列其数据是什么,为什么要添加Unique约束,为日后的维护做铺垫,下面是命名Unique约束创建,追加,删除实例:

//建表时创建命名Unique约束只能将语句放在所有列声明的结尾,CustomName是自定义名称 mysql> create table t24(id int,constraint CustomName unique(id));  //如果建表时id列没有约束属性,可以用下面的方法给id列添加一个命名Unique约束 mysql> alter table t24 add constraint CustomName unique(id);  //MySQL中删除命名Unique约束的方法如下 mysql> alter table t24 drop index CustomName;  //其他类型数据库删除命名约束的方法如下,两者参数有细微差别 mysql> alter table t24 drop constraint CustomName;

[4].如何删除Unique约束

//MySQL中使用drop index删除unique约束 mysql> alter table t23 drop index id;  //在非MySQL中,使用drop constraint来删除unique约束 db001> alter table t23 drop constraint id;

P.s:前面介绍的Not Null约束是不允许列有Null值,但允许重复值;本文中介绍的Unique约束是不允许列中出现重复值,但允许有NULL值;由此推得,前面介绍的主键,就是Not Null约束与Unique约束的交集,即列数据不允许有重复值也不允许有NULL值,其实,主键也叫Primary Key约束。

[**] 注:如文中未特别声明转载请注明出自:QingSword.COM

正文到此结束
Loading...