Thời gian đọc: 6 phút
Trong MySQL, các kiểu dữ liệu số thực (Floating Point Types) được sử dụng để lưu trữ các giá trị số có phần thập phân. Các kiểu dữ liệu này là rất quan trọng khi bạn cần lưu trữ các giá trị số không nguyên, chẳng hạn như các phép toán tài chính, khoa học, hoặc các phép toán chính xác khác. Bài viết này sẽ cung cấp một cái nhìn chi tiết về các kiểu dữ liệu số thực trong MySQL, từ cơ bản đến nâng cao, cùng với các ví dụ minh họa cụ thể.
Các kiểu dữ liệu số thực trong MySQL được thiết kế để lưu trữ các giá trị số có phần thập phân với độ chính xác khác nhau. Các kiểu dữ liệu này thường được sử dụng trong các ứng dụng yêu cầu tính toán chính xác hoặc lưu trữ số liệu tài chính.
FLOAT
là kiểu dữ liệu số thực với độ chính xác đơn, thường được sử dụng khi bạn cần lưu trữ các giá trị số thực với độ chính xác không quá cao.
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
Trong đó:
M
là tổng số chữ số, bao gồm cả phần thập phân và phần nguyên.D
là số chữ số sau dấu thập phân.CREATE TABLE measurements (
value FLOAT(7, 2)
);
Cột value
có thể lưu trữ các giá trị như 123.45
. Độ chính xác của FLOAT
là khoảng 7 chữ số thập phân, nên nó không phải là sự lựa chọn tốt nhất khi cần độ chính xác cao.
DOUBLE
là kiểu dữ liệu số thực với độ chính xác gấp đôi so với FLOAT
. Thích hợp cho các ứng dụng yêu cầu độ chính xác cao hơn.
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
Trong đó:
M
là tổng số chữ số, bao gồm cả phần thập phân và phần nguyên.D
là số chữ số sau dấu thập phân.CREATE TABLE scientific_data (
measurement DOUBLE(15, 6)
);
Cột measurement
có thể lưu trữ các giá trị như 123456.789123
. DOUBLE
cung cấp độ chính xác cao hơn so với FLOAT
, làm cho nó phù hợp hơn cho các phép toán khoa học hoặc tài chính yêu cầu độ chính xác cao.
DECIMAL
là kiểu dữ liệu số thực với độ chính xác cố định và không bị ảnh hưởng bởi các lỗi làm tròn. Đây là kiểu dữ liệu lý tưởng cho các ứng dụng tài chính hoặc bất kỳ ứng dụng nào yêu cầu độ chính xác tuyệt đối.
DECIMAL(M,D)
Trong đó:
M
là tổng số chữ số, bao gồm cả phần thập phân và phần nguyên.D
là số chữ số sau dấu thập phân.CREATE TABLE financial_records (
amount DECIMAL(15, 4)
);
Cột amount
có thể lưu trữ các giá trị như 123456.7890
. DECIMAL
đảm bảo rằng các phép toán sẽ không bị ảnh hưởng bởi lỗi làm tròn, do đó rất phù hợp cho các ứng dụng tài chính.
Sử dụng FLOAT
khi bạn cần lưu trữ các giá trị số thực với độ chính xác vừa phải và không yêu cầu chính xác tuyệt đối. FLOAT
thường được sử dụng cho các phép toán khoa học và kỹ thuật mà lỗi làm tròn không ảnh hưởng quá lớn.
Sử dụng DOUBLE
khi bạn cần lưu trữ các giá trị số thực với độ chính xác cao hơn so với FLOAT
. DOUBLE
thích hợp cho các ứng dụng khoa học, kỹ thuật hoặc các phép toán tài chính mà yêu cầu độ chính xác cao hơn.
Sử dụng DECIMAL
khi bạn cần lưu trữ các giá trị số thực với độ chính xác tuyệt đối và không chấp nhận lỗi làm tròn. DECIMAL
là sự lựa chọn tốt nhất cho các ứng dụng tài chính, kế toán, hoặc bất kỳ tình huống nào yêu cầu độ chính xác cao.
MySQL cung cấp nhiều hàm để thực hiện các phép toán với số thực:
SELECT ROUND(123.4567, 2);
-- Kết quả: 123.46
SELECT CEIL(123.456);
-- Kết quả: 124
SELECT FLOOR(123.456);
-- Kết quả: 123
SELECT TRUNCATE(123.4567, 2);
-- Kết quả: 123.45
Khi làm việc với FLOAT
và DOUBLE
, bạn có thể gặp phải lỗi làm tròn do cách chúng lưu trữ các giá trị số thực. Để xử lý lỗi này, hãy cân nhắc sử dụng DECIMAL
khi yêu cầu độ chính xác tuyệt đối.
Việc chọn đúng kiểu dữ liệu số thực trong MySQL là rất quan trọng để đảm bảo tính chính xác và hiệu suất của cơ sở dữ liệu. Hy vọng rằng bài viết này đã cung cấp cho bạn cái nhìn rõ ràng và chi tiết về các kiểu dữ liệu số thực trong MySQL, cùng với các ví dụ minh họa từ cơ bản đến nâng cao. Hãy lựa chọn kiểu dữ liệu phù hợp với yêu cầu của bạn để tối ưu hóa việc lưu trữ và xử lý các giá trị số thực trong cơ sở dữ liệu của bạn.