欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:數(shù)據(jù)庫 MySQL —— 約束

柚子快報(bào)激活碼778899分享:數(shù)據(jù)庫 MySQL —— 約束

http://yzkb.51969.com/

MySQL —— 約束

引言not nulluniqueprimary key —— 主鍵auto_increment復(fù)合主鍵

foreign key —— 外鍵插入數(shù)據(jù)刪除主表的數(shù)據(jù)

default

引言

在設(shè)計(jì)表的時(shí)候,有些列是必填項(xiàng)(如果用戶不填,那這個(gè)數(shù)據(jù)就沒有必要存進(jìn)數(shù)據(jù)庫),可能表的第一列就是編號(hào)需要能自動(dòng)幫我們排序(這樣可以減少用戶的填寫負(fù)擔(dān),也減少我們的工作量),又或者我們需要有些數(shù)據(jù)是不能重復(fù)填寫的(例如身份證號(hào),每一個(gè)人都是獨(dú)一無二的)等等… 這些需求其實(shí)都可以實(shí)現(xiàn),現(xiàn)在我們來學(xué)習(xí)數(shù)據(jù)庫是如何實(shí)現(xiàn)約束的。

not null

表示某一列是不能存儲(chǔ) null 值的,也就是這一列是必填項(xiàng):

格式:在你定義表的時(shí)候,在需要不為空的列旁邊加上 not null 即可

我們查看表結(jié)構(gòu)發(fā)現(xiàn) Null 那一列的 id 對應(yīng)的一行現(xiàn)實(shí) No ,說明定義成功,現(xiàn)在我們插入一個(gè) id 為 空的數(shù)據(jù)實(shí)驗(yàn)一下:

會(huì)發(fā)現(xiàn)不允許你插入 id 為空的數(shù)據(jù)。

unique

保證某列的每一行都有一個(gè)唯一值,即不可以在某列上出現(xiàn)重復(fù)的數(shù)據(jù)。

語法格式:在你定義表的時(shí)候,在需要的列旁邊加上 unique 即可

我們來查看表結(jié)構(gòu):

我們發(fā)現(xiàn) id 那一行的 Key 值被置為了 UNI ,說明 id 是唯一值,如果插入id 相同的數(shù)據(jù),數(shù)據(jù)庫會(huì)報(bào)錯(cuò):

null 是可以重復(fù)的,不受 unique 約束

primary key —— 主鍵

primary key(也被我們稱為主鍵) 是 not null 和 unique 的結(jié)合(即主鍵約束的列即是非空的也是唯一的),能確保某列(或者兩列及以上的列的組合) 有唯一的標(biāo)識(shí)。

我們可以使用 not null + unique (沒有順序之分)來創(chuàng)建主鍵:

Key 顯示 PRI 就是主鍵的意思。

當(dāng)然這里可以直接使用關(guān)鍵字 primary key 來定義主鍵 :

主鍵約束幫我們對非空和唯一值進(jìn)行了校驗(yàn),對于這個(gè)性能消耗來說,我們還是能接受的。

auto_increment

對于整數(shù)類型的主鍵,常配搭自增長auto_increment來使用。插入數(shù)據(jù)對應(yīng)字段不給值時(shí),數(shù)據(jù)庫使用最大值+1 對其進(jìn)行賦值

語法格式就是在主鍵后面加 auto_increment

我們查看表結(jié)構(gòu)可以看到 Extra 這個(gè)擴(kuò)展列表里出現(xiàn)了 auto_increment ,說明 id 這一列數(shù)據(jù)會(huì)自增,其實(shí)可以類比我們的excel 表格,現(xiàn)在給大家演示自增的現(xiàn)象:

數(shù)據(jù)庫會(huì)幫我們維護(hù)主鍵的增長,在插入的時(shí)候,找到目前的最大值,然后在這個(gè)基礎(chǔ)上 +1 即可。

我們在插入一個(gè)id 定義為 100 的數(shù)據(jù),然后再插入只有姓名的數(shù)據(jù),看看現(xiàn)象:

這里說明了主鍵可以是不連續(xù)的

現(xiàn)在我們清空 test 表中的所有數(shù)據(jù),如果我們第一個(gè)插入的數(shù)據(jù)的 id 值為 null ,數(shù)據(jù)庫其實(shí)也能幫我們插入進(jìn)去:

empty set 表示空集。

這個(gè) id 生成的數(shù)值是上次 id 的最大值加 1 。

現(xiàn)在我們來定義一個(gè)新的表,來試一下 第一個(gè)插入的數(shù)據(jù)的 id 值為 null:

