Computer >> Máy Tính >  >> Lập trình >> MySQL

Phạm vi của MySQL DECIMAL (x, 0) là gì?

Phạm vi của kiểu dữ liệu DECIMAL nhiều hơn kiểu dữ liệu INTEGER và BIGINT. Như chúng ta biết BIGINT có thể lưu trữ 18446744073709551615 trong khi ở DECIMAL, bạn có thể lưu trữ DECIMAL (65,0) trong đó x đại diện cho 65 nines (9). DECIMAL lưu trữ số theo byte và công thức yêu cầu lưu trữ là:DECIMAL (x, 0) tức là

 StorageRequirementInBytes =(x / 9) + còn lại; WHERE còn lại =round_up ((x% 9) / 2) 

Bộ nhớ DECIMAL (65,0) như sau -

 99999999999999999999999999999999999999999999999999999999999999999 

Để hiểu những gì chúng ta đã thảo luận ở trên, hãy tạo một bảng. Truy vấn để tạo bảng như sau -

 mysql> tạo bảng DecimalDemo-> (-> UserId DECIMAL (65,0) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,62 giây) 

Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -

 mysql> insert vào DecimalDemovalues ​​(99999999999999999999999999999999999999999999999999999999999999999); Truy vấn OK, 1 hàng bị ảnh hưởng (0,16 giây) mysql> chèn vào DecimalDemovalues ​​(99999999999999999999999999999999999999999999999 

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng một câu lệnh chọn. Truy vấn như sau -

 mysql> select * from DecimalDemo; 

Đầu ra

 + ---------------------------------------------- --------------------- + | UserId | + ----------------------------------------------- -------------------- + | 99999999999999999999999999999999999999999999999999999999999999999 || 999999999999999999999999999999999999999999999999999999999999999 | + ---------------------------------------------------------- -------------------- + 2 hàng trong bộ (0,00 giây) 

Nếu bạn cố gắng đưa ra 66 tại thời điểm tạo bảng, bạn sẽ gặp lỗi sau -

 mysql> tạo bảng DecimalDemo1-> (-> UserId DECIMAL (66,0) ->); ERROR 1426 (42000):Độ chính xác quá lớn 66 được chỉ định cho 'UserId'. Tối đa là 65.