- MySQL數(shù)據(jù)庫管理與開發(fā)實踐教程 (清華電腦學(xué)堂)
- 程朝斌
- 688字
- 2021-03-19 18:16:54
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' ;
- Learning Single:page Web Application Development
- 嵌入式軟件系統(tǒng)測試:基于形式化方法的自動化測試解決方案
- Ceph Cookbook
- Visual Basic程序開發(fā)(學(xué)習(xí)筆記)
- Android Application Development Cookbook(Second Edition)
- Java技術(shù)手冊(原書第7版)
- 數(shù)據(jù)結(jié)構(gòu)(Python語言描述)(第2版)
- Learn Swift by Building Applications
- Java Web開發(fā)技術(shù)教程
- SQL Server 2016數(shù)據(jù)庫應(yīng)用與開發(fā)習(xí)題解答與上機指導(dǎo)
- C語言程序設(shè)計上機指導(dǎo)與習(xí)題解答(第2版)
- HoloLens與混合現(xiàn)實開發(fā)
- SQL Server 2008中文版項目教程(第3版)
- Python大規(guī)模機器學(xué)習(xí)
- ROS機器人編程實戰(zhàn)