約束關鍵字 Constraints
作用:限制表的數據類型,
第一種方式:創建表的時候添加約束,create table語句
第二種方式:創建表之后添加約束,alter table語句
注:紅色為注意事項
1、not null(不能為空)
創建表時約束not null
創建car表時約束了carid字段不能為空
2、unique(此字段的每條記錄必須唯一,一般我們用來約束id,他和primary key一樣,都對字段保證了唯一性)
創建表時約束unique
創建表之后約束unique
圖一:創建car表的時候約束了字段carid必須擁有唯一性
圖二:修改car表字段類型,給car表的carname字段添加一個unique約束
3、primary key(設置此字段為這張表的主鍵,每個表應該有一個主鍵,而且每個表都只能有一個主鍵,主鍵字段必須唯一且不能有null值)
創建時設置主鍵
創建后設置主鍵
圖略:alter語法
附:primary key還有一種情況,聯合主鍵。(一句話概括 = 兩個或兩個以上的字段都設置成主鍵),這里看似違反了unique,其實不然。它是把聯合主鍵看成一個主鍵
這里我們說一下聯合主鍵,見下圖
創建表時設置聯合主鍵
我們可以看到被創建的car表,他的兩個字段carid和carname被設置成了聯合主鍵
創建后設置主鍵
圖略:alter語法
4、foreign key(設置此字段為這張表的外鍵,它指向另一張表的主鍵。)
foreign key約束防止破壞表連接,外鍵字段里的所有數據,必須是另一張表的主鍵字段里的值。
也就是說,一張表的外鍵必須指向另一張表的主鍵
創建時設置外鍵
創建smallcar表,給smallcarid字段設置了主鍵,給carid字段設置了指向car表的carid字段的外鍵
創建后設置外鍵
圖略:alter語法
5、check(約束用於限制字段中的值的范圍)
對單個字段check的約束,那只允許該字段的值為特定的值
對表check的約束,會在特定的字段進行數據限制
創建表時check約束
約束字段carid的值必須大於0,多個check約束可以效仿上面的幾個約束。
但是括號里面要用and進行隔開
創建表后check約束
圖略:alter語法
6、default(默認值,如果定義了默認值,再插入數據時如果沒有插入數據,會根據默認值插入)
創建時設置default約束
上面的carname記錄是自動添加的
給carname字段設置了default約束,那么我們在插入記錄的時候即使沒有填寫carname字段的數據。會默認給我們一個'carname‘數據
創建后添加default約束
圖略:alter語法