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

MySQL表的約束示例詳解

 更新時間:2025年12月01日 14:32:08   作者:s***4113  
文章詳細(xì)介紹了數(shù)據(jù)庫約束的種類,包括非空約束、默認(rèn)值、列描述、主鍵(單主鍵和復(fù)合主鍵)、自增長、唯一鍵和外鍵,這些約束確保了數(shù)據(jù)庫中數(shù)據(jù)的完整性、合法性和可預(yù)期性,對mysql表的約束相關(guān)知識感興趣的朋友跟隨小編一起看看吧

一.概念

真正約束字段的是數(shù)據(jù)類型,但是數(shù)據(jù)類型約束很單一,需要有一些額外的約束,更好的保證數(shù)據(jù)的合****法性。

表的約束:表中一定要有各種約束,通過約束,讓我們未來插入數(shù)據(jù)庫表中的數(shù)據(jù)是符合預(yù)期的。

約束的本質(zhì)是通過技術(shù)手段,倒逼程序員去插入正確的數(shù)據(jù)。

約束的最終目的,就是保證數(shù)據(jù)的完整性和可預(yù)期性

二.非空約束

非空約束有兩個值:null(默認(rèn)的)和not null(不為空)。

數(shù)據(jù)庫中默認(rèn)創(chuàng)建的字段,如果不添加非空約束,基本都是可以為空,但是實際開發(fā)時,有些字段可能被要求必須添加數(shù)據(jù),因此必須設(shè)置為非空。同時應(yīng)該盡可能保證字段不為空,因為數(shù)據(jù)為空沒辦法參與運(yùn)算。

設(shè)置非空約束,需要在添加表格字段時,在后邊追加上 “not null”。當(dāng)某字段被設(shè)置非空后,如果添加數(shù)據(jù)時,未對該字段進(jìn)行數(shù)據(jù)添加,就會添加失敗。

三.默認(rèn)值

默認(rèn)值:某一種數(shù)據(jù)會經(jīng)常性的出現(xiàn)某個具體的值,可以在一開始就指定好,在需要真實數(shù)據(jù)的時候,用戶可以選擇性的使用默認(rèn)值。

設(shè)置默認(rèn)值,需要在字段后追加**“default 默認(rèn)值”,此后如果添加數(shù)據(jù)時未對該字段添加數(shù)據(jù),就會使用默認(rèn)值去填充數(shù)據(jù)**。

四.列描述

列描述:comment,沒有實際含義,專門用來描述字段,會根據(jù)表創(chuàng)建語句保存,用來給程序員或DBA來進(jìn)行了解。例如:

name varchar(20) not null comment ‘姓名';

五.主鍵

1.單主鍵

主鍵:primary key用來唯一的約束該字段里面的數(shù)據(jù),不能重復(fù),不能為空,一張表中最多只能有一個主鍵;主鍵所在的列通常是整數(shù)類型。

可以在創(chuàng)建表時即在字段后追加 “primary key” 設(shè)置該字段為主鍵字段。

添加數(shù)據(jù)時,主鍵字段不能為空,也不能出現(xiàn)數(shù)據(jù)重復(fù)。

創(chuàng)建表后,如果沒有設(shè)置主鍵字段,同樣可以追加設(shè)置

alter table 表名 add primary key(字段列表)

刪除主鍵

alter table 表名 drop primary key;

2.復(fù)合主鍵

MySQL規(guī)定一張表中主鍵只有一個,但是這不代表主鍵只能是一個字段,多個字段可以同時為主鍵,稱為復(fù)合主鍵。

創(chuàng)建復(fù)合主鍵,可以在創(chuàng)建表時,通過 “primary key(字段,字段…)” 的方式,例如:

primary key(id, class_room)

注意必須是新的一行代碼。

也可以通過上述追加的方式創(chuàng)建

alter table 表名 add primary key(字段,字段)

