PRIMARY KEY 主鍵限制 與 AUTO INCREMENT 欄位會自動遞增資料行的值

PRIMARY KEY 主鍵限制 (SQL PRIMARY KEY Constraint)

PRIMARY KEY 用來保證欄位在資料表中的唯一性,主鍵欄位中的每一筆資料在資料表中都必需是獨一無二的。
PRIMARY KEY 有點類似 UNIQUE 加上 NOT NULL。

一個資料表中只能有一個 PRIMARY KEY,但是可以有多個 UNIQUE。
將 users 資料表中的 id 欄位設為主鍵:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE TABLE `users` ( 
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
uId INT NOT NULL UNIQUE,
userName VARCHAR(30) NOT NULL,
userEmail VARCHAR(50) NOT NULL,
userPassword VARCHAR(30) NOT NULL,
userPhone VARCHAR(10) NOT NULL,
roleId INT NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deletedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE `users` (
id INT NOT NULL AUTO_INCREMENT,
uId INT NOT NULL,
userName VARCHAR(50) NOT NULL,
userEmail VARCHAR(30)NOT NULL,
userPassword VARCHAR(30) NOT NULL,
userPhone VARCHAR(10) NOT NULL,
roleId INT NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deletedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (id),
UNIQUE (uId)
);

參考:PRIMARY KEY 主鍵限制 (SQL PRIMARY KEY Constraint)

AUTO_INCREMENT 欄位會自動遞增資料行的值

AUTO INCREMENT 欄位會自動遞增資料行的值,因為每次新增資料時欄位值都會自動遞增也就是說 AUTO INCREMENT 欄位值會是唯一的,該欄位用途就像是一個識別碼或流水號,而 AUTO INCREMENT 常與 Primary Key 一起搭配使用。
將 users 資料表中的 id 欄位 AUTO INCREMENT 欄位會自動遞增資料行的值,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE TABLE `users` ( 
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
uId INT NOT NULL UNIQUE,
userName VARCHAR(30) NOT NULL,
userEmail VARCHAR(50) NOT NULL,
userPassword VARCHAR(30) NOT NULL,
userPhone VARCHAR(10) NOT NULL,
roleId INT NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deletedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE `users` (
id INT NOT NULL AUTO_INCREMENT,
uId INT NOT NULL,
userName VARCHAR(50) NOT NULL,
userEmail VARCHAR(30)NOT NULL,
userPassword VARCHAR(30) NOT NULL,
userPhone VARCHAR(10) NOT NULL,
roleId INT NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deletedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (id),
UNIQUE (uId)
);
參考:AUTO INCREMENT 欄位 (SQL AUTO INCREMENT column)

建立一個新資料庫

SQL 語句不區分大小寫

1
CREATE DATABASE 新資料庫名稱;

參考:CREATE DATABASE 語法(Syntax)

創建table

1
2
3
4
5
6
CREATE TABLE 資料表名稱 (
欄位column_name1 欄位屬性data_type,
欄位column_name2 欄位屬性data_type,
欄位column_name3 欄位屬性data_type,
···
);
例如:建立資料表table 名稱 users
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE TABLE `users` ( 
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
uId INT NOT NULL UNIQUE,
userName VARCHAR(30) NOT NULL,
userEmail VARCHAR(50) NOT NULL,
userPassword VARCHAR(30) NOT NULL,
userPhone VARCHAR(10) NOT NULL,
roleId INT NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deletedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE `users` (
id INT NOT NULL AUTO_INCREMENT,
uId INT NOT NULL,
userName VARCHAR(50) NOT NULL,
userEmail VARCHAR(30)NOT NULL,
userPassword VARCHAR(30) NOT NULL,
userPhone VARCHAR(10) NOT NULL,
roleId INT NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deletedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (id),
UNIQUE (uId)
);
參考:CREATE TABLE 是我們在資料庫中用來建立一個新資料表的語法

新增資料至某資料表: INSERT INTO 是用來新增資料至某資料表 (table)

1
2
3
4
5
INSERT INTO table_name (column1, column2, column3...)
VALUES (value1, value2, value3...);
or
INSERT INTO table_name
VALUES (value1, value2, value3...);
例如:新增資料至users資料表
1
INSERT INTO `users`(`uId`, `userName`, `userEmail`, `userPassword`, `userPhone`, `roleId`, `createdAt`, `updatedAt`, `deletedAt`) VALUES ('1735223063','laraHuang','laraHuang@gmail.com','Lara123456','0910123456','1735223063','2024-12-26 22:24:23','2024-12-26 22:24:23','2024-12-26 22:24:23')

參考:INSERT INTO 是用來新增資料至某資料表 (table)