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 DECIMAL và NUMERIC 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à DECIMAL 0 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 DECIMAL 1 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 DECIMAL 2 từ DECIMAL 3 đến DECIMAL 4. Trong SQL tiêu chuẩn, cú pháp DECIMAL 5) 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 DECIMAL 9. 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 DECIMAL 9 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: 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: Nếu NUMERIC 9 bị bỏ qua, mặc định là 0. Nếu DECIMAL 9 bị bỏ qua, mặc định là 10. Giá trị tối đa là 65 cho DECIMAL 9 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ại | Số byte |
---|
0 | 0 | 1 trận2 | 1 | 3 trận4 | 2 | 5 trận6 | 3 | 7 trận9 | 4 |
Ví dụ, cột NUMERIC 9 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 DECIMAL 0 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ự DECIMAL 2 hàng đầu hoặc ký tự DECIMAL 3 hoặc các chữ số DECIMAL 4 hàng đầu. Nếu bạn chèn DECIMAL 5 vào cột DECIMAL 6, nó được lưu trữ dưới dạng DECIMAL 7. Đối với các số âm, một ký tự DECIMAL 3 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 DECIMAL 0 hỗ trợ phạm vi từ DECIMAL 1 đến DECIMAL 2. Một cột ________ 15, ____ 29) cho phép tối đa DECIMAL 9 - NUMERIC 9 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à DECIMAL 9 chữ số. Đối với ____ 15, ________ 29), tiêu chuẩn đòi hỏi độ chính xác ít nhất DECIMAL 9 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(DECIMAL 9,NUMERIC 9) be exactly DECIMAL 9 digits. For DECIMAL 5,NUMERIC 9), the standard requires a precision of at least DECIMAL 9 digits but permits more. In MySQL, DECIMAL 5,NUMERIC 9) and NUMERIC(DECIMAL 9,NUMERIC 9) are the same, and both have a precision of exactly DECIMAL 9 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 NUMERIC 9 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 DECIMAL 0. |