數據庫約束數據庫
1.基礎限制ide
① 單一表內字節量總和不能超過65535,null 佔用一個字節空間函數
② varchar存儲255 之內字節佔用一個字節表示長度,255以上本身則佔用兩個字節表示長度spa
③ 例如int(10)這裏10指的是10字節寬度並不是數字10,且 utf8下 一字符=3字節,gbk下一字符=2字節 ,具體以下blog
數字類型索引
2.主鍵rem
主鍵關鍵字primary key ,規則 惟一,非空,索引憑據字符串
建立方式,例如:it
create table tb1(id int primary key not null auto_increment)engin=innodb chrset=utf8;innodb
create table tb1(id int not null auto_increment , primary key(id) )engin=innodb chrset=utf8;
修改主鍵時須要 使用關鍵字 modify ,也可設置主鍵起始值,或者給主鍵賦值,可是主鍵賦值以後再次插入數據時候會根據末尾ID進行自增+1
自增主鍵可設置起始值
create table tb1(id int not null auto_increment , primary key(id) )engin=innodb auto_increment=9 chrset=utf8;
修改主鍵使用drop關鍵字,修改主鍵使用modify
alter table tb1 drop primary key;
alter table tb1 modify id int;--這裏是去掉了自增
查看剛剛生成的主鍵 last_insert_id() 函數,相似魚SQL中的 select scope_identity;
select last_insert_id();
3.外鍵
外鍵關鍵字 foreign key(class_id) references tb1(id) ,外鍵能夠爲空,能夠重複,不符合外鍵約束值則沒法添加,且外鍵關係是相互的其中一方無效則外鍵無效
create table class(id int not null primary key auto_increment,name varchar(20))engine=innodb charset=utf8;
create table student(id not null primary key auto_increment,name varchar(20),class_id int,foreign(class_id) references class(id))engine=innodb charset=utf8;
insert into class (name) values('a','b','c');
insert into student(name,class_id) values('1',1),('2',2),('3',null);
刪除外鍵使用關鍵字drop,添加外鍵使用add關鍵字,刪除外鍵索引index
注意刪除外鍵以前須要查看外鍵,直接刪除外鍵名稱則找不到外鍵
4.非空
限制字段不潤許取NULL值,可是能夠存空字符,修改非空與否 與修改表字段相同只是不添加限制條件
·5.惟一
限制字段取值,不能取出重複的值,容許null值,若字段中村財重複值則沒法加入惟一,固然也能夠設置多個字段同時擁有惟一約束
6.檢測
check,該約束在數據插入的時候並不生效,因此通常忽略不計用法相似判斷條件,通常會使用enum枚舉來代替或者觸發器trigger 。。then 代替。