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

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

Số trong ngoặc (1) hoặc (2) chỉ là độ rộng hiển thị (display width), KHÔNG ảnh hưởng đến phạm vi lưu trữ.

  • Cả TINYINT(1) và TINYINT(2) đều chiếm 1 byte.
  • Phạm vi: -128 đến 127 (signed) hoặc 0 đến 255 (unsigned).

Chỉ thấy khác biệt khi dùng ZEROFILL (tự động thêm 0 ở đầu):

CREATE TABLE tinyIntDemo (
    Number1 TINYINT(1) ZEROFILL,
    Number2 TINYINT(2) ZEROFILL
);
INSERT INTO tinyIntDemo VALUES (1, 1);
SELECT * FROM tinyIntDemo;

Kết quả

+---------+---------+
| Number1 | Number2 |
+---------+---------+
|       1 |      01 |
+---------+---------+

Kết luận: Không có khác biệt về lưu trữ, hiệu năng, phạm vi. Chỉ khác hiển thị khi có ZEROFILL. Từ MySQL 8.0.17, ZEROFILL và display width bị deprecated (khuyến cáo không dùng).