資料庫中的限制,顧名思義即是對插入資料庫中的資料進行限定,這麼做的目的是為了保證資料的有效性和完整性。這樣就大幅提高了資料庫中資料的質量,節省了資料庫的空間和呼叫資料的時間。
非空約束(NOT NULL)是一種列級約束,用來指定某列不允許為空。它只能使用列級約束語法定義。
SQL中的null值,null不區分大小寫,具有以下特徵:所有資料型別的值都可以是null,包括int、float、boolean等。空字串不等於null,0也不等於null。如果要為指定列設定非空約束,則只需在列定義後新增 "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;#取消非空约束,并指定默认值alter table t_test modify name varchar(255) default 'abc' null;
2.UNIQUE: 唯一約束,指定某列或幾列組合不能重複。
在資料庫中,雖然唯一約束的欄位不允許出現重複值,但可以出現多個null值,因為null不等於null。同一個表內可建立多個唯一約束,唯一約束也可有多列組合而成。當為某列建立唯一約束時,MySQL會為該列建立唯一索引, 如果不為唯一約束命名,則該唯一約束預設與列名相同。唯一約束可以使用列級語法建立,也可以使用表格級語法建立。只有透過表格級語法,才能為多列設定組合約束或指定約束名稱。
使用列級語法建立唯一約束,只需要在列定義後增加unique關鍵字即可:
#创建表时建立唯一约束,使用列级语法建立create table unique_test ( #建立非空约束,意味着id不能为null id int not null, #建立唯一约束,意味着多行数据的该列值不能相等 name varchar(255) unique );
表級語法建立唯一約束的格式:[constraint 約束名稱] unique (列名[,列名,…]),上面的表級約束語法格式既可以放在create table語句中與列定義並列,也可以放在alter table語句中使用add關鍵字添加:
#创建表时,使用表级语法创建唯一约束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) );#创建表时,使用表级语法建立组合列的唯一约束create table unique_test3 ( id int not null, name varchar(255), pass varchar(255), #指定name和pass两列组合不能重复 constraint test3_uk unique (name, pass) );#在修改表时,使用add关键字来增加唯一约束alter table unique_test3 add unique (id, name);#在修改表时,使用modify关键字,来为单列设置唯一约束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: 主鍵約束,指定該列的值可以唯一地識別該筆記錄。
"外鍵"是一種約束,它指定該行記錄與主表中的一筆記錄相關聯,主要的目的是確保參考完整性。
5.CHECK(MySQL不支援): 檢查約束,指定一個布林表達式,用來指定對應列的值必須滿足該表達式。
#以上是MySQL資料庫約束類型有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!