一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Mysql - MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇

MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇

2021-11-14 19:10祈禱ovo Mysql

本篇文章非常適合MySQl初學(xué)者,主要講解了MySQL數(shù)據(jù)庫(kù)的五大約束及約束概念和分類,有需要的朋友可以借鑒參考下,希望可以有所幫助

 

1.約束概念和分類

1.1約束的概念:

對(duì)表中的數(shù)據(jù)進(jìn)行限定,保證數(shù)據(jù)的正確性,有效性,完整性

1.2約束分類

  • 1.主鍵約束(primary key):保證該字段具有非空且唯一性,一張表中只能有一個(gè)主鍵,主鍵是表中字段的唯一標(biāo)識(shí)
  • 2.非空約束(not null):保證字段不能為空
  • 3.唯一約束(unique):保證該字段具有唯一性但是可以為null
  • 4.外鍵約束(foreign key):在一個(gè)表中存在的另一個(gè)表的主鍵或唯一鍵稱此表的外鍵。
  • 5.默認(rèn)約束(default+默認(rèn)值):用于保證該字段有默認(rèn)值(用引號(hào)引起來(lái))

 

2.五大約束的添加和刪除

 

2.1添加約束的六種方法

1.在創(chuàng)建表的時(shí)候添加非空約束(以列級(jí)約束添加)

create table + 表名(
列名 數(shù)據(jù)類型 + 約束名
)

2.在創(chuàng)建表的時(shí)候添加非空約束(以表級(jí)約束添加)

create table 表名(
列名 數(shù)據(jù)類型,
...
列名 數(shù)據(jù)類型,
(constraint +別名(就是隨便為自己添加的約束起一個(gè)名字)) 約束名(對(duì)應(yīng)字段名)
)

3.修改列名的時(shí)候

alter table + 表名 + change (column) + 舊列名 新列名 新列名的類型 + 約束

4.修改列的數(shù)據(jù)類型的時(shí)候

alter table + 表名 + modify + (column) + 列名 列類型 約束

5.在添加新列的時(shí)候可以添加約束

alter table + 表名 + add + (column) + 新列名 + 新列名的類型 + 約束

6.外鍵特有

alter table + 表名 + add constraint 外鍵名稱(自己隨便為外鍵取得名字) + foreign key(外鍵字段名) references 主表名稱(主表要關(guān)聯(lián)的字段)

 

2.2三種刪除約束的方式

1.修改列名的時(shí)候不加約束

alter table + 表名 + change (column) + 舊列名 新列名 新列名的類型

2.修改列的數(shù)據(jù)類型的時(shí)候不加約束

alter table + 表名 + modify + (column) + 列名 列類型

3.運(yùn)用drop特定刪除約束

alter table + 表名 + drop index/foreign key/primary key + 約束的名字

注:查看表中約束的名字:

show index from + 表名

 

2.3五大約束分別對(duì)應(yīng)的添加刪除方式(序號(hào)對(duì)應(yīng)2.1和2.2)

1.非空約束(not null)

  • 對(duì)應(yīng)的添加方式:1 3 4 5
  • 對(duì)應(yīng)的刪除方式:1 2

2.唯一約束(unique)

  • 對(duì)應(yīng)的添加方式:1 2 3 4 5
  • 對(duì)應(yīng)的刪除方式:1 2 3(對(duì)應(yīng)第3種的index選項(xiàng))

3.默認(rèn)約束(default)

  • 對(duì)應(yīng)的添加方式:1 3 4 5
  • 對(duì)應(yīng)的刪除方式:1 2

4.主鍵(primary key)

  • 對(duì)應(yīng)的添加方式:1 2 3 4 5
  • 對(duì)應(yīng)的刪除方式:3(對(duì)應(yīng)第3種的primary key選項(xiàng)注意后邊不加約束的名字了,因?yàn)橐粋€(gè)表里只能有一個(gè)主鍵)

5.外鍵(foreign key)

  • 對(duì)應(yīng)的添加方式:2 6
  • 對(duì)應(yīng)的刪除方式:3(對(duì)應(yīng)第3種的foreign key選項(xiàng))

外鍵單獨(dú)拿出來(lái)講
我們先看一個(gè)員工表(字段分別是員工編號(hào),姓名,年齡,所屬部門,部門所在地):

MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇

我們可以發(fā)現(xiàn)有冗余的部分,就是研發(fā)部對(duì)應(yīng)廣州,銷售部對(duì)應(yīng)深圳不用寫那么多遍,其實(shí)可以把他們分成兩張表來(lái)防止冗余的部分,第一張表存儲(chǔ)員工的信息,另一張存儲(chǔ)部門信息
表1(員工表employee):

MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇

表2(部門表department):

MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇

這里兩個(gè)表的id都是主鍵

但是這里有一個(gè)問題,就是,我們可以隨便刪除部門表的某一行,就比如id=1的那一行,一旦刪除,那么表1里的dep_id=1的員工就查不到他們的部門信息了,所以就可以用外鍵來(lái)解決這個(gè)問題

