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

Kiểu dữ liệu MySQL nào dùng để lưu số âm? (TINYINT, SMALLINT, INT, BIGINT)

Để lưu trữ số nguyên có dấu (bao gồm cả số âm) trong MySQL, bạn sử dụng các kiểu số nguyên có dấu (signed integer types): TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT. Mặc định các kiểu này đều là SIGNED (có dấu) nếu không chỉ định UNSIGNED.

Phạm vi lưu trữ của các kiểu số nguyên có dấu

KiểuKích thước (byte)Phạm vi có dấu (SIGNED)
TINYINT1-128 đến 127
SMALLINT2-32,768 đến 32,767
MEDIUMINT3-8,388,608 đến 8,388,607
INT4-2,147,483,648 đến 2,147,483,647
BIGINT8-9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807

Ví dụ dùng TINYINT cho số âm

mysql> CREATE TABLE DemoTable (Number TINYINT);

mysql> INSERT INTO DemoTable VALUES (-10), (-128), (127), (-1), (14);
-- Lưu ý: 128 sẽ lỗi Out of range vì TINYINT SIGNED max là 127
mysql> INSERT INTO DemoTable VALUES (128);
ERROR 1264 (22003): Out of range value for column 'Number' at row 1

Kết quả

mysql> SELECT * FROM DemoTable;
+--------+
| Number |
+--------+
|    -10 |
|   -128 |
|    127 |
|     -1 |
|     14 |
+--------+

Lựa chọn kiểu phù hợp

  • TINYINT: Cờ, trạng thái nhỏ, số lượng rất nhỏ (ví dụ: -10 đến 100).
  • SMALLINT: Số lượng trung bình, điểm số, mã code nhỏ.
  • INT: Mặc định cho khóa chính, số lượng lớn, ID.
  • BIGINT: ID phân tán (UUID numeric), timestamp nanosecond, số tiền lớn (cents).

Lưu ý: Nếu chắc chắn chỉ lưu số không âm, thêm UNSIGNED để gấp đôi phạm vi dương (Ví dụ: TINYINT UNSIGNED: 0-255). Nhưng nếu cần lưu số âm, không được dùng UNSIGNED.