Hướng dẫn mysql decimal 10 2 - mysql thập phân 10 2

11.1.3 & nbsp; các loại điểm cố định (giá trị chính xác) - thập phân, số

Các loại DECIMALNUMERIC lưu trữ các giá trị dữ liệu số chính xác. Các loại này được sử dụng khi điều quan trọng là duy trì độ chính xác chính xác, ví dụ với dữ liệu tiền tệ. Trong MySQL, NUMERIC được triển khai là DECIMAL, vì vậy các nhận xét sau đây về DECIMAL áp dụng như nhau cho NUMERIC.

MySQL lưu trữ các giá trị DECIMAL ở định dạng nhị phân. Xem Phần & NBSP; 12,25, Toán học chính xác.

Trong khai báo cột DECIMAL, độ chính xác và tỷ lệ có thể (và thường là) được chỉ định. Ví dụ:

salary DECIMAL(5,2)

Trong ví dụ này, 5 là độ chính xác và DECIMAL0 là thang đo. Độ chính xác đại diện cho số lượng các chữ số quan trọng được lưu trữ cho các giá trị và tỷ lệ biểu thị số chữ số có thể được lưu trữ theo điểm thập phân.

SQL tiêu chuẩn yêu cầu DECIMAL1 có thể lưu trữ bất kỳ giá trị nào với năm chữ số và hai số thập phân, do đó, các giá trị có thể được lưu trữ trong phạm vi cột DECIMAL2 từ DECIMAL3 đến DECIMAL4.

Trong SQL tiêu chuẩn, cú pháp DECIMAL5) tương đương với ________ 15,0). Tương tự, cú pháp DECIMAL tương đương với ____ 15,0), trong đó việc thực hiện được phép quyết định giá trị của DECIMAL9. MySQL hỗ trợ cả hai dạng biến thể của cú pháp DECIMAL này. Giá trị mặc định của DECIMAL9 là 10.

Nếu tỷ lệ là 0, các giá trị DECIMAL không chứa phần thập phân hoặc phần phân số.

Số lượng chữ số tối đa cho DECIMAL là 65, nhưng phạm vi thực tế cho một cột DECIMAL đã cho có thể bị hạn chế bởi độ chính xác hoặc tỷ lệ cho một cột nhất định. Khi một cột như vậy được gán một giá trị với nhiều chữ số theo điểm thập phân hơn so với được cho phép theo thang đo được chỉ định, giá trị được chuyển đổi thành thang đo đó. .


12.22.2 & nbsp; đặc điểm kiểu dữ liệu thập phân

Phần này thảo luận về các đặc điểm của kiểu dữ liệu DECIMAL (và các từ đồng nghĩa của nó), đặc biệt liên quan đến các chủ đề sau:

  • Số chữ số tối đa

  • Định dạng lưu trữ

  • Yêu cầu lưu trữ

  • Phần mở rộng MySQL không đạt tiêu chuẩn cho phạm vi trên của các cột DECIMAL

Cú pháp khai báo cho cột DECIMAL là ________ 15, ________ 29). Phạm vi của các giá trị cho các đối số như sau:

  • DECIMAL9 là số chữ số tối đa (độ chính xác). Nó có phạm vi từ 1 đến 65.

  • NUMERIC9 là số chữ số ở bên phải của điểm thập phân (tỷ lệ). Nó có phạm vi từ 0 đến 30 và phải không lớn hơn DECIMAL9.

Nếu NUMERIC9 bị bỏ qua, mặc định là 0. Nếu DECIMAL9 bị bỏ qua, mặc định là 10.

Giá trị tối đa là 65 cho DECIMAL9 có nghĩa là các tính toán trên các giá trị DECIMAL là chính xác lên đến 65 chữ số. Giới hạn này là 65 chữ số độ chính xác cũng áp dụng cho các chữ số có giá trị chính xác, do đó phạm vi tối đa của các chữ cái như vậy khác với trước đó. .

Các giá trị cho các cột DECIMAL được lưu trữ bằng định dạng nhị phân có chín chữ số thập phân thành 4 byte. Các yêu cầu lưu trữ cho các phần số nguyên và phân số của mỗi giá trị được xác định riêng. Mỗi bội số của chín chữ số yêu cầu 4 byte và bất kỳ chữ số nào còn lại còn lại đều yêu cầu một số phần 4 byte. Bộ lưu trữ cần thiết cho các chữ số còn lại được đưa ra bởi bảng sau.

Chữ số còn sót lạiSố byte
0 0
1 trận21
3 trận42
5 trận63
7 trận94

Ví dụ, cột NUMERIC9 có chín chữ số ở hai bên của dấu thập phân, do đó phần số nguyên và phần phân số mỗi phần yêu cầu 4 byte. Một cột DECIMAL0 có mười bốn chữ số số nguyên và sáu chữ số phân số. Các chữ số số nguyên yêu cầu bốn byte cho chín trong số các chữ số và 3 byte cho năm chữ số còn lại. Sáu chữ số phân số yêu cầu 3 byte.

DECIMAL Các cột không lưu trữ ký tự DECIMAL2 hàng đầu hoặc ký tự DECIMAL3 hoặc các chữ số DECIMAL4 hàng đầu. Nếu bạn chèn DECIMAL5 vào cột DECIMAL6, nó được lưu trữ dưới dạng DECIMAL7. Đối với các số âm, một ký tự DECIMAL3 theo nghĩa đen không được lưu trữ.

Các cột DECIMAL không cho phép các giá trị lớn hơn phạm vi được ngụ ý bởi định nghĩa cột. Ví dụ: cột DECIMAL0 hỗ trợ phạm vi từ DECIMAL1 đến DECIMAL2. Một cột ________ 15, ____ 29) cho phép tối đa DECIMAL9 - NUMERIC9 chữ số ở bên trái của dấu thập phân.

Tiêu chuẩn SQL yêu cầu độ chính xác của số (____ 19, ________ 29) chính xác là DECIMAL9 chữ số. Đối với ____ 15, ________ 29), tiêu chuẩn đòi hỏi độ chính xác ít nhất DECIMAL9 chữ số nhưng cho phép nhiều hơn. Trong MySQL, ________ 15, ________ 29) và số (____ 19, ________ 29) là như nhau và cả hai đều có độ chính xác của chính xác ____19 chữ số.NUMERIC(DECIMAL9,NUMERIC9) be exactly DECIMAL9 digits. For DECIMAL5,NUMERIC9), the standard requires a precision of at least DECIMAL9 digits but permits more. In MySQL, DECIMAL5,NUMERIC9) and NUMERIC(DECIMAL9,NUMERIC9) are the same, and both have a precision of exactly DECIMAL9 digits.

Để biết giải thích đầy đủ về định dạng nội bộ của các giá trị DECIMAL, hãy xem tệp NUMERIC9 trong phân phối nguồn MySQL. Định dạng được giải thích (với một ví dụ) trong hàm DECIMAL0.