MySQL數據庫唯一性設置(unique index)


1,命令行操作

分為兩種。一種是在建表時就想好要加上唯一性,另一種是在后期才發現需要設置唯一性。
建表時:

CREATE TABLE `t_user` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(18) NOT NULL unique,
`password` varchar(18) NOT NULL,
PRIMARY KEY (`Id`)  www.2cto.com
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;


后期加上:

 ALTER TABLE ·t_user· ADD unique(`username`)


``

### 2,navicat方式

使用navicat操作mysql數據庫更加方便,推薦大家多多使用這種方式 
設計表時:如圖選擇索引,第一項‘名’,隨便自己起一個有意義的名字就行了。第二項是你要設置唯一性的字段,然后索引類型選擇unique。 



![](https://img2018.cnblogs.com/blog/1387696/201904/1387696-20190421104414664-283106172.png)


表已經建好的情況:選中表,右鍵-設計表-和上述一樣操作就行啦。


3,可能遇到的錯誤
如果唯一性是后期加的(設計完表之后,並且表里已經有了一些數據) 
可能存在表中部分數據不滿足唯一性的情況,例:想對字段sid設置唯一性,但目前表中有兩條數據sid都是472,這是設置唯一性就會出錯。 
如下圖所示(這種情況在命令行操作下也會出現,只不過是以文字的形式)


![](https://img2018.cnblogs.com/blog/1387696/201904/1387696-20190421104450394-994777365.png)

這時就應該刪除重復的數據后再設置唯一性。



4,進階操作——組合索引的唯一性
前面只講了給一個字段設置唯一性的方法,如果有兩個或多個字段的組合需要唯一呢? 
例子:有一個保存大四畢業生每周上傳的畢設報告的表。它有學生id:sid,周數:week,報告內容:content等字段。 
這里只允許每個學生每周上傳一份周報告,即sid和week的組合不能出現重復的情況,也就是說不能有兩條記錄他們的sid和week都相同。 
如何在mysql中進行設置呢,這里只給出navicat中的方法:如圖只需要選中兩個欄位就可以啦!



![](https://img2018.cnblogs.com/blog/1387696/201904/1387696-20190421104521546-653092612.png)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM