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

Kiểu dữ liệu phù hợp nhất cho cột "giá" (price) trong MySQL


Kiểu dữ liệu tốt nhất cho cột giá tiền là DECIMAL (hoặc NUMERIC - đồng nghĩa).

Tại sao chọn DECIMAL?

  • Lưu trữ chính xác giá trị thập phân, không bị sai số làm tròn như FLOAT/DOUBLE.
  • Phù hợp cho tiền tệ, tài chính, kế toán nơi độ chính xác tuyệt đối là bắt buộc.
  • Hỗ trợ độ chính xác tùy ý (precision, scale).

Cú pháp

DECIMAL(precision, scale)
  • precision: Tổng số chữ số tối đa (1-65).
  • scale: Số chữ số sau dấu phẩy thập phân (0-30, ≤ precision).

Ví dụ DECIMAL(10,2): tối đa 10 chữ số, 2 chữ số sau dấu phẩy → khoảng từ -99999999.99 đến 99999999.99.

Ví dụ minh họa

mysql> CREATE TABLE PriceDemo (ProductPrice DECIMAL(10,2));
Query OK, 0 rows affected (0.60 sec)

mysql> INSERT INTO PriceDemo VALUES 
(12345.67), (99999999.67), (123456.67), (4444444.50);
Query OK, 4 rows affected

Kết quả:

+--------------+
| ProductPrice |
+--------------+
|     12345.67 |
| 99999999.67  |
|   123456.67  |
|  4444444.50  |
+--------------+

So sánh với FLOAT/DOUBLE

Kiểu Độ chính xác Kích thước Phù hợp cho
DECIMAL(10,2) Chính xác tuyệt đối ~5-6 bytes Tiền tệ, giá, tài chính
FLOAT Khoảng 7 chữ số chính xác 4 bytes Khoa học, đo lường
DOUBLE Khoảng 15 chữ số chính xác 8 bytes Khoa học, tính toán phức tạp

Lưu ý

  • Không bao giờ dùng FLOAT/DOUBLE cho tiền tệ.
  • Chọn precision đủ lớn cho giá trị tối đa dự kiến (ví dụ 12,2 cho tỷ đồng).
  • MySQL lưu DECIMAL dưới dạng chuỗi nén (packed decimal), hiệu năng tốt.