MySQL對于數據庫存儲的數據, 做出一些限制性要求, 就叫做數據庫的"約束".
在每一列的 列名, 類型 后面加上"約束".
一. not null (非空)
指定某列不能存儲null值.
二. unique (唯一)
保證這一列的每行必須有唯一值.
我們可以看到, 給 table 的 sn 列插入兩次 77 , 結果就會出現報錯:"Duplicate entry(重復的條目)".
三. default (默認值)
default 用于指定默認值.
如上圖, id 的默認值為null, 而由于我們手動給name指定了默認值, 所以name列的默認值是"無名".
四. primary key (主鍵)
primary key 主鍵: 約定了這個表的某個列為"身份標識".
從上圖我們可以看到, id 被指定為primary key.?
主鍵的性質:
(1) 非空性: 被指定為主鍵的列不能為空(null), 數據表的每條記錄都必須有一個主鍵值.
(2) 唯一性: 被指定為主鍵的列的值必須是唯一的, 不能有重復.(每條記錄的主鍵列都是不同的值).?
主鍵(primary key)既有非空性(not null), 又有不可變性(unique). primary key = not null + unique.
(3) 不可變性: 一旦某個記錄的主鍵被設定, 它就不能更改.
(4) 復合主鍵: 雖然通常只指定一個列為主鍵, 但是MySQL也支持使用多個列組合作為主鍵。
(5) 自增主鍵: auto_increment,?被設置為自增主鍵的列,當你向表中插入新記錄時,不需要為這個列指定值,MySQL會自動為它生成一個值. (注意: 自增主鍵只能針對像int, bigint這樣的整數 指定).
(6) 作為索引: 被指定為主鍵的列會自動創建唯一縮索引, 有助于快速檢索表中的記錄.
五. foreign key (外鍵)
外鍵(foreign key)是一種用于建立兩個表之間關系的約束。它確保了表中的某個列的值必須存在于另一個表的主鍵或唯一鍵字段, 外鍵通常用于將多個表連接在一起.
(注意: 數據表中的列我們又稱為字段)
例如:
我們在這里往student表里插入數據時, 給classid列插入的值就必須是在class表中存在的.
如上圖所示, 往student表中插入class中存在的數據, 都沒問題. 但是如果插入在class中沒有的數據, 就會報錯. 這就是主鍵的作用.?
關于外鍵的一些關鍵點:
1. 關聯性: 子表的外鍵必須與父表中相應的主鍵或唯一鍵字段類型相匹配。
2. 相互約束: 父表約束了子表, 子表也會對父表進行反向約束. (例如: 如果父表中的某個記錄被子表引用了, 此時就不能刪除/修改父表中相應的記錄了). 解決方案:?在創建外鍵約束時,可以指定?ON DELETE CASCADE
?或?ON UPDATE CASCADE
?選項,這樣當父表中的記錄被刪除或更新時,子表中的相關記錄也會自動被刪除或更新。
所以, 在刪除表的時候, 我們要確保先刪除子表, 再刪除父表. 否則父表無法刪除.
先刪父表 --> 無法正常刪除.
先刪子表 -->正常刪除
以上就是本篇博客的全部內容啦,如果喜歡小編的文章,可以點贊,評論,收藏~