我們可以在創(chuàng)建表的時(shí)候就指定dep_id是外鍵,關(guān)聯(lián)department的主鍵id

語(yǔ)句格式(這里雖然是第2種方法也就是以表級(jí)約束添加外鍵但是語(yǔ)法上有不同):

create table 表名(
列名 數(shù)據(jù)類型,
...
列名 數(shù)據(jù)類型,
(constraint + 別名(就是隨便為自己添加的約束起一個(gè)名字)) + foreign key(字段名) + references + 主表(主表對(duì)應(yīng)字段)
)

對(duì)于本例子就可以這么寫:

create table employee(
id int primary key,
sname varchar(5),
age int,
dep_id int,
constraint aaa foreign key(dep_id) references department(id)
)

加上外鍵后我們就不能刪除department表里邊的任意一行,而且,我們也不能在employee里邊添加新的員工信息的時(shí)候把dep_id填寫成除1,2之外的任何數(shù)字

 

2.4對(duì)于創(chuàng)建約束的總結(jié)

在創(chuàng)建表的時(shí)候添加列級(jí)約束只支持:默認(rèn),非空,主鍵,唯一
在添加表級(jí)約束只支持:主鍵,唯一,外鍵

 

2.5對(duì)于主鍵和唯一的區(qū)別:

主鍵至多一個(gè)唯一可以有多個(gè)
允許兩個(gè)列組成一個(gè)主鍵和一個(gè)唯一

 

3.自增長(zhǎng)列

 

3.1概念

如果某一列是數(shù)值類型,使用 auto_increment可以來(lái)完成值的自動(dòng)增長(zhǎng)(一般都是和主鍵一起用)

 

3.2在創(chuàng)建表的時(shí)候添加主鍵約束,并且完成主鍵自增長(zhǎng)的例子

格式:

create table 表名(
列名 數(shù)據(jù)類型 primary key + auto_increment
)

舉個(gè)例子:
我們創(chuàng)建一個(gè)含學(xué)號(hào)姓名的student表,并且按照學(xué)號(hào)自增長(zhǎng)
創(chuàng)建語(yǔ)句:

create table student(
id int primary key auto_increment,
sname char(4)
)

如果此時(shí)我們表里有一個(gè)數(shù)據(jù);

MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇

當(dāng)我們?cè)俅尾迦霐?shù)據(jù)的時(shí)候不給學(xué)號(hào)即

insert into student value(null,“李四”)

再次查看表的時(shí)候自動(dòng)給我們按自增長(zhǎng)補(bǔ)了學(xué)號(hào):

MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇

 

3.3自增長(zhǎng)的添加和刪除

1.添加(上述在創(chuàng)建的時(shí)候添加是一種)

alter table + 表名 + modify column + 列名 類型 約束 + AUTO_INCREMENT

2.刪除

alter table + 表名 + modify column 列名 類型

 

3.4設(shè)置自增長(zhǎng)步長(zhǎng)

自增長(zhǎng)起始值為1,步長(zhǎng)起始值為1
起始值不能更改,步長(zhǎng)可以更改
用show VARIABLES LIKE “%auto_increment%”
查看對(duì)應(yīng)的步常代表的名字然后用set 步長(zhǎng)代表名字=要設(shè)置的步長(zhǎng)

以上就是MySQL學(xué)習(xí)之?dāng)?shù)據(jù)庫(kù)表五大約束詳解小白篇的詳細(xì)內(nèi)容,更多關(guān)于MySQl五大約束的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://blog.csdn.net/qq_45737068/article/details/106143246

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 王雨纯 羞羞 | 国产精品制服丝袜白丝www | 973影院 | 青青青手机视频 | 大jjjj免费看视频 | 女同久久另类99精品国产 | 午夜影院和视费x看 | 垫底辣妹免费观看完整版 | 国产美女下面流出白浆视频 | 高清国语自产拍免费视频国产 | 亚洲视频免费在线观看 | 国产特级 | 国产成人刺激视频在线观看 | 99亚洲 | 舔到喷水 | 性色欲情网站IWWW九文堂 | 好姑娘在线完整版视频 | 40岁女人三级全黄 | 亚洲网站在线观看 | 3d动漫被吸乳羞羞 | 国产精品四虎在线观看免费 | 日本在线小视频 | 国产亚洲玖玖玖在线观看 | 午夜伦理yy44008影院 | 亚洲、国产综合视频 | 国产一区视频在线免费观看 | 国产乱妇无码大片在线观看 | 天天综合网天天做天天受 | 五月天精品视频播放在线观看 | 北海市副市长黄江老公 | 色婷婷综合久久久 | 校草让我脱了内裤给全班看 | 男人v天堂 | 日本xxx片免费高清在线 | 欧美性黑人巨大gaysex | 91国内精品线免费播放 | 韩日理论片 | 日韩欧美一区二区三区免费看 | 国产亚洲sss在线播放 | 狠狠插综合网 | 免费看打屁股视频的软件 |