注意如果已經(jīng)存在一個單字段主鍵,必須先刪除該主鍵,才能重新創(chuàng)建復(fù)合主鍵。

復(fù)合主鍵中,其單獨(dú)的字段中,數(shù)據(jù)可以重復(fù),但是多個字段組成的數(shù)據(jù)集中,數(shù)據(jù)不能重復(fù)。

例如:先添加了一個(id,class_room)為(1,‘111’),的數(shù)據(jù),就不能添加第二個(1,‘111’),但是可以添加(1,‘112’)或(2,‘111’)。

六.自增長

auto_increment:當(dāng)對應(yīng)的字段被設(shè)置自增長后,如果不添加數(shù)據(jù),會自動的被系統(tǒng)觸發(fā),系統(tǒng)會從當(dāng)前字段中已經(jīng)有的最大值+1操作,得到一個新的不同的值。必須和主鍵搭配使用,作為邏輯主鍵。

自增長的特點(diǎn):

  • 任何一個字段要做自增長,前提是本身是一個索引(key一欄有值)
  • 自增長字段必須是整數(shù)
  • 一張表最多只能有一個自增長

自增長可以在創(chuàng)建表時直接在對應(yīng)的主鍵字段后追加 “auto_increment”

自增長默認(rèn)會從1開始,也可以在創(chuàng)建表時,在最后追加**“auto_increment=xxx”**,來設(shè)置自增長的初始值。

在插入后獲取上次插入的 AUTO_INCREMENT 的值(批量插入時獲取的是第一個值):

select last_insert_id();

七.唯一鍵

一張表中有往往有很多字段需要唯一性,數(shù)據(jù)不能重復(fù),但是一張表中只能有一個主鍵,唯一鍵就可以解決表中有多個字段需要唯一性約束的問題。

唯一鍵的本質(zhì)和主鍵差不多,唯一鍵允許為空,而且可以多個為空,空字段不做唯一性比較。

創(chuàng)建唯一鍵,可以在字段后追加**“unique” 。**

八.外鍵

外鍵用于定義主表和從表之間的關(guān)系:外鍵約束是指一個相同的字段,同時存在于兩張表中,比如學(xué)生表中存在一個“班級號字段”,班級表中同樣存在一個“班級號字段”,通過該字段將兩張表在邏輯上合二為一。

其中外鍵約束字段要定義在從表上該字段在主表上則必須有主鍵約束或****unique 約束。當(dāng)定義外鍵后,要求外鍵列數(shù)據(jù)必須在主表的主鍵列存在或為null。

創(chuàng)建外鍵需要在從表中定義下述語句:

foreign key (字段名) references 主表(列);

一般來說,主表要包含從表,比如班級中包含學(xué)生,所以班級表為主表,學(xué)生表為從表。

外鍵約束的主要作用:

外鍵約束,主要是同時規(guī)范兩張表格的數(shù)據(jù)準(zhǔn)確性,例如如果在班級表中,只有班級id為101和102的兩個班級,那么在學(xué)生表中,如果添加班級id為103的數(shù)據(jù)信息,顯然是不合常理的,在外鍵約束下,添加數(shù)據(jù)就會失敗。

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

