Kiểu dữ liệu DECIMAL trong MySQL: Lưu trữ số thập phân chính xác
DECIMAL(M,D) lưu số chính xác với M chữ số tổng cộng, D chữ số sau dấu phẩy. Phù hợp cho tiền tệ, đo lường.
Cú pháp
tenCot DECIMAL(TongSoChuSo, SoChuSoSauDauPhay);
Ví dụ: DECIMAL(4,2)
Tối đa 4 chữ số, 2 chữ số sau dấu phẩy → phạm vi -99.99 đến 99.99.
CREATE TABLE DecimalInsert (
Id INT,
Name VARCHAR(100),
Amount DECIMAL(4,2)
);
Chèn dữ liệu:
INSERT INTO DecimalInsert VALUES (1, 'John', 12.4); -- thành 12.40
INSERT INTO DecimalInsert VALUES (2, 'Carol', 12.34); -- 12.34
INSERT INTO DecimalInsert VALUES (3, 'Mike', 1.424); -- CẢNH BÁO: cắt thành 1.42
Kết quả
+------+-------+--------+
| Id | Name | Amount |
+------+-------+--------+
| 1 | John | 12.40 |
| 2 | Carol | 12.34 |
| 3 | Mike | 1.42 |
+------+-------+--------+
Lưu ý quan trọng
- Không dùng FLOAT/DOUBLE cho tiền tệ (lỗi làm tròn nhị phân).
DECIMALlưu trữ chính xác (fixed-point).- Vượt quá phạm vi → lỗi (Out of range) hoặc cắt bớt tùy sql_mode.
- MySQL 8.0:
DECIMAL(65,30)max precision.
Kiểm tra cảnh báo
SHOW WARNINGS;
Sau INSERT Mike (1.424) sẽ thấy: Data truncated for column 'Amount'.