操作表約束
完整性是指數據的准確性和一致性,而完整性檢查就是指檢查數據的准確性和一致性。mysql數據庫管理系統提供了一直機制來檢查數據庫中的數據是否滿足規定的條件。以保證數據庫中數據的准確性和一致性,這種機制就是約束。
mysql所支持的完整性約束
NOT NULL(NK)
DEFAULT
UNIQUE KEY(UK)約束字段的值是唯一的
PRIMATYKEY(PK)
AUTO_INCREMENT
FOREIGN KEY(FK)
不支持check約束,即可以使用check約束,但是沒有效果約束:
單列約束
多列約束
1、NOT NULL (NK)
在創建表的時候,指定屬性為not null即可
例:create table t_name( column type not null ) create table t_notnull{ id int not null, name varchar(20) } insert into t_notnull(name) values("dsagdfs");
會發現對應的id被置為0
alter table t_notnull modify id int;
insert into t_notnull(name) values("fdgdf");
發現對應的id為null
2、DEFAULT
創建表時指定create table t_name( column type default )
例:
create table t_default( id int not null, name varchar(20) default 'test' ) insert into t_default(id) values(1); insert into t_dedault(name) values('name');
3、AUTO_INCREMENT
create table t_name( column type auto_increment ) create table t_auto( id int primay key auto_increment, name varchar(20) default 'test' )
注意:使用的時候該列要指定為primary key,該列是數值列
4、UNIQUE UK
create table t_name( column type unique ) create table t_name( column type constraint uk_column unique(column) )
constraint:約束
在為約束設置標示符時,推崇使用“約束縮寫_字段名”的格式create table t_unique( id int primary key, name varchar(20) unique )
注意:1、auto_increment顯然也能實現unique的功能,但是沒有unique靈活,unique的列不必是主鍵列,也不一定是數字列,
2、varchar必須指定字節數,否則會失敗
5、primary key
單字段主鍵 create table t_name( column type primary key ) create table t_name( column type contraint pk_column primary key(column) ) 多字段主鍵 create table t_name( column1 type , column2 type ... contraint pk_column1_column2 primarykey(column1,column2) )
6、foreign key
前五個約束都是都是單表,而外鍵約束牽涉到了多個表。
設置外鍵約束的兩個表之間會有父子關系,即子表中某個字段的取值范圍由父表所決定。
在具體設置FK約束時,設置FK約束的字段必須依賴於數據庫中的已經存在的父表的主鍵,同時外鍵可以為null
create tablet_name(
column1 type,
column2 type,
constraint fk_column1 foreign key(column1) references tablename (columname)
)
column1:外鍵,columnname:父表中設置主鍵約束的字段