mysql可通過給行(字段)添加唯一性約束來設置行值唯一,語法格式“CREATE TABLE 表名 (字段名 數據類型 UNIQUE);”和“ALTER TABLE 表名 ADD CONSTRAINT 唯一約束名 UNIQUE(列名);”。
(推薦教程:mysql視頻教程)
MySQL數據庫唯一性設置unique index
在數據庫設計中設置主鍵的字段是不會重復的、唯一的,如果有其他字段也需要保持唯一性應該如何設置呢?比如一個保存用戶信息的表里要保證每條記錄的手機號都不同。這時候就需要對該字段設置唯一性。
設置唯一性后的字段,在數據庫層面保證了該字段不會出現相同的值。下面說一下唯一性的設置方法:
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);
使用Navicat工具添加索引
使用navicat操作mysql數據庫更加方便,推薦大家多多使用這種方式
設計表時:如圖選擇索引,第一項‘名’,隨便自己起一個有意義的名字就行了。第二項是你要設置唯一性的字段,然后索引類型選擇unique。
選中要修改的表名稱,右擊選中設計表
常遇到的問題
如果唯一性是后期加的(設計完表之后,并且表里已經有了一些數據)
可能存在表中部分數據不滿足唯一性的情況,例:想對字段phone設置唯一性,但目前表中有兩條數據phone都是同一個手機號,這是設置唯一性就會出錯。
如上圖所示(這種情況在命令行操作下也會出現,只不過是以文字的形式)
這時就應該刪除重復的數據后再設置唯一性。
兩個或多個字段的組合成唯一索引
例子:一個用戶,存了姓名和手機號,
這里只允許每個手機號只對應一個名稱,即name和phone的組合不能出現重復的情況,也就是說不能有兩條記錄他們的name和phone都相同。
如何在mysql中進行設置呢,這里只給出navicat中的方法:如圖只需要選中兩個欄位就可以啦!