如果是全新的表,插入第一個(gè)數(shù)據(jù)的主鍵值為 null,會(huì)自動(dòng)賦值為 1 如果后序還是插入主鍵值為 null 的數(shù)據(jù),數(shù)據(jù)庫會(huì)為其賦值為最大值加 1

復(fù)合主鍵

注意一個(gè)表中只能存在一個(gè)主鍵

但是一個(gè)主鍵可以同時(shí)包含很多個(gè)列,這就是復(fù)合主鍵

如何定義符合主鍵? 在創(chuàng)建表的時(shí)候,加上 primary key (列名,列名…)

通過查看表結(jié)構(gòu)可以看到兩個(gè)列被主鍵管理著:

復(fù)合主鍵在做非空校驗(yàn)的時(shí)候,所有被主鍵管理的列都不能被定義為空,但是在做唯一性檢驗(yàn)的時(shí)候,只有當(dāng)所有被主鍵管理的列的數(shù)值都相同時(shí),才不會(huì)被允許插入。

演示一下:

現(xiàn)在插入兩個(gè)數(shù)據(jù):

再插入主鍵值相同的張三數(shù)據(jù): 發(fā)現(xiàn)插入不了,因?yàn)?1, 張三 被主鍵唯一值校驗(yàn)發(fā)現(xiàn),無法插入

但是你可以插入,主鍵值不完全相同的張三數(shù)據(jù):

foreign key —— 外鍵

外鍵用于關(guān)聯(lián)其他表的主鍵或唯一鍵

舉個(gè)例子:

設(shè)置外鍵的語法格式:foreign key (字段名) references 主表(列)

foreign key 是外鍵的關(guān)鍵字,字段名是表實(shí)當(dāng)前表中哪個(gè)字段要與主表建立主外鍵關(guān)系,references 關(guān)鍵字,表實(shí)后面要引用哪個(gè)表中的哪個(gè)列。

演示:

create table class (

id int primary key comment '班級',

num int comment '人數(shù)'

);

create table student (

id bigint primary key comment '學(xué)號(hào)',

name varchar(50) comment '姓名',

class_id int comment '班級',

foreign key (class_id) references class(id)

);

注意被關(guān)聯(lián)的表要先創(chuàng)建好,然后才能創(chuàng)建與其構(gòu)建主外鍵關(guān)系的表

外鍵一定是關(guān)聯(lián)另一張表的主鍵的

插入數(shù)據(jù)

我們往 student 表中 插入 一個(gè)不存在的班級編號(hào)的數(shù)據(jù): 發(fā)現(xiàn)這是不能插入的

通過外鍵的約束,可以保證數(shù)據(jù)的完整性和關(guān)系的確定性。

刪除主表的數(shù)據(jù)

首先先確定 class 是主表,因?yàn)樗潜魂P(guān)聯(lián)的,student 是 子表

當(dāng)子表存在對主表依賴的數(shù)據(jù)的時(shí)候,不能刪除主表對應(yīng)的數(shù)據(jù) 因?yàn)?231 與子表存在關(guān)聯(lián),所以主表的 231 數(shù)據(jù)不能被刪除

但是可以刪除沒有關(guān)聯(lián)關(guān)系的數(shù)據(jù):

如果一定要?jiǎng)h除主表的存在關(guān)聯(lián)關(guān)系的數(shù)據(jù)的時(shí)候,那么子表就不能存在有數(shù)據(jù)行對其有依賴,所以先刪除子表的數(shù)據(jù)行解除關(guān)聯(lián)關(guān)系,再去刪除主表的數(shù)據(jù):

default

給沒有賦值的列 賦默認(rèn)值。

語法格式:在你定義表的時(shí)候,在指定的列旁邊加上 (default + 默認(rèn)值) 即可

查看表結(jié)構(gòu)發(fā)現(xiàn) Default 列表對應(yīng)的 name 出現(xiàn)了 默認(rèn)值為 無名氏,也就是當(dāng)你沒有填姓名的時(shí)候默認(rèn)值會(huì)默認(rèn)為 無名氏。

演示一下:

如果你有設(shè)置name 這個(gè)數(shù)值,那就不會(huì)賦默認(rèn)值

如果你沒有設(shè)置name 這個(gè)數(shù)值,就會(huì)賦默認(rèn)值——無名氏:

柚子快報(bào)激活碼778899分享:數(shù)據(jù)庫 MySQL —— 約束

http://yzkb.51969.com/

參考閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19345432.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