×

Lưu trữ số thập phân với DECIMAL trong MySQL

Khi làm việc với cơ sở dữ liệu MySQL, việc lưu trữ và xử lý các giá trị số thập phân là một yêu cầu phổ biến, đặc biệt trong các ứng dụng như hệ thống quản lý tài chính, kế toán, hoặc bất kỳ lĩnh vực nào yêu cầu độ chính xác cao về số liệu. Để đáp ứng nhu cầu này, MySQL cung cấp kiểu dữ liệu DECIMAL.

Định nghĩa kiểu dữ liệu DECIMAL

Kiểu dữ liệu DECIMAL được thiết kế để lưu trữ các giá trị số thập phân với độ chính xác cao, mà không gặp phải các vấn đề về độ sai lệch do chuyển đổi kiểu dữ liệu như khi sử dụng kiểu FLOAT hoặc DOUBLE. Cú pháp cơ bản của DECIMAL trong MySQL như sau:

DECIMAL(M,D)
  • M: Số lượng chữ số tối đa mà số có thể có (bao gồm cả phần nguyên và phần thập phân).
  • D: Số lượng chữ số dành riêng cho phần thập phân.

Ví dụ, DECIMAL(10,2) có thể lưu trữ các số có tối đa 10 chữ số, trong đó 2 chữ số dành cho phần thập phân.

Ưu điểm của việc sử dụng DECIMAL

  1. Độ chính xác cao: DECIMAL cho phép lưu trữ các giá trị số mà không bị trôi mất số liệu ở phần thập phân, đảm bảo kết quả chính xác.
  2. Khả năng định dạng linh hoạt: Người dùng có thể tự do chỉ định số lượng chữ số phần nguyên và phần thập phân.
  3. Tránh sai lệch do chuyển đổi số: Không gặp phải các vấn đề về sai lệch giá trị thường gặp khi sử dụng kiểu FLOAT hoặc DOUBLE.

Cách khởi tạo một bảng với DECIMAL

Dưới đây là ví dụ về việc tạo một bảng trong MySQL, trong đó kiểu dữ liệu DECIMAL được sử dụng để lưu trữ giá trị giá cả và thuế.

CREATE TABLE san_pham (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ten_san_pham VARCHAR(100),
    gia DECIMAL(10,2),
    thue DECIMAL(5,2)
);

Trong bảng san_pham, cột gia có thể lưu trữ các giá trị lên đến 99999999.99, và cột thue có thể lưu trữ các giá trị lên đến 999.99.

Thao tác với dữ liệu DECIMAL

Thêm dữ liệu

INSERT INTO san_pham (ten_san_pham, gia, thue) VALUES ('Laptop', 15000.50, 8.50);

Truy vấn dữ liệu

SELECT * FROM san_pham WHERE gia > 10000.00;

Cập nhật dữ liệu

UPDATE san_pham SET gia = 16000.75 WHERE id = 1;

Xóa dữ liệu

DELETE FROM san_pham WHERE id = 1;

Một số lưu ý khi sử dụng DECIMAL

  1. Hiệu năng: DECIMAL có thể chiếm nhiều bộ nhớ hơn so với FLOAT hoặc DOUBLE, nhất là khi cần lưu trữ một lượng lớn dữ liệu.
  2. Kích thước giá trị: MySQL có giới hạn về kích thước giá trị DECIMAL, và một số phiên bản cũ hơn có thể gặp giới hạn khác nhau.

Tóm lại, việc sử dụng kiểu dữ liệu DECIMAL trong MySQL là một giải pháp hữu hiệu khi cần lưu trữ các giá trị số thập phân với độ chính xác cao. Điều này đặc biệt quan trọng trong các ứng dụng yêu cầu tính toán chính xác, như tài chính và kế toán. Việc hiểu rõ và tận dụng đúng cách kiểu dữ liệu DECIMAL sẽ giúp cải thiện hiệu quả và độ tin cậy của cơ sở dữ liệu của bạn.

Comments