您好,登錄后才能下訂單哦!
這篇文章主要介紹了MySQL數(shù)據(jù)庫約束類型有哪些的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇MySQL數(shù)據(jù)庫約束類型有哪些文章都會有所收獲,下面我們一起來看看吧。
數(shù)據(jù)庫中的約束,顧名思義即是對插入數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行限定,這么做的目的是為了保證數(shù)據(jù)的有效性和完整性。這樣就大幅度地提高了數(shù)據(jù)庫中數(shù)據(jù)的質(zhì)量,節(jié)省了數(shù)據(jù)庫的空間和調(diào)用數(shù)據(jù)的時間。
1.NOT NULL: 非空約束,指定某列不能為空,只能作為列級約束使用,只能使用列級約束語法定義。
SQL中的null值,null不區(qū)分大小寫,具有如下特征:所有數(shù)據(jù)類型的值都可以是null,包括int、float、boolean等??兆址坏扔趎ull,0也不等于null。建表時為指定列設(shè)置非空約束,只需在列定義后增加not null即可,例如:
create table t_test ( id int not null, name varchar(255) default 'xyz' not null, gender varchar(2) null );
使用alter table修改表時增加或刪除非空約束,例如:
#增加非空約束alter table t_test modify gender varchar(2) not null;#取消非空約束alter table t_test modify gender varchar(2) null;#取消非空約束,并指定默認(rèn)值alter table t_test modify name varchar(255) default 'abc' null;
2.UNIQUE: 唯一約束,指定某列或者幾列組合不能重復(fù)。
雖然唯一約束的列不可以出現(xiàn)重復(fù)值,但可以出現(xiàn)多個null值,因為在數(shù)據(jù)庫中null不等于null。同一個表內(nèi)可創(chuàng)建多個唯一約束,唯一約束也可有多列組合而成。 當(dāng)為某列創(chuàng)建唯一約束時,MySQL會為該列創(chuàng)建唯一索引, 如果不給唯一約束起名,該唯一約束默認(rèn)與列名相同。唯一約束可以使用列級語法建立,也可以使用表級語法建立。 如果是為多列建立組合約束,或者需要為約束指定約束名,則只能使用表級語法。
使用列級語法建立唯一約束,只需要在列定義后增加unique關(guān)鍵字即可:
#創(chuàng)建表時建立唯一約束,使用列級語法建立create table unique_test ( #建立非空約束,意味著id不能為null id int not null, #建立唯一約束,意味著多行數(shù)據(jù)的該列值不能相等 name varchar(255) unique );
表級語法創(chuàng)建唯一約束的格式:[constraint 約束名] unique (列名[,列名,…]),上面的表級約束語法格式既可以放在create table語句中與列定義并列,也可以放在alter table語句中使用add關(guān)鍵字添加:
#創(chuàng)建表時,使用表級語法創(chuàng)建唯一約束create table uniques_test2 ( #為id建立非空約束,意味著id不能為null id int not null, name varchar(255), pass varchar(255), #使用表級語法為name建立唯一約束 unique (name), #使用表級語法為pass建立唯一約束,并指定約束名為test2_uk constraint test2_uk unique (pass) );#創(chuàng)建表時,使用表級語法建立組合列的唯一約束create table unique_test3 ( id int not null, name varchar(255), pass varchar(255), #指定name和pass兩列組合不能重復(fù) constraint test3_uk unique (name, pass) );#在修改表時,使用add關(guān)鍵字來增加唯一約束alter table unique_test3 add unique (id, name);#在修改表時,使用modify關(guān)鍵字,來為單列設(shè)置唯一約束alter table unique_test3 modify name varchar(100) unique;
MySQL中刪除唯一約束:
alter table tableName drop index 約束名; 例句:#刪除unique_test3表中的test3_uk唯一約束alter table unique_test3 drop index test3_uk;
3.PRIMARY KEY: 主鍵約束,指定該列的值可以唯一地標(biāo)識該條記錄。
4.FOREIGN KEY: 外鍵約束,指定該行記錄從屬于主表中的一條記錄,主要用于保證參照完整性。
5.CHECK(MySQL不支持): 檢查約束,指定一個布爾表達(dá)式,用于指定對應(yīng)列的值必須滿足該表達(dá)式。
關(guān)于“MySQL數(shù)據(jù)庫約束類型有哪些”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“MySQL數(shù)據(jù)庫約束類型有哪些”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。