mysql提供的六种约束_SQL的六种约束
約束關(guān)鍵字 Constraints
作用:限制表的數(shù)據(jù)類(lèi)型,
第一種方式:創(chuàng)建表的時(shí)候添加約束,create table語(yǔ)句
第二種方式:創(chuàng)建表之后添加約束,alter table語(yǔ)句
注:紅色為注意事項(xiàng)
1、not null(不能為空)
創(chuàng)建表時(shí)約束not null
創(chuàng)建car表時(shí)約束了carid字段不能為空
2、unique(此字段的每條記錄必須唯一,一般我們用來(lái)約束id,他和primary key一樣,都對(duì)字段保證了唯一性)
創(chuàng)建表時(shí)約束unique
創(chuàng)建表之后約束unique
圖一:創(chuàng)建car表的時(shí)候約束了字段carid必須擁有唯一性
圖二:修改car表字段類(lèi)型,給car表的carname字段添加一個(gè)unique約束
3、primary key(設(shè)置此字段為這張表的主鍵,每個(gè)表應(yīng)該有一個(gè)主鍵,而且每個(gè)表都只能有一個(gè)主鍵,主鍵字段必須唯一且不能有null值)
創(chuàng)建時(shí)設(shè)置主鍵
創(chuàng)建后設(shè)置主鍵
圖略:alter語(yǔ)法
附:primary key還有一種情況,聯(lián)合主鍵。(一句話(huà)概括 = 兩個(gè)或兩個(gè)以上的字段都設(shè)置成主鍵),這里看似違反了unique,其實(shí)不然。它是把聯(lián)合主鍵看成一個(gè)主鍵
這里我們說(shuō)一下聯(lián)合主鍵,見(jiàn)下圖
創(chuàng)建表時(shí)設(shè)置聯(lián)合主鍵
我們可以看到被創(chuàng)建的car表,他的兩個(gè)字段carid和carname被設(shè)置成了聯(lián)合主鍵
創(chuàng)建后設(shè)置主鍵
圖略:alter語(yǔ)法
4、foreign key(設(shè)置此字段為這張表的外鍵,它指向另一張表的主鍵。)
foreign key約束防止破壞表連接,外鍵字段里的所有數(shù)據(jù),必須是另一張表的主鍵字段里的值。
也就是說(shuō),一張表的外鍵必須指向另一張表的主鍵
創(chuàng)建時(shí)設(shè)置外鍵
創(chuàng)建smallcar表,給smallcarid字段設(shè)置了主鍵,給carid字段設(shè)置了指向car表的carid字段的外鍵
創(chuàng)建后設(shè)置外鍵
圖略:alter語(yǔ)法
5、check(約束用于限制字段中的值的范圍)
對(duì)單個(gè)字段check的約束,那只允許該字段的值為特定的值
對(duì)表check的約束,會(huì)在特定的字段進(jìn)行數(shù)據(jù)限制
創(chuàng)建表時(shí)check約束
約束字段carid的值必須大于0,多個(gè)check約束可以效仿上面的幾個(gè)約束。
但是括號(hào)里面要用and進(jìn)行隔開(kāi)
創(chuàng)建表后check約束
圖略:alter語(yǔ)法
6、default(默認(rèn)值,如果定義了默認(rèn)值,再插入數(shù)據(jù)時(shí)如果沒(méi)有插入數(shù)據(jù),會(huì)根據(jù)默認(rèn)值插入)
創(chuàng)建時(shí)設(shè)置default約束
上面的carname記錄是自動(dòng)添加的
給carname字段設(shè)置了default約束,那么我們?cè)诓迦胗涗浀臅r(shí)候即使沒(méi)有填寫(xiě)carname字段的數(shù)據(jù)。會(huì)默認(rèn)給我們一個(gè)'carname‘?dāng)?shù)據(jù)
創(chuàng)建后添加default約束
圖略:alter語(yǔ)法
總結(jié)
以上是生活随笔為你收集整理的mysql提供的六种约束_SQL的六种约束的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 阿里云 nginx php mysql_
- 下一篇: linux cmake编译源码,linu