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

MySQL中的數(shù)據(jù)庫約束用法及說明

 更新時(shí)間:2026年03月16日 14:11:11   作者:灰陽陽  
本文介紹了MySQL數(shù)據(jù)庫中的約束類型,包括notnull、unique、default、primary key、foreign key和check,這些約束類型用于實(shí)現(xiàn)對(duì)插入數(shù)據(jù)的管控,確保數(shù)據(jù)的完整性和邏輯性

導(dǎo)讀

在使用數(shù)據(jù)庫的時(shí)候,為了避免插入數(shù)據(jù)出錯(cuò),一般會(huì)對(duì)插入的數(shù)據(jù)進(jìn)行約束(限制)。

比如插入學(xué)生信息(包含學(xué)生名字):

如果不對(duì)插入的數(shù)據(jù)進(jìn)行約束,那么這種情況,也會(huì)插入成功:

在邏輯上這顯然是不成立的,因?yàn)閷W(xué)生的名字不能是null。

為此,MySQL中提供了約束類型,用來實(shí)現(xiàn)對(duì)插入數(shù)據(jù)的管控。

約束類型

一共有這幾種:

  • not null - 指示某列不能存儲(chǔ) NULL 值。
  • unique - 保證某列的每行必須有唯一的值。
  • default - 規(guī)定沒有給列賦值時(shí)的默認(rèn)值。
  • primary key - not nullunique 的結(jié)合。確保某列(或兩個(gè)列多個(gè)列的結(jié)合)有唯一標(biāo) 識(shí),有助于更容易更快速地找到表中的一個(gè)特定的記錄。
  • foreign key - 保證一個(gè)表中的數(shù)據(jù)匹配另一個(gè)表中的值的參照完整性。
  • check - 保證列中的值符合指定的條件。對(duì)于MySQL數(shù)據(jù)庫,對(duì)CHECK子句進(jìn)行分析,但是忽略 check子句。

接下來,妖妖介紹:

1、not null(不能為空)

語法形式:

create table 表名(id int ,name varchar(20) not null,score int);

舉例,創(chuàng)建一個(gè)表,名字這一列不能填NULL

此時(shí)還想插入一個(gè)名字為null的學(xué)生就不可能了:

注意事項(xiàng):

1、name的默認(rèn)值不能是NULL了:

2、不能將名字修改成NULL:

2、unique(唯一)

語法形式:

create table 表名(id int unique,name varchar(20),score int);

舉例,創(chuàng)建一個(gè)表,id不能重復(fù)

注意:

unique允許有多個(gè)NULL值,而不報(bào)錯(cuò)。

3、default(默認(rèn)值約束)

語法形式:

create table 表名(id int ,name varchar(20) default '自定義的默認(rèn)值',score int);

舉例,創(chuàng)建一個(gè)表,id的默認(rèn)值是-1,名字的默認(rèn)值是‘無姓名’:

4、primary key(唯一)與unique

primary key(一般叫主鍵)unique很像,被約束的列,都不能出現(xiàn)重復(fù)的值,但他們也有很多不同點(diǎn)。

相同點(diǎn)

1.唯一性:primary keyunique都確保了被修飾的列的值是唯一的。

2.索引:MySQL 會(huì)自動(dòng)為 PRIMARY KEY 和 UNIQUE 創(chuàng)建索引,以加快查詢速度。(索引如果沒學(xué)過,不用管,不要緊)

不同點(diǎn)

1.unique允許插入相同的NULL值,因?yàn)镸ySQL認(rèn)為NULL無法比較,因此不相等。

但primary key不允許插入相同的NULL值。

2.數(shù)量 primary key在一個(gè)表中,只能約束一列數(shù)據(jù):

但unique在一個(gè)表中可以約束多列數(shù)據(jù):

像這種約束,用的還是比較多的,比如說游戲的ID

五月份 L O L 的改名活動(dòng),不知道大家有沒有白.嫖:

像這種可以取重復(fù)ID的賬戶系統(tǒng),底層使用的就是primary key這類約束,既對(duì)id這一列進(jìn)行唯一約束,但是不對(duì)name這一列進(jìn)行唯一約束。

auto_increment

auto_increment是一個(gè)關(guān)鍵字,通常與primary key一起使用去約束整數(shù)類型的數(shù)據(jù),

MySQL 中用于自動(dòng)生成唯一標(biāo)識(shí)符的屬性。

語法:

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

 結(jié)果:

也就是說,id默認(rèn)從1,開始,然后順序增加。

注意:

如果圖中插入了一個(gè)id為100的數(shù)據(jù):

在使用auto_increment:

那么id將會(huì)從101開始遞增:

5、foreign key(外鍵)

語法形式

create table 表名(id int ,foreign key(id) references 另一個(gè)表的表名(表中一個(gè)字段) )

看不懂沒關(guān)系,等一下有栗子吃。

外鍵相對(duì)于前四個(gè),功能就有意思了,語法形式也和上面有所不同。

功能

有這樣兩個(gè)表,一個(gè)存儲(chǔ)班級(jí):

一共只有三個(gè)班級(jí),請(qǐng)記住。

接下來一個(gè)表,用來存儲(chǔ)學(xué)生:

此時(shí),父表(class)和子表(student)就建立了聯(lián)系。

子表,在插入數(shù)據(jù)的時(shí)候,受到父表的約束,班級(jí)號(hào)碼不能1、2、3以外的數(shù)字,否則報(bào)錯(cuò):

