在數據庫設計中設置主鍵的字段是不會重復的、唯一的,如果有其他字段也需要保持唯一性應該如何設置呢?比如一個保存用戶信息的表里要保證每條記錄的手機號都不同。這時候就需要對該字段設置唯一性。
設置唯一性后的字段,在數據庫層面保證了該字段不會出現相同的值。下面說一下唯一性的設置方法:
mysql命令行操作索引
1、建表時加
CREATE TABLE `member` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(18) NOT NULL ,
`phone` varchar(18) NOT NULL unique,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2、建表后改
alter table member add unique(phone);
1
使用Navicat工具添加索引
使用navicat操作mysql數據庫更加方便,推薦大家多多使用這種方式
設計表時:如圖選擇索引,第一項‘名’,隨便自己起一個有意義的名字就行了。第二項是你要設置唯一性的字段,然后索引類型選擇unique。
選中要修改的表名稱,右擊選中設計表
常遇到的問題
如果唯一性是后期加的(設計完表之后,並且表里已經有了一些數據)
可能存在表中部分數據不滿足唯一性的情況,例:想對字段phone設置唯一性,但目前表中有兩條數據phone都是同一個手機號,這是設置唯一性就會出錯。
如上圖所示(這種情況在命令行操作下也會出現,只不過是以文字的形式)
這時就應該刪除重復的數據后再設置唯一性。
兩個或多個字段的組合成唯一索引
例子:一個用戶,存了姓名和手機號,
這里只允許每個手機號只對應一個名稱,即name和phone的組合不能出現重復的情況,也就是說不能有兩條記錄他們的name和phone都相同。
如何在mysql中進行設置呢,這里只給出navicat中的方法:如圖只需要選中兩個欄位就可以啦!