MySQL數(shù)據(jù)庫唯一性設(shè)置(unique index)

我們知道在數(shù)據(jù)庫設(shè)計中設(shè)置成主鍵的字段是不會重復(fù)的、唯一的,但如果有其他字段也需要保持唯一性應(yīng)該如何設(shè)置呢?比如一個保存學(xué)生信息的表里要保證每條記錄的學(xué)號都不同。這時候就需要對該字段設(shè)置唯一性。
設(shè)置唯一性后的字段,在數(shù)據(jù)庫層面保證了該字段不會出現(xiàn)相同的值。下面說一下唯一性的設(shè)置方法:

1,命令行操作

分為兩種。一種是在建表時就想好要加上唯一性,另一種是在后期才發(fā)現(xiàn)需要設(shè)置唯一性。
建表時:

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`)

注意:t_user和username兩端的符號并不是引號,而是鍵盤上tab上方,數(shù)字鍵1旁邊的那個按鍵輸入的符號(不同鍵盤可能略有不同,一般都在左上角)

2,navicat方式

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

image.png

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

3,可能遇到的錯誤

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

image.png

這時就應(yīng)該刪除重復(fù)的數(shù)據(jù)后再設(shè)置唯一性。

4,進(jìn)階操作——組合索引的唯一性

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

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容