Số trong ngoặc sau kiểu số nguyên: Chỉ ảnh hưởng hiển thị (ZEROFILL)
BIGINT và BIGINT(20) giống hệt nhau về phạm vi lưu trữ (8 byte, -9 quintillion đến +9 quintillion). Số 20 chỉ là display width - độ rộng hiển thị khi kết hợp với ZEROFILL.
1. Tạo bảng với BIGINT(20) ZEROFILL
mysql> CREATE TABLE DemoTable (
Number BIGINT(20) ZEROFILL
);
2. Chèn các số có độ dài khác nhau
mysql> INSERT INTO DemoTable VALUES (1), (12), (123), (1234);
3. Xem kết quả - Số được đệm 0 bên trái đến độ rộng 20
mysql> SELECT * FROM DemoTable;
+----------------------+ | Number | +----------------------+ | 00000000000000000001 | | 00000000000000000012 | | 00000000000000000123 | | 00000000000000001234 | +----------------------+
Giải thích:
ZEROFILLtự động thêmUNSIGNED(chỉ số dương)- Số được đệm '0' bên trái cho đủ 20 ký tự
- Không ảnh hưởng đến giá trị lưu trữ thực tế (vẫn là 1, 12, 123, 1234)
- Không ảnh hưởng đến phép tính, so sánh, index
Các kiểu số nguyên và display width mặc định:
| Kiểu | Kích thước | Display width mặc định | Max ZEROFILL width |
|---|---|---|---|
| TINYINT | 1 byte | 4 | 3 |
| SMALLINT | 2 bytes | 6 | 5 |
| MEDIUMINT | 3 bytes | 9 | 8 |
| INT | 4 bytes | 11 | 10 |
| BIGINT | 8 bytes | 20 | 19 |
Lưu ý: Từ MySQL 8.0.17, display width cho kiểu số nguyên bị deprecated (khuyên không dùng). Tương lai sẽ bỏ qua hoàn toàn. Nên dùng BIGINT thuần túy.
Khi nào dùng ZEROFILL: Mã số cố định độ dài (mã sinh viên, mã sản phẩm, số tài khoản) để hiển thị đẹp, căn lề.