Kiểu dữ liệu thập phân mysql

Tóm lược. trong hướng dẫn này, chúng tôi sẽ giới thiệu cho bạn kiểu dữ liệu DECIMAL của MySQL và cách sử dụng nó một cách hiệu quả trong bảng cơ sở dữ liệu của bạn

Giới thiệu về kiểu dữ liệu DECIMAL của MySQL

Kiểu dữ liệu DECIMAL của MySQL được sử dụng để lưu trữ các giá trị số chính xác trong cơ sở dữ liệu. Chúng tôi thường sử dụng loại dữ liệu DECIMAL cho các cột bảo toàn độ chính xác e. g. , dữ liệu tiền trong hệ thống kế toán

Để xác định một cột có kiểu dữ liệu là DECIMAL bạn sử dụng cú pháp sau

column_name  DECIMAL(P,D);

Code language: SQL (Structured Query Language) (sql)

Trong cú pháp trên

  • P là độ chính xác biểu thị số chữ số có nghĩa. Phạm vi của P là 1 đến 65
  • D là thang đo đại diện cho số chữ số sau dấu thập phân. Phạm vi của D là 0 và 30. MySQL yêu cầu D nhỏ hơn hoặc bằng (<=) P

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
2 có nghĩa là cột có thể lưu trữ tối đa P chữ số với D số thập phân. Phạm vi thực tế của cột thập phân phụ thuộc vào độ chính xác và tỷ lệ

Bên cạnh từ khóa

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
3, bạn cũng có thể sử dụng

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
4,

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
5 hoặc

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
6 vì chúng là từ đồng nghĩa với

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
3

Giống như loại dữ liệu INT, loại

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
3 cũng có các thuộc tính

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
9 và

column_name DECIMAL(P);

Code language: SQL (Structured Query Language) (sql)
0. Nếu chúng ta sử dụng thuộc tính 

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
9, cột có giá trị

column_name DECIMAL(P);

Code language: SQL (Structured Query Language) (sql)
2 sẽ không chấp nhận giá trị âm

Trong trường hợp chúng tôi sử dụng

column_name DECIMAL(P);

Code language: SQL (Structured Query Language) (sql)
0, MySQL sẽ đệm giá trị hiển thị bằng 0 cho đến chiều rộng hiển thị được chỉ định bởi định nghĩa cột. Ngoài ra, nếu chúng ta sử dụng

column_name DECIMAL(P);

Code language: SQL (Structured Query Language) (sql)
4 cho cột

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
3, MySQL sẽ tự động thêm thuộc tính 

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
9 vào cột

Ví dụ sau định nghĩa cột số tiền với kiểu dữ liệu

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
3

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)

Trong ví dụ này, cột số tiền có thể lưu trữ 6 chữ số với 2 chữ số thập phân; . 99 đến -9999. 99

MySQL cho phép chúng tôi sử dụng cú pháp sau

column_name DECIMAL(P);

Code language: SQL (Structured Query Language) (sql)

Điều này tương đương với

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
9

Trong trường hợp này, cột không chứa phần phân số hoặc dấu thập phân

Ngoài ra, chúng ta thậm chí có thể sử dụng cú pháp sau

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
0

Giá trị mặc định của P là 10 trong trường hợp này

Lưu trữ DECIMAL của MySQL

MySQL chỉ định lưu trữ riêng biệt cho các phần nguyên và phân số. MySQL sử dụng định dạng nhị phân để lưu trữ các giá trị

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
3. Nó gói 9 chữ số thành 4 byte

Đối với mỗi phần, phải mất 4 byte để lưu trữ từng bội số của 9 chữ số. Dung lượng lưu trữ cần thiết cho các chữ số còn lại được minh họa trong bảng sau

Chữ số còn lạiBytes001–213–425–637–94

Ví dụ:

column_name DECIMAL(P);

Code language: SQL (Structured Query Language) (sql)
9 có 9 chữ số cho phần phân số và 19-9 = 10 chữ số cho phần nguyên. Phần phân số yêu cầu 4 byte. Phần nguyên cần 4 byte cho 9 chữ số đầu, 1 chữ số còn lại cần thêm 1 byte. Tổng cộng, cột

column_name DECIMAL(P);

Code language: SQL (Structured Query Language) (sql)
9 yêu cầu 9 byte

Kiểu dữ liệu DECIMAL của MySQL và dữ liệu tiền tệ

Chúng tôi thường sử dụng loại dữ liệu

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
3 cho dữ liệu tiền tệ như giá cả, tiền lương, số dư tài khoản, v.v. Nếu bạn thiết kế cơ sở dữ liệu xử lý dữ liệu tiền tệ, cú pháp sau sẽ ổn

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
5

Tuy nhiên, nếu bạn muốn tuân thủ các quy tắc Nguyên tắc kế toán được chấp nhận chung (GAAP), cột tiền tệ phải có ít nhất 4 chữ số thập phân để đảm bảo rằng giá trị làm tròn không vượt quá $0. 01. Trong trường hợp này, bạn nên xác định cột có 4 chữ số thập phân như sau

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
6

Ví dụ về kiểu dữ liệu DECIMAL của MySQL

Đầu tiên, tạo một bảng mới có tên là

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
92 với ba cột. id, mô tả và chi phí

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
8

Thứ hai, chèn dữ liệu vào bảng

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
92

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
0

Thứ ba, truy vấn dữ liệu từ bảng

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
92

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
2
Kiểu dữ liệu thập phân mysql
Kiểu dữ liệu thập phân mysql

Thứ tư, thay đổi cột chi phí để bao gồm thuộc tính

column_name DECIMAL(P);

Code language: SQL (Structured Query Language) (sql)
0

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
0

Thứ năm, truy vấn lại bảng vật liệu

amount DECIMAL(6,2);

Code language: SQL (Structured Query Language) (sql)
2
Kiểu dữ liệu thập phân mysql
Kiểu dữ liệu thập phân mysql

Như bạn thấy, chúng tôi có nhiều số 0 được đệm trong các giá trị đầu ra.

Trong hướng dẫn này, chúng tôi đã trình bày cung cấp cho bạn thông tin chi tiết về kiểu dữ liệu DECIMAL của MySQL và chỉ cho bạn cách áp dụng nó cho các cột lưu trữ dữ liệu số chính xác, chẳng hạn như dữ liệu tài chính