UNSIGNED------無符號,沒有負數,從0開始
ZEROFILL-------零填充,當數據的顯示長度不夠的時候可以使用前補0的效果填充至指定長度,字段會自動添加UNSIGNED
NOT NULL------非空約束,也就是插入值的時候這個字段必須要給值,值不能為空
DEFAULT------默認值,如果插入記錄的時候沒有給字段賦值,則使用默認值
PRIMARY KEY------主鍵,標識記錄的唯一性,值不能重復,一個表只能有一個主鍵,自動禁止為空
AUTO_INCREMENT------自動增長,只能用於數值列,而且配合索引使用,默認起始值從1開始,每次增長1
UNIQUE KEY------唯一性,一個表中可以有多個字段是唯一索引,同樣的值不能重復,但是NULL值除外
FOREIGN KEY------外鍵約束
-- 測試主鍵 CREATE TABLE test_primary_key( id INT UNSIGNED PRIMARY KEY, username VARCHAR(20) ); INSERT test_primary_key(id,username) VALUES(1,'NAME1'); INSERT test_primary_key(id,username) VALUES(1,'name2'); INSERT test_primary_key(username) VALUES('name3'); CREATE TABLE test_primary_key1( id INT UNSIGNED KEY, username VARCHAR(20) ); CREATE TABLE test_primary_key2( id INT UNSIGNED, username VARCHAR(20), PRIMARY KEY(id) ); -- CREATE TABLE test_primary_key3( -- id INT UNSIGNED PRIMARY KEY, -- courseId INT UNSIGNED PRIMARY KEY, -- username VARCHAR(20), -- email VARCHAR(50) -- ); -- 復合主鍵 CREATE TABLE test_primary_key3( id INT UNSIGNED, courseId VARCHAR(20), username VARCHAR(20), email VARCHAR(50), PRIMARY KEY(id,courseId) ---<<---相當於通過id 和 courseId 都可以定位到要查詢的記錄 ); -- 1-a INSERT test_primary_key3(id,courseId,username,email) VALUES(1,1,'xiaoming','8@qq.com'); INSERT test_primary_key3(id,courseId,username,email) VALUES(2,1,'xiaohong','71946@qq.com'); INSERT test_primary_key3(id,courseId,username,email) VALUES(3,1,'張三','3946@qq.com'); INSERT test_primary_key3(id,courseId,username,email) VALUES(4,1,'李四','17@qq.com'); -- 測試AUTO_INCREMENT CREATE TABLE test_auto_increment( id INT UNSIGNED KEY AUTO_INCREMENT, username VARCHAR(20) );
-- id INT UNSIGNED KEY AUTO_INCREMENT 中有AUTO_INCREMENT時一定要有KEY, 否則會報錯.
INSERT test_auto_increment(username) VALUES('A'); INSERT test_auto_increment(username) VALUES('B'); INSERT test_auto_increment(username) VALUES('C'); INSERT test_auto_increment(id,username) VALUES(NULL,'E'); INSERT test_auto_increment(id,username) VALUES(DEFAULT,'F');
INSERT test_auto_increment(id,username) VALUES('','M');--報錯, 不能為''; INSERT test_auto_increment(id,username) VALUES(15,'G');--此刻id從15開始編號
mysql> select * from test_primary_key3; +----+----------+----------+-------------+ | id | courseId | username | email | +----+----------+----------+-------------+ | 1 | 1 | xiaoming | 8@qq.com | | 2 | 1 | ?? | 3946@qq.com | | 4 | 1 | 李四 | 17@qq.com | +----+----------+----------+-------------+ 3 rows in set (0.00 sec) mysql> CREATE TABLE test_auto_increment( -> id INT UNSIGNED KEY AUTO_INCREMENT, -> username VARCHAR(20) -> ); Query OK, 0 rows affected (0.01 sec) mysql> DESC test_auto_increment; +----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(20) | YES | | NULL | | +----------+------------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec)
INSERT test_auto_increment(username) VALUES('A'); INSERT test_auto_increment(username) VALUES('B'); INSERT test_auto_increment(username) VALUES('C'); INSERT test_auto_increment(id,username) VALUES(NULL,'E'); INSERT test_auto_increment(id,username) VALUES(DEFAULT,'F'); INSERT test_auto_increment(id,username) VALUES(15,'G');
mysql> SELECT * FROM test_auto_increment;
+----+----------+
| id | username |
+----+----------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | E |
| 5 | F |
| 15 | G |
+----+----------+
6 rows in set (0.00 sec)