約束 :對表中的數據進行限定 ,保證數據的正確性 、有效性和完整性
非空約束
創建表前添加
create table 表名(列名 數據類型 not null);
創建表後添加
alter table 表名 modify 列名 數據類型 not null;
刪除表約束
alter table 表名 modify 列名 數據類型;
唯一約束
創建表前添加
create table 表名(列名 數據類型 unique);
創建表後添加
alter table 表名 modify 列名 數據類型 unique;
刪除表約束
alter table 表名 drop index 列名 ;
主鍵約束
-- 創建表前添加
create table 表名(列名 數據類型 primary key);
create table 表名(
列名1 數據類型1,
列名2 數據類型2,
...
列名n 數據類型n
primary key(列名,..) -- 一個或一組列組成的主鍵,主鍵唯一
);
-- 創建表後添加
alter table 表名 modify 列名 數據類型 primary key;
-- 刪除表約束
alter table 表名 drop primary key;
-- 創建表前添加自動增長
create table 表名(列名 數據類型 primary key auto_increment);
-- 創建表後添加自動增長
alter table 表名 modify 列名 數據類型 auto_increment;
-- 刪除自動增長
alter table 表名 modify 列名 數據類型;
-- 特性 :
-- 非空且唯一
-- 一表僅一字段爲主鍵
-- 主鍵是表中記錄唯一標識
外鍵約束
-- 創建表前
create table 表名A (
....
····
列名x 數據類型 , -- 外鍵字段名 x
constraint 外鍵名稱 foreign key (外鍵字段x) references 表名B(B表的主鍵y)
) ;
-- 外鍵名稱 :可以定義爲A_B
-- 表A的外鍵字段x 指向 在表B中的主鍵y
-- 兩字段名稱可以不一樣,但含義要一樣
-- 創建表後添加
alter table 表名A -- 表名A : 和表B關聯的表,注意是關聯
add constraint 外鍵名稱 foreign key (外鍵字段名)
references 表名B(B表的主鍵名) ;
-- 刪除外鍵
alter table 表名 drop foreign key 外鍵名稱 ;
-- 取消(當前頁)外鍵約束
SET FOREIGN_KEY_CHECKS=0;
-- 設置(當前頁)外鍵約束
SET FOREIGN_KEY_CHECKS=1;
外鍵約束級聯
創建表後添加
alter table 表名A add constraint 外鍵名稱
foreign key (外鍵列名)
references B表名(B表列名)
on update cascade -- 級聯更新
on delete cascade ; -- 級聯刪除
-- 級聯更新和級聯刪除可以同時寫
-- 級聯刪除會將被關聯表中記錄刪除