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,
……
);