MySQL - DECIMAL: Hướng dẫn chi tiết cho người mới bắt đầu

Xin chào các bạn未来数据库大师!Hôm nay, chúng ta sẽ cùng lặn sâu vào thế giới kỳ diệu của kiểu dữ liệu DECIMAL trong MySQL. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người bạn thân thiện dẫn đường cho bạn trong hành trình này, giải thích mọi thứ từng bước. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu đó là sở thích của bạn), và chúng ta cùng bắt đầu!

MySQL - DECIMAL

Kiểu dữ liệu DECIMAL trong MySQL

DECIMAL là gì?

DECIMAL là một kiểu dữ liệu trong MySQL cho phép chúng ta lưu trữ các giá trị số chính xác. Bây giờ, bạn có thể nghĩ, "Nhưng chúng ta không thể chỉ cần sử dụng số thường xuyên?" Đúng vậy, nhưng DECIMAL là đặc biệt. Nó đặc biệt hữu ích khi chúng ta cần các phép toán chính xác, như khi xử lý tiền bạc hoặc các phép đo khoa học.

Hãy tưởng tượng bạn đang xây dựng một ứng dụng ngân hàng. Bạn không muốn sử dụng một kiểu dữ liệu có thể làm tròn số cent, phải không? Đó là lúc DECIMAL trở nên hữu ích!

Cú pháp và cách sử dụng

Cú pháp cơ bản để khai báo một cột DECIMAL là:

DECIMAL(M,D)

Ở đây, 'M' là số lượng tối đa các chữ số (độ chính xác), và 'D' là số lượng chữ số ở bên phải của dấu phẩy thập phân (độ chia nhỏ). Hãy cùng phân tích điều này với một ví dụ:

CREATE TABLE product_prices (
id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100),
price DECIMAL(10,2)
);

Trong ví dụ này, chúng ta đang tạo một bảng để lưu trữ giá cả sản phẩm. Cột 'price' được xác định là DECIMAL(10,2), có nghĩa là:

  • Nó có thể lưu trữ tối đa 10 chữ số
  • 2 trong số đó sẽ là sau dấu phẩy thập phân

Vậy, chúng ta có thể lưu trữ các giá trị như 1234567.89 hoặc 9.99, nhưng không thể lưu trữ 1234567890.99 (quá nhiều chữ số) hoặc 9.999 (quá nhiều chữ số thập phân).

Lưu trữ giá trị DECIMAL trong MySQL

Bây giờ, hãy nói về cách MySQL lưu trữ các giá trị DECIMAL. Điều này có thể听起来 kỹ thuật, nhưng tôi đảm bảo rằng nó rất thú vị!

MySQL lưu trữ các giá trị DECIMAL theo định dạng nhị phân. Mỗi chữ số DECIMAL chiếm 4 bit, và đối với các số âm, MySQL sử dụng bit dấu của byte đầu tiên.

Đây là một sự thật thú vị: MySQL đóng gói các chữ số vào byte, có nghĩa là nó có thể lưu trữ hai chữ số DECIMAL trong một byte. Thật thông minh phải không?

Hãy nhìn vào một số ví dụ để hiểu yêu cầu lưu trữ:

Định nghĩa DECIMAL Yêu cầu Lưu trữ
DECIMAL(5,2) 3 byte
DECIMAL(5,0) 3 byte
DECIMAL(10,5) 5 byte
DECIMAL(65,30) 33 byte

Như bạn có thể thấy, yêu cầu lưu trữ tăng lên khi chúng ta tăng độ chính xác (M) của DECIMAL.

Sử dụng Kiểu dữ liệu DECIMAL trong Chương trình Khách

Bây giờ chúng ta đã hiểu DECIMAL là gì và cách nó được lưu trữ, hãy xem nó trong hành động! Chúng ta sẽ sử dụng một chương trình khách MySQL để tạo bảng, chèn dữ liệu và truy vấn.

Tạo Bảng với DECIMAL

Đầu tiên, hãy tạo một bảng để lưu trữ thông tin về sản phẩm:

CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2),
weight DECIMAL(5,3)
);

Ở đây, chúng ta sử dụng DECIMAL cho cả giá (cho phép tối đa 8 chữ số trước dấu phẩy và 2 sau) và trọng lượng (cho phép tối đa 2 chữ số trước dấu phẩy và 3 sau).

Chèn Dữ liệu

Bây giờ, hãy thêm một số sản phẩm vào bảng của chúng ta:

INSERT INTO products (name, price, weight)
VALUES
('Laptop', 999.99, 2.500),
('Smartphone', 599.99, 0.180),
('Headphones', 149.99, 0.220);

Truy vấn Dữ liệu

Hãy lấy dữ liệu của chúng ta và thực hiện một số phép toán:

SELECT name, price, weight, price * weight AS price_per_kg
FROM products;

Truy vấn này sẽ cho chúng ta kết quả như sau:

+------------+---------+--------+--------------+
| name       | price   | weight | price_per_kg |
+------------+---------+--------+--------------+
| Laptop     | 999.99  | 2.500  | 2499.975000  |
| Smartphone | 599.99  | 0.180  | 107.998200   |
| Headphones | 149.99  | 0.220  | 32.997800    |
+------------+---------+--------+--------------+

Chú ý cách MySQL duy trì độ chính xác trong các phép toán liên quan đến DECIMAL.

Lời khuyên

Mặc dù DECIMAL rất tốt cho độ chính xác, nhưng điều quan trọng là phải sử dụng nó một cách khôn ngoan. Nếu bạn không cần độ chính xác chính xác (như khi xử lý các số lớn mà sự khác biệt nhỏ không quan trọng), hãy cân nhắc sử dụng FLOAT hoặc DOUBLE để có hiệu suất tốt hơn.

Kết luận

Và đây là tất cả, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của kiểu dữ liệu DECIMAL trong MySQL. Chúng ta đã học về nó là gì, cách nó được lưu trữ và cách sử dụng nó trong các tình huống thực tế.

Nhớ rằng, trong thế giới cơ sở dữ liệu, độ chính xác có thể là bạn của bạn hoặc kẻ thù của bạn. Chọn kỹ loại dữ liệu, và chúc may mắn với các phép toán của bạn!

Khi chúng ta kết thúc, đây là một chút hài hước về cơ sở dữ liệu cho bạn: Tại sao các lập trình viên lại thích chế độ tối? Vì ánh sáng thu hút ruồi!

Tiếp tục thực hành, hãy tò mò và chúc bạn viết mã vui vẻ!

Credits: Image by storyset