Để lưu trữ ba giá trị 0, 1 và NULL, kiểu dữ liệu phù hợp nhất là TINYINT(1) UNSIGNED NULL.
Cú pháp
ten_cot TINYINT(1) UNSIGNED NULL;
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE StoreValue0and1orNULLDemo (
-> isDigit TINYINT(1) UNSIGNED NULL
-> );
Chèn 3 giá trị:
mysql> INSERT INTO StoreValue0and1orNULLDemo VALUES(0); mysql> INSERT INTO StoreValue0and1orNULLDemo VALUES(1); mysql> INSERT INTO StoreValue0and1orNULLDemo VALUES(NULL);
Kết quả:
+---------+ | isDigit | +---------+ | 0 | | 1 | | NULL | +---------+
Tại sao chọn TINYINT(1) UNSIGNED?
- TINYINT(1): Chỉ dùng 1 byte, phạm vi -128 đến 127 (signed) hoặc 0-255 (unsigned)
- UNSIGNED: Loại bỏ giá trị âm, phù hợp cho flag 0/1
- NULL: Cho phép giá trị NULL khi chưa xác định
- Tối ưu bộ nhớ và hiệu suất so với INT, BOOLEAN (alias của TINYINT(1))
Lưu ý: MySQL không có kiểu BOOLEAN riêng, BOOLEAN là alias của TINYINT(1).