Kiểu dữ liệu SERIAL trong MySQL: Alias của BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
SERIAL không phải kiểu dữ liệu riêng biệt - nó là tên gọi tắt (alias) cho tổ hợp: BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. Do đó không nên thêm NOT NULL sau SERIAL.
1. Tạo bảng với cột SERIAL
mysql> CREATE TABLE DemoTable (
Id SERIAL
);
2. Chèn dữ liệu không chỉ định giá trị Id
mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES ();
3. Xem kết quả
mysql> SELECT * FROM DemoTable;
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | +----+
Phân tích thành phần SERIAL:
| Thành phần | Ý nghĩa |
|---|---|
| BIGINT | Số nguyên 8 byte (-9 quintillion đến +9 quintillion), đủ lớn cho ID |
| UNSIGNED | Chỉ số dương (0 đến 18 quintillion), gấp đôi phạm vi dương |
| NOT NULL | Không cho phép giá trị NULL (đã có sẵn) |
| AUTO_INCREMENT | Tự động gán 1,2,3... khi INSERT không chỉ định giá trị |
| UNIQUE | Đảm bảo không trùng lặp (Primary Key ngầm định) |
So sánh:
-- Tương đương hoàn toàn: CREATE TABLE t1 (id SERIAL); CREATE TABLE t2 (id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE);
Lưu ý: SERIAL thường dùng cho Primary Key. Nếu cần tên cột khác: Id SERIAL PRIMARY KEY (UNIQUE thừa nhưng rõ ràng hơn).