MySQL----主鍵(PRIMARY KEY)和自增(AUTO INCREMENT)


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)

 


免責聲明!

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



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