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

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

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

導讀

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

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

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

在邏輯上這顯然是不成立的,因為學生的名字不能是null。

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

約束類型

一共有這幾種:

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

接下來,妖妖介紹:

1、not null(不能為空)

語法形式:

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

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

此時還想插入一個名字為null的學生就不可能了:

注意事項:

1、name的默認值不能是NULL了:

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

2、unique(唯一)

語法形式:

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

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

注意:

unique允許有多個NULL值,而不報錯。

3、default(默認值約束)

語法形式:

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

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

4、primary key(唯一)與unique

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

相同點

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

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

不同點

1.unique允許插入相同的NULL值,因為MySQL認為NULL無法比較,因此不相等。

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

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

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

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

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

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

auto_increment

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

MySQL 中用于自動生成唯一標識符的屬性。

語法:

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

 結果:

也就是說,id默認從1,開始,然后順序增加。

注意:

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

在使用auto_increment:

那么id將會從101開始遞增:

5、foreign key(外鍵)

語法形式

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

看不懂沒關系,等一下有栗子吃。

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

功能

有這樣兩個表,一個存儲班級:

一共只有三個班級,請記住。

接下來一個表,用來存儲學生:

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

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

同時,父表也可能會被子表約束:

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

然后刪除父表對應的行數(shù)據(jù),將會報錯:

6、check——了解即可

語法:

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

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

但是,MySQL并不支持check關鍵字的使用,即使它可以用代碼執(zhí)行,但是實際運行時,會自動忽略。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

    mysql?binlog?回滾示例解析

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

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

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

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

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

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

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

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

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

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

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

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

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

    mysql查詢字段類型為json時的兩種查詢方式

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

最新評論

上林县| 九江市| 阳西县| 德江县| 云浮市| 宁陕县| 南皮县| 巨鹿县| 光泽县| 新沂市| 阿尔山市| 喀喇沁旗| 和林格尔县| 天水市| 鄱阳县| 霍林郭勒市| 和平县| 察隅县| 松溪县| 滦平县| 从江县| 定远县| 榆中县| 来安县| 盈江县| 台前县| 和林格尔县| 吴堡县| 鄂托克旗| 汽车| 砚山县| 商都县| 镇平县| 镇江市| 慈利县| 门头沟区| 且末县| 万宁市| 弋阳县| 沙坪坝区| 沽源县|