在Mysql數(shù)據(jù)庫(kù)中,我們經(jīng)常會(huì)創(chuàng)建一些帶有中文字段的表,但是在實(shí)際使用過(guò)程中,很可能會(huì)出現(xiàn)相同的中文字段。這時(shí)候,我們就需要使用唯一約束來(lái)保證中文字段的唯一性。
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上面的代碼中,我們創(chuàng)建了一個(gè)名為test的表,其中包含了一個(gè)id和一個(gè)name字段。通過(guò)在name字段上加上了UNIQUE KEY約束,我們就可以保證name字段的唯一性了。
需要注意的是,如果我們?cè)趧?chuàng)建表的時(shí)候沒(méi)有指定字符集,那么默認(rèn)使用的是數(shù)據(jù)庫(kù)的字符集。如果數(shù)據(jù)庫(kù)字符集為latin1,那么在進(jìn)行中文比對(duì)時(shí)會(huì)出現(xiàn)亂碼問(wèn)題。因此,我們需要在創(chuàng)建表的時(shí)候指定字符集為utf8。
ALTER TABLE `test` ADD UNIQUE KEY `name_UNIQUE` (`name`) USING BTREE;
如果我們?cè)趧?chuàng)建表的時(shí)候沒(méi)有加上UNIQUE KEY約束,那么也可以在表創(chuàng)建完成后通過(guò)ALTER TABLE命令添加唯一約束。
總之,無(wú)論是在創(chuàng)建表的時(shí)候還是之后添加唯一約束,我們都需要保證中文字段的唯一性,以免出現(xiàn)數(shù)據(jù)重復(fù)的情況。