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