SQL約束(主鍵約束、外鍵約束、自動遞增、不允許空值、值唯一、值默認、值限制范圍)


NOT NULL 不允許空值約束

NOT NULL 約束強制列不接受 NULL 值(NULL值就是沒有值或缺值)。NOT NULL 約束強制字段始終包含值,即不向字段添加值,就無法插入新記錄或者更新記錄,也就是在插入或更新行時該列必須有值。

注意:NULL值時沒有值,它不是空串、空格等。空串、空格等是一個有效的值,它不是無值。

CREATE TABLE 表名
(
    列名稱 數據類型以及長度 NOTNULL,
    ……
);

UNIQUE 唯一值約束

UNIQUE 約束唯一標識數據庫表中的每條記錄。UNIQUE 和 PRIMARY KEY 主鍵約束均為列或列集合提供了唯一性的保證。PRIMARY KEY 主鍵約束擁有自動定義的 UNIQUE 約束。

注意:每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。

CREATE TABLE 表名
(
    列名稱 數據類型以及長度 UNIQUE;
    ……
);
 
 
為多個列定義 UNIQUE 約束
方法一:(一次性指定)
CREATE TABLE 表名
(
    列名稱1 數據類型以及長度;
    列名稱2 數據類型以及長度;
    ……
    UNIQUE (列名稱1,列名稱2,……)
);
方法二:(分別對各個列進行指定)
CREATE TABLE 表名
(
    列名稱1 數據類型以及長度 UNIQUE;
    列名稱2 數據類型以及長度 UNIQUE;
    ……
);

PRIMARY KEY 主鍵約束

PRIMARY KEY 主鍵約束唯一標識數據庫表中的每條記錄。主鍵值必須唯一。

主鍵中只能使用不允許NULL值的列(即主鍵值不能為NULL值),允許NULL值的列不能作為唯一標識。

注意:建議每個表只有一個主鍵約束。

語法

CREATE TABLE 表名
(
    列名稱 數據類型以及長度 PRIMARY KEY;
    ……
);
 
 
為多個列定義 PRIMARY KEY 約束
CREATE TABLE 表名
(
    列名稱1 數據類型以及長度;
    列名稱2 數據類型以及長度;
    ……
    PRIMARY KEY(列名稱1,列名稱2,……)
);

FOREIGN KEY 外鍵約束

一個表中的 FOREIGN KEY 外鍵約束指向另一個表中的 PRIMARY KEY,即給 列名稱1 設置了外鍵約束,往列名稱1插入數據,這個數據一定是要在FORFIGN KEY后面所跟的那個參照表的列名稱中存在的值,外鍵約束了數據的完整性,不會插入錯誤的數據。

添加了外鍵之后,插入引用表的記錄要么必須被引用表中被引用列的某條記錄匹配,要么外鍵列的值必須設置為NULL。

每個表中的外鍵數目不限制唯一性,並且一個列只能引用一個外鍵,一個列可以被多個外鍵引用。

語法

CREATE TABLE 表名稱
(
    列名稱1 數據類型及長度,
    列名稱2 數據類型及長度 FOREIGN KEY REFERENCES 參照表的表名稱(參照表的列名稱)
    ……
)
 
 
MySQL使用語法
CREATE TABLE 表名
(
    列名稱 數據類型以及長度;
    ……
    FOREIGN KEY (列名稱) REFERENCES 參照表的表名稱(參照表的列名稱)
);
 
 
為多個列定義 FOREIGN KEY 約束
CREATE TABLE 表名
(
    列名稱1 數據類型以及長度;
    列名稱2 數據類型以及長度;
    ……
    FOREIGN KEY(列名稱1,列名稱2……) REFERENCES 參照表的表名稱(參照表的列名稱1,參照表的列名稱2)
);

CHECK 約束

CHECK 約束用於限制列中的值的范圍。如果對單個列定義 CHECK 約束,那么該列只允許特定的值。如果對一個表定義 CHECK 約束,那么此約束會在特定的列中對值進行限制。

為多個列定義CHECK約束應使用AND關鍵字進行連接。

語法

CREATE TABLE 表名稱
(
    列名稱 數據類型及數據長度 CHECK(值范圍條件),
    ……
);
 
 
為表中多個列定義 CHECK 約束
CREATE TABLE 表名稱
(
    列名稱1 數據類型及數據長度,
    列名稱2 數據類型及數據長度,
    ……
    CHECK(列名稱1值范圍條件 AND 列名稱2值范圍條件 AND ……)
);

DEFAULT 約束

DEFAULT 約束用於向列中插入默認值。如果沒有規定其他的值,那么會將默認值添加到所有的新記錄。

建議創建數據庫時使用默認值而不是允許值為NULL,這樣可以有助於數據庫管理和開發。

注意:大多數DBMS不允許使用函數作為默認值,只支持常量。

CREATE TABLE 表名稱
(
    列名稱 數據類型及數據長度 DEFAULT 常量值,
    ……
);

AUTO_INCREMENT 自動遞增約束

AUTO_INCREMENT可以在新記錄插入表中時自動地創建唯一的數值(即進行自動增量),並且每個表只允許一個AUTO_INCREMENT列,而且它必須被索引(如通過使用AUTO_INCREMENT成為主鍵)。

注意:AUTO_INCREMENT 的默認開始值是 1,每條新記錄自動遞增 1。

語法

CREATE TABLE 表名稱
(
列名稱 數據類型及數據長度 AUTO_INCREMENT,
……
);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM