Cú pháp chuẩn
CREATE TABLE ten_bang (
ten_cot INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ten_cot)
);
Ví dụ với ZEROFILL (điền số 0 đầu)
mysql> CREATE TABLE DemoTable (
UserId INT(6) ZEROFILL NOT NULL AUTO_INCREMENT,
PRIMARY KEY(UserId)
);
Chèn dữ liệu (không chỉ định UserId)
mysql> INSERT INTO DemoTable VALUES();
mysql> INSERT INTO DemoTable VALUES();
mysql> INSERT INTO DemoTable VALUES();
mysql> INSERT INTO DemoTable VALUES();
Kết quả
+--------+
| UserId |
+--------+
| 000001 |
| 000002 |
| 000003 |
| 000004 |
+--------+
Giải thích các từ khóa
| Từ khóa | Ý nghĩa |
INT(6) | Kiểu int, hiển thị 6 chữ số (chỉ ảnh hưởng hiển thị với ZEROFILL) |
ZEROFILL | Tự động điền số 0 ở đầu (ngầm hiểu UNSIGNED) |
NOT NULL | Bắt buộc có giá trị |
AUTO_INCREMENT | Tự động tăng giá trị |
PRIMARY KEY | Khóa chính (duy nhất, not null, index) |
Thêm AUTO_INCREMENT vào bảng đã có
ALTER TABLE DemoTable
MODIFY UserId INT(6) ZEROFILL NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (UserId);
Đặt giá trị bắt đầu AUTO_INCREMENT
-- Khi tạo bảng
CREATE TABLE DemoTable (
Id INT AUTO_INCREMENT PRIMARY KEY
) AUTO_INCREMENT = 1000;
-- Hoặc sau khi tạo
ALTER TABLE DemoTable AUTO_INCREMENT = 1000;
Lưu ý quan trọng
- Chỉ có một cột AUTO_INCREMENT mỗi bảng
- Cột AUTO_INCREMENT phải là khóa (PRIMARY KEY hoặc UNIQUE)
- Khi xóa dòng cuối, giá trị AUTO_INCREMENT không tự giảm (trừ TRUNCATE TABLE)
ZEROFILL đã deprecated từ MySQL 8.0.17, sẽ xóa trong tương lai
Thực hành tốt
CREATE TABLE users (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
-- BIGINT UNSIGNED: lên đến 18 tỷ tỷ, đủ lớn cho mọi ứng dụng
-- Không dùng ZEROFILL (deprecated)
-- Không dùng INT(6) - số trong ngoặc không giới hạn giá trị
);