日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

MySQL五大约束详解(我有多详细只有我知道小白都能懂哦)

發(fā)布時(shí)間:2024/10/14 132 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL五大约束详解(我有多详细只有我知道小白都能懂哦) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.約束概念和分類
2.五大約束的添加和刪除
3.自增長(zhǎng)列

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)引起來)

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ú)拿出來講
我們先看一個(gè)員工表(字段分別是員工編號(hào),姓名,年齡,所屬部門,部門所在地):

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

表2(部門表department):

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

但是這里有一個(gè)問題,就是,我們可以隨便刪除部門表的某一行,就比如id=1的那一行,一旦刪除,那么表1里的dep_id=1的員工就查不到他們的部門信息了,所以就可以用外鍵來解決這個(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可以來完成值的自動(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ù);

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

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

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

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)

總結(jié)

以上是生活随笔為你收集整理的MySQL五大约束详解(我有多详细只有我知道小白都能懂哦)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。