Khác biệt cơ bản chỉ nằm ở quy ước đặt tên (semantics). Cả hai là synonyms (tương đương).
- Cần true/false → dùng
BOOLEAN - Cần 0/1 → dùng
TINYINT(1)
Ví dụ BOOLEAN
mysql> CREATE TABLE BooleanDemo (Light BOOLEAN); Query OK, 0 rows affected (0.52 sec) mysql> INSERT INTO BooleanDemo VALUES(TRUE); Query OK, 1 row affected (0.12 sec) mysql> SELECT * FROM BooleanDemo;
+-------+ | Light | +-------+ | 1 | +-------+ 1 row in set (0.00 sec)
Ví dụ TINYINT(1)
mysql> CREATE TABLE Tinyint1Demo (Light TINYINT(1)); Query OK, 0 rows affected (0.58 sec) mysql> INSERT INTO Tinyint1Demo VALUES(1); Query OK, 1 row affected (0.12 sec) mysql> SELECT * FROM Tinyint1Demo;
+-------+ | Light | +-------+ | 1 | +-------+ 1 row in set (0.00 sec)
Lưu ý: MySQL lưu BOOLEAN dưới dạng TINYINT(1). TRUE = 1, FALSE = 0. Chỉ khác ở mặt ngữ nghĩa.