一、Mysql支援以下限制:
※ 主鍵限制 :primary key
※ 唯一性限制:unique key
※ 外鍵限制:foreign key
※ 非空限制:not null
※ 預設值限制:default
二、主鍵限制:
一個表隻能有一個主鍵,當建表時忘記設定主鍵限制時.設定為主鍵的列查詢速度會非常快,是以一般會用聚集索引,這個我們後面會講到。
添加主鍵限制:設定myself表的age為主鍵
alter table myself add primary key(age);
文法:alter table 表名 add primary key;(列名)※ 可以有多個列名
修改主鍵限制:将id設定為主鍵
alter table myself modify id int primary key;
文法:alter table 表名 modify 列名稱 列類型 primary key;
删除主鍵限制:
alter table myself drop primary key;
文法:alter table 表名 drop primary key;
三、外鍵限制:
何為外鍵,當建表時需要用到另外一個表的主鍵作為本表的的主鍵時,需要設定外鍵。設定外間後,若想在删除本表資料時會級聯删除或者預設删除其他方式。
添加外鍵限制:設定本表的cno為外鍵
alter table myself add foreign key cno references course(cno);
文法:alter table 表名稱 add foreign key (列名稱) references 關聯表名稱(列名稱);
外鍵删除:
alter table myself drop foreign key myself_ibfk_1;
文法:alter table 表名稱 drop foreign key 外鍵名稱; ※外鍵名和外鍵名稱不一樣
查詢外鍵名:查詢myself外鍵名
show create table myself
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TPR10dBR0TzkFVNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TNwczMwQzMyIzNyUDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
文法:show create table 表名
删除表時有兩種模式:
※ on delete cascade 級聯删除
※ on delete set null 表的關聯列的值設定為null
四、非空限制:
當插入新資料時對應的列為不能空。非空限制是相對于預設值限制而說的。
添加非空限制:
alter table myself modify id int not null;
文法:alter table 表名 modify 列名 列類型 not null;
修改非空限制:修改非空就是改為空
alter table myself modify id int null;
文法:alter table 表名 modify 列名 列類型 null
删除非空限制:删除非空限制就是設定為預設值
alter table modify id int default 'abe'
文法:alter table modify 列名 列類型 預設值;
五、預設值限制:default:
當插入時沒有插入值時,會自動插入預設值。預設值限制相對于非空限制而說。
添加預設值限制:
alter table myself add id int not null default 'abc';
文法:alter table 表名 add 列名 列類型 not null default '預設值';
六、唯一性限制:
本列的内容隻能唯一不能重複。
添加唯一限制:
文法:alter table 列名 add unique(列名稱) ※可以有多個列名稱,用逗号隔開。
修改唯一限制:
alter table myself modify id int unique;
文法:alter table 表名 modify 列名稱 列類型 unique;
删除唯一限制:删除age列的唯一限制
alter table myself drop index age;
文法:alter table 表名稱 drop index 列名稱;
tip:mysql不支援check限制,要想達到check限制的效果,應将限制列設定為enum 枚舉型。