Tóm tắt
Cột UNSIGNED chỉ chấp nhận số không âm (0 và dương). Chèn giá trị âm → lỗi ERROR 1264 (22003): Out of range value.
Ví dụ
1. Tạo bảng cột UNSIGNED
CREATE TABLE UnsignedDemo (Id INT UNSIGNED);
2. Chèn giá trị âm – LỖI
INSERT INTO UnsignedDemo VALUES (-100);
-- ERROR 1264 (22003): Out of range value for column 'Id' at row 1
3. Chèn giá trị dương/hằng số 0 – OK
INSERT INTO UnsignedDemo VALUES (100), (1000), (0), (100000000);
SELECT * FROM UnsignedDemo;
+-----------+
| Id |
+-----------+
| 100 |
| 1000 |
| 0 |
| 100000000 |
+-----------+
Phạm vi các kiểu UNSIGNED
| Kiểu | Phạm vi |
|---|---|
| TINYINT UNSIGNED | 0 ~ 255 |
| SMALLINT UNSIGNED | 0 ~ 65,535 |
| MEDIUMINT UNSIGNED | 0 ~ 16,777,215 |
| INT UNSIGNED | 0 ~ 4,294,967,295 |
| BIGINT UNSIGNED | 0 ~ 18,446,744,073,709,551,615 |
Ứng dụng
- Khóa chính, khóa ngoại (ID, count, quantity).
- Tăng phạm vi dương gấp đôi so với signed cùng kích thước.
- Kết hợp
NOT NULLđể đảm bảo tính toàn vẹn.
Lưu ý
- Phép tính giữa signed và unsigned có thể gây kết quả bất ngờ – hãy CAST rõ ràng.
AUTO_INCREMENTngầm hiểu là UNSIGNED.