首頁技術文章正文

mysql數(shù)據(jù)庫約束有哪些?【Linux云計算+運維開發(fā)培訓】

更新時間:2021-05-26 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif

為了防止數(shù)據(jù)表中插入錯誤的數(shù)據(jù),在MySQL中,定義了一些維護數(shù)據(jù)庫完整性的規(guī)則,即表的約束。下表列舉了常見的表的約束。

1. 主鍵約束

在MySQL中,為了快速查找表中的某條信息,可以通過設置主鍵來實現(xiàn)。主鍵約束是通過PRIMARY KEY定義的,它可以唯一標識表中的記錄,這就好比身份證可以用來標識人的身份一樣。在MySQL中,主鍵約束分為兩種,具體如下。

1.1 單字段主鍵

單字段主鍵指的是由一個字段構成的主鍵,其基本的語法格式如下所示:

字段名 數(shù)據(jù)類型 PRIMARY KEY

【案例】

創(chuàng)建一個數(shù)據(jù)表example01,并設置id作為主鍵,SQL語句如下:

CREATE TABLE example01(id INT PRIMARY KEY,
                          name VARCHAR(20),
                          grade FLOAT);

上述SQL語句執(zhí)行后,example01表中創(chuàng)建了id、name和grade三個字段,其中,id字段是主鍵。

1.2 多字段主鍵

多字段主鍵指的是多個字段組合而成的主鍵,其基本的語法格式如下所示:

PRIMARY KEY (字段名1,字段名2,…,字段名n)

在上述格式中,“字段名1,字段名2,…,字段名n”指的是構成主鍵的多個字段的名稱。

【案例】 創(chuàng)建一個數(shù)據(jù)表example02,在表中將stu_id和course_id兩個字段共同作為主鍵,SQL語句如下:

CREATE TABLE example02(stu_id INT,
                       course_id INT,
                       grade FLOAT,
                       PRIMARY KEY(stu_id,course_id)
                       );

上述SQL語句執(zhí)行后,example02表中包含stu_id、course_id和grade三個字段,其中,stu_id和course_id兩個字段組合可以唯一確定一條記錄。

注意:每個數(shù)據(jù)表中最多只能有一個主鍵約束,定義為PRIMARY KEY的字段不能有重復值且不能為NULL值。

2. 非空約束

非空約束指的是字段的值不能為NULL,在MySQL中,非空約束是通過NOT NULL定義的,其基本的語法格式如下所示:

字段名 數(shù)據(jù)類型 NOT NULL;

【案例】 創(chuàng)建一個數(shù)據(jù)表example04,將表中的name字段設置為非空約束,SQL語句如下:

CREATE TABLE example04(id INT PRIMARY KEY,
                       name VARCHAR(20) NOT NULL,
                       grade FLOAT);

上述SQL語句執(zhí)行后,example04表中包含id、name和grade三個字段。其中,id字段為主鍵,name字段為非空字段。需要注意的是,在同一個數(shù)據(jù)表中可以定義多個非空字段。

3. 唯一約束

唯一約束用于保證數(shù)據(jù)表中字段的唯一性,即表中字段的值不能重復出現(xiàn)。唯一約束是通過UNIQUE定義的,其基本的語法格式如下所示:

字段名 數(shù)據(jù)類型 UNIQUE;

【案例】 創(chuàng)建一個數(shù)據(jù)表example05,將表中的stu_id設置為唯一約束,SQL語句如下:

CREATE TABLE example05(id INT PRIMARY KEY,
                       stu_id INT UNIQUE,
                       name VARCHAR(20) NOT NULL
                       );

上述SQL語句執(zhí)行后,example05表中包含id、stu_id和name三個字段。其中,id字段為主鍵,stu_id字段為唯一值,該字段的值不能重復,name字段的值不能為空值。

4. 默認約束

默認約束用于給數(shù)據(jù)表中的字段指定默認值,即當在表中插入一條新記錄時,如果沒有給這個字段賦值,那么,數(shù)據(jù)庫系統(tǒng)會自動為這個字段插入默認值。默認值是通過DEFAULT關鍵字定義的,其基本的語法格式如下所示:

字段名 數(shù)據(jù)類型 DEFAULT 默認值;

【案例】 創(chuàng)建一個數(shù)據(jù)表example06,將表中的grade字段的默認值設置為0,SQL語句如下:

CREATE TABLE example06(id INT PRIMARY KEY AUTO_INCREMENT,
                       stu_id INT UNIQUE,
                       grade FLOAT DEFAULT 0
                      );

上述SQL語句執(zhí)行后,example06表中包含id、stu_id和grade三個字段。其中,id字段為主鍵,stu_id字段的值唯一,grade字段的默認值為0。

5、外鍵約束(foreign key) FK

外鍵約束是用來加強兩個表(主表和從表)的一列或多列數(shù)據(jù)之間的連接的,可以保證一個或兩個表之間的參照完整性,外鍵是構建于一個表的兩個字段或是兩個表的兩個字段之間的參照關系。

創(chuàng)建外鍵約束的順序是先定義主表的主鍵,然后定義從表的外鍵。也就是說只有主表的主鍵才能被從表用來作為外鍵使用,被約束的從表中的列可以不是主鍵,主表限制了從表更新和插入的操作。

6、自增約束(AUTO_INCREMENT)

自增約束(AUTO_INCREMENT)可以約束任何一個字段,該字段不一定是PRIMARY KEY字段,也就是說自增的字段并不等于主鍵字段。

但是PRIMARY_KEY約束的主鍵字段,一定是自增字段,即PRIMARY_KEY 要與AUTO_INCREMENT一起作用于同一個字段。

當插入第一條記錄時,自增字段沒有給定一個具體值,可以寫成DEFAULT/NULL,那么以后插入字段的時候,該自增字段就是從1開始,沒插入一條記錄,該自增字段的值增加1。當插入第一條記錄時,給自增字段一個具體值,那么以后插入的記錄在此自增字段上的值,就在第一條記錄該自增字段的值的基礎上每次增加1。

也可以在插入記錄的時候,不指定自增字段,而是指定其余字段進行插入記錄的操作。



猜你喜歡:

猜你喜歡:

mysql索引如何使用?

MySQL和MariaDB有什么區(qū)別?

mysql5.5安裝教程:mysql下載與安裝

什么是mysql事務場景?

黑馬程序員Linux云計算+運維開發(fā)培訓課程

分享到:
在線咨詢 我要報名
和我們在線交談!