Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Khác biệt giữa INT(1) và TINYINT(1) trong MySQL

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.