最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析MySQL中的約束

 更新時(shí)間:2025年10月23日 16:10:06   作者:凍咸魚(yú)  
約束是關(guān)系型數(shù)據(jù)庫(kù)的一個(gè)重要的功能,主要作用是保證數(shù)據(jù)的完整性,也可以理解為數(shù)據(jù)的正確性(數(shù)據(jù)本身是否正確,關(guān)聯(lián)關(guān)系是否正常),本文給大家介紹MySQL中的約束,感興趣的朋友一起看看吧

約束是關(guān)系型數(shù)據(jù)庫(kù)的一個(gè)重要的功能

主要作用是保證數(shù)據(jù)的完整性,也可以理解為數(shù)據(jù)的正確性(數(shù)據(jù)本身是否正確,關(guān)聯(lián)關(guān)系是否正常)

約束類(lèi)型

類(lèi)型說(shuō)明
NOT NULL?空約束指定?空約束的列不能存儲(chǔ) NULL 值
DEFALUT 默認(rèn)約束當(dāng)沒(méi)有給列賦值時(shí)使?的默認(rèn)值
UNIQUE 唯?約束指定唯?約束的列每?數(shù)據(jù)必須有唯?的值
PRIMARY KEY 主鍵約束NOT NULL 和 UNIQUE的結(jié)合,可以指定?個(gè)列或多個(gè)列,有助于防?數(shù)據(jù) 重復(fù)和提?數(shù)據(jù)的查詢性能
FOREIGN KEY 外鍵約束外鍵約束是?種關(guān)系約束,?于定義兩個(gè)表之間的關(guān)聯(lián)關(guān)系,可以確保數(shù)據(jù)的完整性和?致性
CHECK 約束?于限制列或數(shù)據(jù)在數(shù)據(jù)庫(kù)表中的值,確保數(shù)據(jù)的準(zhǔn)確性和可靠性

注意:

  • UNIQUE 唯?約束 的字段NULL可以重復(fù)插入
  • PRIMARY KEY 主鍵約束 的列即使非空也是唯一的
  • 如果設(shè)置一個(gè)字段非空且唯一(id bigint not null unique)在desc查詢表結(jié)構(gòu)的時(shí)候會(huì)顯示id的key為PRI

一個(gè)表中不允許有兩個(gè)主鍵,但一個(gè)主鍵可以包含多個(gè)字段(復(fù)合主鍵)

FOREIGN KEY 外鍵約束 表中某個(gè)列的值要建立外鍵關(guān)系,這個(gè)值必須是另一張表的主鍵列,或是唯一約束列并且存在。

語(yǔ)法:foregin key (字段名) reference 主表(列);

create table student(
 id bigint PRIMARY KEY auto_increment, 
 name varchar(20) not null,
 age int DEFAULT 18,
 class_id bigint,
 foreign key (class_id) references class(id) # 創(chuàng)建外鍵約束
);

當(dāng)子表中存在對(duì)主表的依賴的時(shí)候,不能刪除主表中相應(yīng)的記錄,匯報(bào)一個(gè)主外鍵關(guān)系的錯(cuò)誤。如果要?jiǎng)h除主表中記錄要先刪除子表中記錄。

CHECK 約束可以應(yīng)?于?個(gè)或多個(gè)列,?于限制列中可接受的數(shù)據(jù)值,從?確保數(shù)據(jù)的完整性和準(zhǔn)確性。 在8.0.16開(kāi)始全??持CHECK約束,之前的版本會(huì)忽略CHECK的定義

# 加?CHECK約束
create table student(
 id bigint PRIMARY KEY auto_increment, # 設(shè)置?增主鍵
 name varchar(20) not null,
 age int DEFAULT 18,
 gender char(1),
 check (age >= 16),
 check (gender = '男' or gender = '?')
);

自增類(lèi)型

可以讓數(shù)據(jù)庫(kù)來(lái)維護(hù)主鍵的增長(zhǎng),在插入的時(shí)候先找最大值,然后在這個(gè)基礎(chǔ)上加1,生成一個(gè)新的值,做為一個(gè)新數(shù)據(jù)行的主鍵的值。

在設(shè)置了自增后,也可以指定一個(gè)主鍵值插入,只要不重復(fù)即可。

由于主鍵自增是在最大值的基礎(chǔ)上加1,那么主鍵值在數(shù)據(jù)表中可能是不連續(xù)的。

注意:正常寫(xiě)入數(shù)據(jù)時(shí),主鍵自增。如果寫(xiě)入數(shù)據(jù)的時(shí)候,由于某種原因報(bào)錯(cuò)了(主外鍵約束,語(yǔ)法…),也會(huì)生成一個(gè)主鍵值,但記錄不會(huì)成功寫(xiě)入,這個(gè)主鍵值也會(huì)被視為已使用。下一次寫(xiě)入數(shù)據(jù)時(shí),就會(huì)發(fā)現(xiàn)主鍵值不連續(xù)的現(xiàn)象