同時(shí),父表也可能會(huì)被子表約束:

子表先插入一個(gè)非法數(shù)據(jù):

然后刪除父表對(duì)應(yīng)的行數(shù)據(jù),將會(huì)報(bào)錯(cuò):

6、check——了解即可

語法:

實(shí)際上也是對(duì)插入數(shù)據(jù)進(jìn)行約束。

例如,上圖插入數(shù)據(jù)的price必須是正數(shù)才行,不然會(huì)報(bào)錯(cuò)。

但是,MySQL并不支持check關(guān)鍵字的使用,即使它可以用代碼執(zhí)行,但是實(shí)際運(yùn)行時(shí),會(huì)自動(dòng)忽略。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis mapper動(dòng)態(tài)代理的原理解析

    Mybatis mapper動(dòng)態(tài)代理的原理解析

    這篇文章主要介紹了Mybatis mapper動(dòng)態(tài)代理的原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • MySQL數(shù)據(jù)庫學(xué)習(xí)之排序與單行處理函數(shù)詳解

    MySQL數(shù)據(jù)庫學(xué)習(xí)之排序與單行處理函數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹一下MySQL數(shù)據(jù)庫中排序與單行處理函數(shù)的使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
    2022-07-07
  • mysql?binlog?回滾示例解析

    mysql?binlog?回滾示例解析

    嚴(yán)格來說mysqlbinlog 不能算回滾,他只是將過去的數(shù)據(jù)修改記錄 重新執(zhí)行一遍,但是從結(jié)果上來看,他也算把數(shù)據(jù)恢復(fù)到任意時(shí)間點(diǎn)了,這篇文章主要介紹了mysql?binlog回滾示例解析,需要的朋友可以參考下
    2023-08-08
  • MySQL 如何查詢 JSON 數(shù)組是否包含特定的值

    MySQL 如何查詢 JSON 數(shù)組是否包含特定的值

    本文給大家介紹MySQL 如何查詢 JSON 數(shù)組是否包含特定的值,假設(shè)定義了一張表 School,其中字段 stages 為 JSON 類型,本文通過實(shí)例代碼給大家詳細(xì)講解,感興趣的朋友一起看看吧
    2023-11-11
  • MySQL?8.0新功能監(jiān)控統(tǒng)計(jì)限制連接不再擔(dān)心被垃圾SQL搞爆內(nèi)存

    MySQL?8.0新功能監(jiān)控統(tǒng)計(jì)限制連接不再擔(dān)心被垃圾SQL搞爆內(nèi)存

    這篇文章主要介紹了MySQL?8.0新功能監(jiān)控統(tǒng)計(jì)限制連接不再擔(dān)心被垃圾SQL搞爆內(nèi)存詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • mysql安裝數(shù)據(jù)庫初始化失敗問題解決方法保姆級(jí)教程

    mysql安裝數(shù)據(jù)庫初始化失敗問題解決方法保姆級(jí)教程

    這篇文章主要給大家介紹了關(guān)于mysql安裝數(shù)據(jù)庫初始化失敗問題解決方法保姆級(jí)教程,包括更改電腦名稱、確保防火墻設(shè)置、清理殘留文件、檢查權(quán)限和配置文件等,需要的朋友可以參考下
    2025-01-01
  • Mysql實(shí)現(xiàn)范圍分區(qū)表(新增、刪除、重組、查看)

    Mysql實(shí)現(xiàn)范圍分區(qū)表(新增、刪除、重組、查看)

    MySQL分區(qū)表的四種類型(范圍、哈希、列表、鍵值),主要介紹了范圍分區(qū)的創(chuàng)建、查詢、添加、刪除及重組織操作,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-07-07
  • mysql中GROUP_CONCAT函數(shù)使用及遇到問題詳解

    mysql中GROUP_CONCAT函數(shù)使用及遇到問題詳解

    這篇文章主要給大家介紹了關(guān)于mysql中GROUP_CONCAT函數(shù)使用及遇到問題的相關(guān)資料,GROUP_CONCAT是用于將分組后的多個(gè)行連接為一個(gè)字符串的聚合函數(shù),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • mysql 5.7.9 winx64在windows上安裝遇到的問題

    mysql 5.7.9 winx64在windows上安裝遇到的問題

    mysql5.7.9版本以上在windwos上安裝時(shí)會(huì)遇到無法啟動(dòng)但是沒有任何報(bào)錯(cuò)的問題,怎么回事呢?接下來通過本文給大家介紹mysql 5.7.9 winx64在windows上安裝遇到的問題及解決方法,需要的朋友可以參考下
    2016-10-10
  • mysql查詢字段類型為json時(shí)的兩種查詢方式

    mysql查詢字段類型為json時(shí)的兩種查詢方式

    這篇文章主要介紹了mysql查詢字段類型為json時(shí)的兩種查詢方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論

天津市| 宁夏| 惠东县| 大渡口区| 延边| 咸宁市| 富平县| 镇巴县| 米泉市| 新疆| 屏山县| 延长县| 白玉县| 荆门市| 营口市| 庆阳市| 郧西县| 阿拉善右旗| 东光县| 汉源县| 咸宁市| 阿图什市| 子洲县| 浦东新区| 宁南县| 海门市| 阳东县| 广灵县| 获嘉县| 临泽县| 北票市| 汉川市| 新龙县| 乳源| 北宁市| 云安县| 城步| 启东市| 商水县| 蒙自县| 察隅县|