Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ช่วงของ MySQL DECIMAL(x,0) คืออะไร?


ช่วงของประเภทข้อมูล DECIMAL มีค่ามากกว่าประเภทข้อมูล INTEGER และ BIGINT ดังที่เราทราบ BIGINT สามารถจัดเก็บ 18446744073709551615 ในขณะที่ DECIMAL คุณสามารถจัดเก็บ DECIMAL(65,0) โดยที่ x แทนค่า 65 nines(9) DECIMAL จัดเก็บตัวเลขเป็นไบต์และสูตรความต้องการในการจัดเก็บข้อมูลคือ:DECIMAL(x,0) i.e.

StorageRequirementInBytes =(x/9) + left;WHERE left =round_up( (x%9) / 2 )

ที่เก็บข้อมูล DECIMAL(65,0) มีดังนี้ -

99999999999999999999999999999999999999999999999999999999999999999999999

เพื่อให้เข้าใจสิ่งที่เรากล่าวถึงข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง DecimalDemo-> (-> UserId DECIMAL(65,0)-> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.62 วินาที)

ตอนนี้คุณสามารถแทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงใน DecimalDemovalues(99999999999999999999999999999999999999999999999999999999999999999) เคียวรีตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที)mysql> แทรกลงใน DecimalDemovalues ​​(999999999999999999999999999999999999999999999999999999999999999) เคียวรีได้รับผลกระทบ 

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก DecimalDemo;

ผลลัพธ์

<ก่อน>+--------------------------------------------- ------------------------------------+| รหัสผู้ใช้ |+--------------------------------------------- --------------------+| 99999999999999999999999999999999999999999999999999999999999999999999999999 || 99999999999999999999999999999999999999999999999999999999999999999999999 |+---------------------------------------------------- --------------------+2 แถวในชุด (0.00 วินาที)

หากคุณพยายามที่จะให้ 66 ในขณะที่สร้างตาราง คุณจะได้รับข้อผิดพลาดดังต่อไปนี้ -

mysql> สร้างตาราง DecimalDemo1-> (-> UserId DECIMAL(66,0)-> );ข้อผิดพลาด 1426 (42000):66 ระบุความแม่นยำสูงเกินไปสำหรับ 'UserId' สูงสุดคือ 65