中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL(3)-表的完整性約束

發布時間:2020-07-04 10:53:17 來源:網絡 閱讀:537 作者:gsshang 欄目:MySQL數據庫

? ?

表的完整性約束作用 : 用于保證數據的完整性


常見的表的約束有 : PRIMARY ?KEY(PK主鍵) , FOREIGN ?KEY(FK外鍵) , NOT ?NULL , UNIQUE ?KEY(唯一鍵) , AUTO_INCREMENT , DEFAULT(默認值)


?一 .?DEFAULT ,?NOT ?NULL

? ? ??

說明 : default : 指定默認值

? ? ? ? ? not ?null : 不允許為空 , 就類似我們在網上注冊賬號時 , 有些內容必須要填寫 , 空著就提交不了


例 : 創建 ?school 數據庫 , 在 school 數據庫中創建 student 表 , 字段有學號id , 姓名name , 性別sex ; 設置 id , name不允許為空 ,sex不允許為空 , 且sex默認設置為男 .

MySQL(3)-表的完整性約束

創建表后查看student表的結構 , 可以看到null都為no , default選項sex字段默認為m

MySQL(3)-表的完整性約束

現在插入一條數據 , 如 : insert ?into ?student ?value(1,'jack','m');

MySQL(3)-表的完整性約束

從上圖可以看出成功插入 , 再次插入一條數據 : insert ?into ?student(id,name) ?value(1,'lucy');

MySQL(3)-表的完整性約束

只插入兩個字段 , sex字段沒有數據插入 , 但因為該字段不允許為空且默認值設為m , 所以會默認記錄為m


二 . 設置唯一約束 UNIQUE

? ? ? ? ? ? ??

唯一約束 : 控制此列的值不允許重復 , 必須是唯一的一個值


例 : 創建student2表 , 在student表的基礎上把id字段設為unique?

create table student2( id int ?unique, name varchar(50) not null, sex enum('m','f')default 'm' not null);

MySQL(3)-表的完整性約束 ??

可以看到id字段key為UNI , 這時插入兩條記錄

MySQL(3)-表的完整性約束

可以看出 , 因為id字段設置了unique , 插入兩條記錄的id值都為1 , 所以插入數據報錯

?

三 . 設置主鍵約束 PRIMARY ?KEY

? ? ? ? ? ? ??

primary key 字段的值是不允許重復 , 且不允許為空 , 即 UNIQUE + NOT NULL?

主鍵有單列主鍵多列主鍵(復合主鍵) ,多列主鍵即兩條或兩條以上的字段設置為主鍵

例 : 創建student3表 , 將字段 id 設為主鍵

create ?table ?student3(id ?int ?primary ?key ,name ?varchar(50) not null ,sex enum('m','f'));?

MySQL(3)-表的完整性約束

設置主鍵之后 , 插入數據時id字段的值不能為空且不能出現相同時 , 才能插入成功

(復合主鍵同理 , 即多個字段設置primary key 或 not null ?unique)

?

四 . 設置外鍵約束 FOREIGN ?KEY

? ? ??

外鍵功能 : 設置字表與父表 , 對父子表進行同步更新 , 同步刪除

實例 : 在test表中創建一張員工(employees)表 , 一張工資(payroll)表 , 將兩張表設置外鍵

員工表(父表) :

MySQL(3)-表的完整性約束

工資表(子表) ??

MySQL(3)-表的完整性約束

查看這兩張表結構:

MySQL(3)-表的完整性約束

創建完兩張表后 , 在父表employees中插入tom , jack 的記錄?

MySQL(3)-表的完整性約束

在字表中插入一條Lucy的記錄 ,?從下圖看出插入數據Lucy會報錯 , 因為做了外鍵 , 并且父表中沒有Lucy的信息

MySQL(3)-表的完整性約束

再在payroll表中插入tom ,jack字段 :insert ?into ? payroll(id,pname,payroll) values (1,'tom',15.6), (2,'jack',100.5);

MySQL(3)-表的完整性約束

插入值之后 , 將父表employees中的tom改為tomer , 再看看字表中的變化 , 子表的tom也變成了tomer

MySQL(3)-表的完整性約束

? ? ??

結論:
? ? ? ?0、外鍵的作用就是實現在子表中引用父表中某列的值,這樣子表中外鍵的值是依賴于父表的。
? ? ? ?1、父表中的主鍵才能作為子表中的外鍵。
? ? ? ?2、當父表中某個員工的記錄修改時,子表也會同步修改 ?
? ? ? ?3、當父表中刪除某個員工的記錄,子表也會同步刪除


五 . 設置自增字段值 AUTO_INCREMENT

? ? ? ? ? ? ??

例 : 在test庫中創建一張zhi表 ,將id設置成自增

MySQL(3)-表的完整性約束

創建表之后插入數據 :?insert into zhi(name,age) values('tom',18),('jack',19),('lucy',20); ?#可以看出插入的數據沒有id自段

MySQL(3)-表的完整性約束

插入上述字段可以看出 , id 字段自動一自增的形式自動補全數據

? ? ? ?MySQL(3)-表的完整性約束

? ? ? ?


? ? ? ??

向AI問一下細節
推薦閱讀:
  1. 修改MySQL密碼
  2. mysql安裝

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中方县| 永新县| 剑川县| 太白县| 六安市| 田阳县| 临沧市| 宜都市| 封开县| 辽阳县| 玉门市| 镇巴县| 九江市| 乌拉特中旗| 迁安市| 阿勒泰市| 眉山市| 鄢陵县| 闻喜县| 犍为县| 永安市| 天全县| 甘谷县| 南涧| 栾城县| 商河县| 阳东县| 丽江市| 青神县| 灵川县| 长乐市| 建瓯市| 灌南县| 三明市| 宜兴市| 呼伦贝尔市| 昆山市| 镇宁| 珠海市| 东港市| 柏乡县|