Số 1 trong ngoặc chỉ là độ rộng hiển thị (dùng với ZEROFILL), không ảnh hưởng đến kích thước lưu trữ hay phạm vi giá trị.
Khác biệt thực sự:
TINYINT: 1 byte, phạm vi -128 đến 127 (signed), 0-255 (unsigned)INT: 4 byte, phạm vi -2.147 tỷ đến 2.147 tỷ (signed)
Ví dụ độ rộng hiển thị với ZEROFILL:
mysql> CREATE TABLE intAndTinyint (
-> FirstNumber INT(1) ZEROFILL,
-> SecondNumber TINYINT(1) ZEROFILL
-> );
Chèn dữ liệu:
mysql> INSERT INTO intAndTinyint VALUES (1,1), (12,12), (123,123);
Kết quả (cả hai hiển thị giống nhau vì độ rộng 1):
mysql> SELECT * FROM intAndTinyint;
+-------------+--------------+ | FirstNumber | SecondNumber | +-------------+--------------+ | 1 | 1 | | 12 | 12 | | 123 | 123 | +-------------+--------------+
Tăng độ rộng để thấy rõ ZEROFILL (ví dụ INT(11) vs INT(13)):
mysql> CREATE TABLE intVsIntDemo (
-> Number1 INT(11) UNSIGNED ZEROFILL,
-> Number2 INT(13) UNSIGNED ZEROFILL
-> );
mysql> INSERT INTO intVsIntDemo VALUES (12345,6789), (3,2), (12,89), (123,6789), (1234,6789);
mysql> SELECT * FROM intVsIntDemo;
+-------------+---------------+ | Number1 | Number2 | +-------------+---------------+ | 00000012345 | 0000000006789 | | 00000000003 | 0000000000002 | | 00000000012 | 0000000000089 | | 00000000123 | 0000000006789 | | 00000001234 | 0000000006789 | +-------------+---------------+
Kết luận: Chọn TINYINT cho cờ/binary (0/1), INT cho số nguyên thông thường. Số trong ngoặc không quan trọng trừ khi dùng ZEROFILL.