官术网_书友最值得收藏!

4.6 唯一約束

唯一性約束(Unique Constraint)要求添加該約束的列字段的值唯一,允許為空,但只能出現(xiàn)一個空值。唯一約束可以確保一列或者幾列不出現(xiàn)重復(fù)值。本節(jié)介紹唯一約束的使用。

4.6.1 創(chuàng)建唯一約束

唯一約束要求字段中的數(shù)據(jù)不能有重復(fù)。由于同時存在兩個空值(NULL)也相當(dāng)于是重復(fù),因此唯一約束字段通常同時定義非空約束。

唯一約束沒有修改的操作,一個字段只能有著唯一或不唯一這兩種可能,因此對唯一性約束的操作,只有唯一約束的添加和刪除。

唯一約束與非空約束的操作步驟一樣,因此在MySQL Workbench工具下進行的唯一約束操作(創(chuàng)建、添加、刪除)可參考非空約束的操作步驟,這里不再詳細(xì)說明。

通過SQL語句創(chuàng)建表的時候可以直接創(chuàng)建唯一約束,有兩種方式:在字段的數(shù)據(jù)類型后面使用UNIQUE關(guān)鍵字;在所有字段定義之后,使用如下語句:

[CONSTRAINT <約束名>] UNIQUE(<字段名>)

【范例12】

創(chuàng)建fruitshop.student表,定義其name字段為唯一約束字段,代碼如下。

CREATE TABLE 'fruitshop'.'student' (
      'id' INT NOT NULL,
      'name' VARCHAR(45) NULL,
      'sex' VARCHAR(4) NULL,
      'age' INT NULL,
      PRIMARY KEY ('id'),
      UNIQUE INDEX 'name_UNIQUE' ('name' ASC));

上述代碼中,最后一行代碼創(chuàng)建了一個唯一約束的索引,名稱是name_UNIQUE。對于外鍵約束和唯一約束來說,創(chuàng)建約束的同時將默認(rèn)創(chuàng)建相關(guān)字段的索引,索引的相關(guān)知識將在第7章中介紹。

4.6.2 修改唯一約束

唯一約束的修改包括對沒有唯一約束的字段添加約束和取消字段的唯一約束。添加唯一約束需要為約束定義一個索引名稱,并在取消約束時根據(jù)該名稱刪除該索引。設(shè)置和取消唯一約束的語法如下。

設(shè)置唯一約束語法如下:

ADD UNIQUE INDEX 約束名(字段名 ASC)

取消唯一約束語法如下:

DROP INDEX 約束名

【范例13】

為fruitshop.student表的id字段添加唯一約束,名稱為id_UNIQUE,代碼如下。

ALTER TABLE 'fruitshop'.'student'
    ADD UNIQUE INDEX 'id_UNIQUE' ('id' ASC);

【范例14】

取消fruitshop.student表的name字段的唯一約束,由范例12可以看出該約束的名稱是name_UNIQUE,取消約束代碼如下。

ALTER TABLE 'fruitshop'.'student'
    DROP INDEX 'name_UNIQUE' ;
主站蜘蛛池模板: 巨野县| 柳林县| 偃师市| 舒兰市| 遂溪县| 丹阳市| 新平| 长子县| 随州市| 绥滨县| 西安市| 章丘市| 文成县| 龙泉市| 托克逊县| 顺昌县| 安乡县| 黄梅县| 琼结县| 宽甸| 双柏县| 黄山市| 龙井市| 高淳县| 平果县| 高雄县| 珲春市| 文昌市| 称多县| 南陵县| 南昌市| 和硕县| 永仁县| 玛沁县| 张家港市| 天长市| 隆德县| 丘北县| 准格尔旗| 新沂市| 巫溪县|