相關(guān)文章

  • 利用JuiceFS使MySQL?備份驗證性能提升?10?倍

    利用JuiceFS使MySQL?備份驗證性能提升?10?倍

    這篇文章主要介紹了如何讓?MySQL?備份驗證性能提升?10?倍,JuiceFS?非常適合用來做?MySQL?物理備份,通過不斷調(diào)整?XtraBackup?的參數(shù)和?JuiceFS?的掛載參數(shù),在一個小時內(nèi)將時間縮短到原先的?1/10,下文一起來看相關(guān)內(nèi)容的詳細(xì)介紹吧
    2022-03-03
  • MySQL中JOIN算法的具體使用

    MySQL中JOIN算法的具體使用

    JOIN操作是SQL查詢中至關(guān)重要的部分,它能夠?qū)⒍鄠€表中的數(shù)據(jù)根據(jù)指定的條件組合起來,本文主要介紹了MySQL中JOIN算法的具體使用,感興趣的可以了解一下
    2024-08-08
  • MySQL提示Accessdeniedforuser‘‘@‘localhost‘”的解決方案

    MySQL提示Accessdeniedforuser‘‘@‘localhost‘”的解決方案

    在使用MySQL數(shù)據(jù)庫的過程中,有時會遇到錯誤提示:“Access denied for user ''@'localhost'”,這個錯誤通常意味著MySQL服務(wù)器拒絕了當(dāng)前用戶的連接請求,本文將詳細(xì)探討該問題的原因及解決方法,需要的朋友可以參考下
    2025-01-01
  • 通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的全流程

    通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的全流程

    .ibd 文件是 InnoDB 存儲引擎的核心數(shù)據(jù)文件,存儲表的行數(shù)據(jù)、索引及元信息,本文主要為大家介紹了通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的全流程,需要的朋友可以參考下
    2025-11-11
  • MySQL觸發(fā)器的使用和inserted和deleted表介紹

    MySQL觸發(fā)器的使用和inserted和deleted表介紹

    這篇文章主要介紹了MySQL觸發(fā)器的使用和inserted和deleted表,觸發(fā)器,就是一種特殊的存儲過程,觸發(fā)器和存儲過程一樣是一個能夠完成特定功能和存儲在數(shù)據(jù)庫服務(wù)器上的SQL片段,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16

    macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16

    這篇文章主要為大家詳細(xì)介紹了macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL常用類型轉(zhuǎn)換函數(shù)總結(jié)(推薦)

    MySQL常用類型轉(zhuǎn)換函數(shù)總結(jié)(推薦)

    這篇文章主要介紹了MySQL常用類型轉(zhuǎn)換函數(shù)總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MySQL中sum函數(shù)使用的實例教程

    MySQL中sum函數(shù)使用的實例教程

    這篇文章主要給大家介紹了關(guān)于MySQL中sum函數(shù)使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL多表關(guān)聯(lián)查詢相關(guān)練習(xí)題

    MySQL多表關(guān)聯(lián)查詢相關(guān)練習(xí)題

    這篇文章主要給大家介紹了關(guān)于MySQL多表關(guān)聯(lián)查詢的相關(guān)資料,在MySQL中JOIN語句是實現(xiàn)多表關(guān)聯(lián)查詢的關(guān)鍵,它可以將多個表格中符合條件的數(shù)據(jù)連接在一起,從而提供一個完整的查詢結(jié)果,需要的朋友可以參考下
    2023-10-10
  • MySQL的UPDATE(更新數(shù)據(jù))及語法詳解

    MySQL的UPDATE(更新數(shù)據(jù))及語法詳解

    MySQL的UPDATE語句是用于修改數(shù)據(jù)庫表中已存在的記錄,本文將詳細(xì)介紹UPDATE語句的基本語法、高級用法、性能優(yōu)化策略以及注意事項,幫助您更好地理解和應(yīng)用這一重要的SQL命令,感興趣的朋友跟隨小編一起看看吧
    2025-11-11

最新評論

德惠市| 岳普湖县| 武川县| 保山市| 盖州市| 万载县| 会泽县| 文化| 博乐市| 静海县| 惠东县| 阿克陶县| 通海县| 烟台市| 咸阳市| 浠水县| 大同市| 托克逊县| 斗六市| 仁布县| 柘荣县| 洮南市| 黔江区| 新龙县| 津南区| 进贤县| 定安县| 金昌市| 太仆寺旗| 大洼县| 黄冈市| 循化| 连州市| 娄底市| 阿鲁科尔沁旗| 砀山县| 馆陶县| 肇州县| 滁州市| 喜德县| 自贡市|