mysql alter 唯一键_MySQL列属性 之 唯一键
MySQL列屬性 之 唯一鍵
唯一鍵
唯一鍵:每張表往往有多個字段需要具有唯一性,數(shù)據(jù)不能重復(fù),但是在每張表中,只能有一個主鍵,因此 唯一鍵就是用來解決表中多個字段需要具有唯一性的問題。
例如身份證號碼應(yīng)該每一行的記錄不一樣,需要具有唯一性。
唯一鍵的本質(zhì)與主鍵差不多,唯一鍵允許字段為空,而且可以多個字段為空,因此空字段不參與唯一性的比較。也就是說可以插入多個空字段。
增加唯一鍵
增加唯一鍵的方法和主鍵類似,有 3 種方法,分別為:
第一種:在創(chuàng)建表的時候,字段后面直接添加unique或者unique key關(guān)鍵字
-- 增加唯一鍵
create table my_unique(
number char(10) unique comment '學(xué)號',
name varchar(20) not null
)charset utf8;
第 2 種:在所有字段之后,增加unique key(字段列表),可以設(shè)置復(fù)合唯一鍵
-- 測試唯一鍵
create table my_unique2(
number char(10) not null,
name varchar(20) not null,
unique key(number)
)charset utf8;
觀察上圖,咱們可能會發(fā)現(xiàn)一個問題,那就是: 咱們設(shè)置的唯一鍵UNI,怎么變成了主鍵PRI啊?這是由于當唯一鍵滿足非空條件的時候,其性質(zhì)就和主鍵一樣啦,因此在表中顯示為PRI. 當然,在咱們執(zhí)行如下 SQL 語句的時候,其就會表現(xiàn)出真正的性質(zhì):
-- 查看表創(chuàng)建語句
show create table my_unique2;
第 3 種:在創(chuàng)建表之后,增加唯一鍵
-- 創(chuàng)建未設(shè)置唯一鍵的表
create table my_unique3(
id int primary key auto_increment,
number char(10) not null,
name varchar(20) not null
)charset utf8;
如上圖所示,表my_unique3未設(shè)置唯一鍵。接下來,執(zhí)行如下 SQL 語句,進行測試:
-- 增加唯一鍵
alter table my_unique3 add unique key(number);
如上圖所示,咱們已經(jīng)成功向表中增加唯一鍵啦!
唯一鍵約束:允許多個值為空
唯一鍵與主鍵本質(zhì)相同,區(qū)別在于: 唯一鍵允許字段值為空,并且允許多個空值存在。
-- 測試唯一鍵約束
insert into my_unique values(null,'Charies');
insert into my_unique values(null,'Guo');
更新唯一鍵 & 刪除唯一鍵
在表中,更新唯一鍵的時候,可以不用先刪除唯一鍵,因為表的唯一鍵允許有多個。
刪除唯一鍵的語法為:
基本語法:alter table + 表名 + drop index + 索引名字;
在這里,唯一鍵默認使用字段名作為索引名。
-- 刪除唯一鍵
alter table my_unique3 drop index number;
如上圖所示,顯然咱們已經(jīng)成功刪除表中的唯一鍵啦!
溫馨提示:符號+表示連接的意思。
總結(jié)
以上是生活随笔為你收集整理的mysql alter 唯一键_MySQL列属性 之 唯一键的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java快速提升_java快速复习 一
- 下一篇: 云服务器怎么执行sql文件在哪里,总结帝