總結(jié)

  1. NOT NULL 非空約束,被指定 NOT NULL 的列,值不允許為空(必填)
  2. UNIQUE 唯一約束,這個(gè)列里的值在表中是唯一的,也就是說(shuō)不能重復(fù)
  3. PRIMARY KEY 主鍵約束,可以看做是 NOT NULL 和 UNIQUE 的組合,可以用一個(gè) bigint 類(lèi)型列為表單獨(dú)指定主鍵,同時(shí)也可以指定主鍵自增,用 auto_increment 關(guān)鍵字,自增操作時(shí),會(huì)找到當(dāng)前列中最大的值,然后在這個(gè)基礎(chǔ)上加 1(+1)
  4. DEFAULT 默認(rèn)約束,如果寫(xiě)入一行記錄的時(shí)候,指定了默認(rèn)約束的列,如果在寫(xiě)入數(shù)據(jù)時(shí)沒(méi)有指定一個(gè)確定的值就會(huì)用默認(rèn)值進(jìn)行填充該字段的值
  5. FOREIGN KEY 外鍵約束,一張表要與另一張表的主鍵或唯一鍵進(jìn)行關(guān)聯(lián),說(shuō)明表與表之間的關(guān)聯(lián)關(guān)系

到此這篇關(guān)于MySQL中的約束詳解的文章就介紹到這了,更多相關(guān)mysql約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL數(shù)據(jù)表字段內(nèi)容的批量修改、清空、復(fù)制等更新命令

    MySQL數(shù)據(jù)表字段內(nèi)容的批量修改、清空、復(fù)制等更新命令

    MySQL數(shù)據(jù)表字段內(nèi)容的批量修改、清空、復(fù)制等更新命令,需要的朋友可以參考下。
    2011-08-08
  • Linux中安裝MySql 5.7.21的詳細(xì)操作步驟

    Linux中安裝MySql 5.7.21的詳細(xì)操作步驟

    這篇文章主要給大家介紹了關(guān)于在Linux中安裝MySql 5.7.21的詳細(xì)操作步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 詳解mysql建立索引的使用辦法及優(yōu)缺點(diǎn)分析

    詳解mysql建立索引的使用辦法及優(yōu)缺點(diǎn)分析

    索引是快速搜索的關(guān)鍵。MySQL索引的建立對(duì)于MySQL的高效運(yùn)行是很重要的。下面介紹mysql建立索引的優(yōu)缺點(diǎn)及常用使用方法。
    2016-07-07
  • MySQL Threads_running飆升與慢查詢的相關(guān)問(wèn)題解決

    MySQL Threads_running飆升與慢查詢的相關(guān)問(wèn)題解決

    這篇文章主要介紹了MySQL Threads_running飆升與慢查詢的問(wèn)題解決,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2021-05-05
  • 安裝mysql出錯(cuò)”A Windows service with the name MySQL already exists.“如何解決

    安裝mysql出錯(cuò)”A Windows service with the name MySQL already exis

    這篇文章主要介紹了安裝mysql出錯(cuò)”A Windows service with the name MySQL already exists.“如何解決的相關(guān)資料,在日常項(xiàng)目中此問(wèn)題比較多見(jiàn),特此把解決辦法分享給大家,供大家參考
    2016-05-05
  • mysql update語(yǔ)句的用法詳解

    mysql update語(yǔ)句的用法詳解

    本文詳細(xì)介紹了,mysql中update語(yǔ)句的用法,系統(tǒng)全面的學(xué)習(xí)下update更新語(yǔ)句的用法,有需要的朋友可以參考下
    2014-08-08
  • MySQL錯(cuò)誤:Can‘t?connect?to?MySQL?server?on?localhost解決辦法(分多種情況)

    MySQL錯(cuò)誤:Can‘t?connect?to?MySQL?server?on?localhost解決辦法

    這篇文章主要給大家介紹了關(guān)于MySQL錯(cuò)誤:Can‘t?connect?to?MySQL?server?on?localhost的解決辦法,文中介紹的方法分多種情況,通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Mysql中常用的幾種join連接方式總結(jié)

    Mysql中常用的幾種join連接方式總結(jié)

    join語(yǔ)句是面試中經(jīng)常會(huì)讓你現(xiàn)場(chǎng)寫(xiě)出來(lái)的語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于Mysql中常用的幾種join連接方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • MySQL5.7升級(jí)MySQL8.0的完整卸載與安裝及連接Navicat的步驟

    MySQL5.7升級(jí)MySQL8.0的完整卸載與安裝及連接Navicat的步驟

    因?yàn)橐粋€(gè)項(xiàng)目交接需要需要將mysql物理備份文件還原至MySQL5.7,并且將mysql5.7升級(jí)到MySQL8.0,下面這篇文章主要給大家介紹了關(guān)于MySQL5.7升級(jí)MySQL8.0的完整卸載與安裝及連接Navicat的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • mybatis中bind的使用示例詳解

    mybatis中bind的使用示例詳解

    在 MyBatis 中,bind?標(biāo)簽允許在 OGNL 表達(dá)式上下文中創(chuàng)建一個(gè)變量并將其綁定到當(dāng)前上下文,常用于動(dòng)態(tài) SQL 中簡(jiǎn)化復(fù)雜表達(dá)式或重復(fù)計(jì)算,這篇文章主要介紹了mybatis中bind的使用示例詳解,需要的朋友可以參考下
    2025-06-06

最新評(píng)論

响水县| 政和县| 离岛区| 仪征市| 枞阳县| 习水县| 通榆县| 武鸣县| 玛纳斯县| 双柏县| 蒙城县| 盐津县| 蕉岭县| 宜春市| 晋中市| 上虞市| 邵阳市| 巨野县| 黑龙江省| 蕉岭县| 上饶县| 宜宾市| 江陵县| 安达市| 哈巴河县| 乌鲁木齐市| 昌宁县| 桃源县| 宣恩县| 黄陵县| 双柏县| 许昌县| 清水河县| 琼结县| 张家港市| 凤阳县| 米易县| 安国市| 定安县| 宜兰市| 团风县|