`ไม่ได้ลงนาม 'ใน MySQL หมายถึงอะไรและเมื่อไหร่ที่จะใช้มัน?


คำตอบ:


527

MySQLพูดว่า:

จำนวนเต็มทุกประเภทสามารถมีแอตทริบิวต์เสริม (ไม่ได้มาตรฐาน) UNSIGNED ประเภทที่ไม่ได้ลงชื่อสามารถใช้เพื่ออนุญาตเฉพาะตัวเลขที่ไม่ต้องการในคอลัมน์ หรือเมื่อคุณต้องการช่วงตัวเลขบนที่ใหญ่กว่าสำหรับคอลัมน์ ตัวอย่างเช่นหากคอลัมน์ INT ไม่ได้ลงนามขนาดของช่วงคอลัมน์จะเท่ากัน แต่จุดสิ้นสุดจะเปลี่ยนจาก -2147483648 และ 2147483647 เป็น 0 และ 4294967295

ฉันจะใช้เมื่อใด

ถามตัวเองด้วยคำถามนี้: ฟิลด์นี้จะมีค่าเป็นลบหรือไม่
ถ้าคำตอบคือไม่ใช่คุณต้องการUNSIGNEDประเภทข้อมูล

ข้อผิดพลาดทั่วไปคือการใช้คีย์หลักที่เพิ่มขึ้นอัตโนมัติINTเริ่มต้นที่ศูนย์แต่ประเภทคือSIGNEDในกรณีนี้คุณจะไม่สัมผัสกับจำนวนลบใด ๆ และคุณลดช่วงของรหัสที่เป็นไปได้ครึ่งหนึ่ง


8
ค่าที่แสดงถึง 'ขนาด' ของสิ่งต่าง ๆ เช่นปริมาณของรายการเฉพาะในการสั่งซื้อหรือระยะห่างระหว่างสองสถานที่โดยทั่วไปจะไม่ได้ลงนาม
SingleNegationElimination

31
คำตอบที่ดีดูเหมือนว่า mysql จะไม่เริ่มต้นจำนวนเต็มเป็น unsigned เมื่อพวกเขาเป็นอัตลักษณ์ที่เพิ่มขึ้นอัตโนมัติ?
wired00

3
หากคุณต้องการคำตอบที่ชัดเจนยิ่งขึ้นให้ดูstackoverflow.com/a/11515613/6335029
NaveenDA

ฉันหวังว่าจะมีแอpositiveททริบิวต์ด้วยเหมือนกันว่าคุณต้องการทำงานกับตัวเลขที่เป็นบวกและไม่ใช่ศูนย์เท่านั้น
still_dreaming_1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.