標籤:
接著上一篇部落格,這一次我們初步瞭解一些MySQL資料庫中的約束。
六自動編號
AUTO_INCREMENT
自動編號的欄位,必須與主鍵組合使用。預設情況下,起始值為1,每次的增量為1。
例子:
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
INSERT tb3(username) VALUES(‘Tom‘);
INSERT tb3(username) VALUES(‘Rose‘);
INSERT tb3(username) VALUES(‘John‘);
INSERT tb3(username) VALUES(‘James‘);
SHOW COUMNS FROM tb3;
SELECT * FROM tb3;
結果中顯示,我們定義的自動編號欄位id是按照插入的記錄的多少來進行從1開始增1自動編號的。
七初涉主鍵約束
PRIMARY KEY
主鍵約束要求:每張資料表只能存在一個主鍵;主鍵保證記錄的唯一性;主鍵自動為NOT NULL。
AUTO_INCREMENT欄位必須定義為主鍵,而主鍵不一定與AUTO_INCREMENT一起使用。
AUTO_INCREMENT欄位我們不用賦值,但是主鍵欄位可以允許自行賦值,但是不允許存在兩個相同的值。
例子:
CREATE TABLE tb4(
id SMALLINT UNSIGNED PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
INSERT tb4 VALUES(4,‘Tom‘);
INSERT tb4 VALUES(22,‘Rose‘);
SHOW COUMNS FROM tb4;
SELECT * FROM tb4;
再來測試是否可以允許插入有兩個相同id欄位的值的記錄呢?
INSERT tb4 VALUES(22,‘John‘);
八初涉唯一主鍵
UNIQUE KEY
唯一約束要求:唯一約束可以保證記錄的唯一性;唯一約束的欄位可以為空白值(NULL);每張資料表可以存在多個
唯一約束。
例子:
CREATE TABLE tb5(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL UNIQUE KEY,
age TINYINT UNSIGNED
);
SHOW COLUMNS FROM tb5;
INSERT tb5(username,age) VALUES(‘Tom‘,22);
我們再次插入相同的記錄:
INSERT tb5(username,age) VALUES(‘Tom‘,22);
九初涉預設約束
DEFAULT
當插入記錄時,如果沒有明確為欄位賦值,則自動賦值為預設值。
例子(下面的1表示男,2表示女,3表示未知):
CREATE TABLE tb6(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL UNIQUE KEY,
sex ENUM(‘1‘,‘2‘,‘3‘) DEFAULT ‘3‘
);
SHOW COLUMNS FROM tb6;
INSERT tb6(username) VALUES(‘Tom‘);
SELECT * FROM tb6;
十擴充
如果AUTO_INCREMENT和UNIQUE KEY放在一起使用就會變成了PRIMARY KEY,這是不是存在呢?
例子:
CREATE TABLE tb7(
id SMALLINT UNSIGNED AUTO_INCREMENT UNIQUE KEY,
username VARCHAR(30) NOT NULL
);
SHOW COLUMNS FROM tb7;
驗證了一下,確實存在。
接下來,會詳細的介紹MySQL資料庫的約束和操作資料表的知識。
MySQL學習8:操作資料表(二)