做網(wǎng)站 圖片 文件夾 放哪兒自動外鏈發(fā)布工具
文章目錄
- 表的約束的介紹
- 唯一鍵約束
- 測試
- 建表
- 插入測試
- 建表
- 插入測試
- 建表
- 插入測試
- 修改表
- 插入測試
表的約束的介紹
真正約束字段的是數(shù)據(jù)類型,但是數(shù)據(jù)類型約束很單一,需要有一些額外的約束,更好的保證數(shù)據(jù)的合法性,從業(yè)務(wù)邏輯角度保證數(shù)據(jù)的正確性。比如有一個字段是email,要求是唯一的。
表的約束很多,這里主要介紹如下幾個: null/not null,default, comment, zerofill,primary key,
唯一鍵約束
一張表中有往往有很多字段需要唯一性,數(shù)據(jù)不能重復(fù),但是一張表中只能有一個主鍵:唯一鍵就可以解決表中有多個字段需要唯一性約束的問題。
唯一鍵的本質(zhì)和主鍵差不多,唯一鍵允許為空,而且可以多個為空,空字段不做唯一性比較。
關(guān)于唯一鍵和主鍵的區(qū)別:
我們可以簡單理解成,主鍵更多的是標(biāo)識唯一性的。而唯一鍵更多的是保證在業(yè)務(wù)上,不要和別的信息出現(xiàn)重復(fù)。乍一聽好像沒啥區(qū)別,我們舉一個例子
假設(shè)一個場景(當(dāng)然,具體可能并不是這樣,僅僅為了幫助大家理解)
比如在公司,我們需要一個員工管理系統(tǒng),系統(tǒng)中有一個員工表,員工表中有兩列信息,一個身份證號碼,一個是員工工號,我們可以選擇身份號碼作為主鍵。
而我們設(shè)計員工工號的時候,需要一種約束:而所有的員工工號都不能重復(fù)。
具體指的是在公司的業(yè)務(wù)上不能重復(fù),我們設(shè)計表的時候,需要這個約束,那么就可以將員工工號設(shè)計成為唯一鍵。
一般而言,我們建議將主鍵設(shè)計成為和當(dāng)前業(yè)務(wù)無關(guān)的字段,這樣,當(dāng)業(yè)務(wù)調(diào)整的時候,我們可以盡量不會對主鍵做過大的調(diào)整。
測試
建表
插入測試
所以唯一鍵約束的列和主鍵約束的列一樣是不能有重復(fù)數(shù)據(jù)的,但是唯一鍵可以是NULL。
那么唯一鍵有什么用呢?下面新建個表來解釋
建表
插入測試
我們發(fā)現(xiàn)劉備和孫權(quán)的電話號碼是一樣的,假如警方發(fā)現(xiàn)了一個詐騙電話1345678911,而這個電話定位來源于旁邊一所學(xué)校,這是警方要求學(xué)校盡快找出這個電話的擁有者,于是學(xué)校教務(wù)處立馬行動。
可是發(fā)現(xiàn)竟然有兩個學(xué)生擁有這個電話,這一定是教務(wù)處輸入信息的時候輸入錯了。而因?yàn)?mark>已經(jīng)有主鍵了,這時候唯一鍵就可以派上用場了。
建表
插入測試
我們看到唯一鍵確實(shí)起到了作用。
唯一鍵可以為空。
刪除唯一鍵為空的空數(shù)據(jù)
唯一鍵可以配合not null使用,使它插入數(shù)據(jù)的時候?yàn)榭站蛨箦e。