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

ความหมายของ UNSIGNED ใน MySQL และเมื่อไหร่ควรใช้

UNSIGNED คืออะไร?

UNSIGNED เป็น Attribute ของชนิดตัวเลข (INT, BIGINT, ทศนิยม) ที่บังคับให้เก็บ เฉพาะค่าบวกและศูนย์ ไม่ยอมรับค่าลบ

ช่วงค่าเปรียบเทียบ (INT)

TypeSigned (ปกติ)Unsigned
INT-2,147,483,648 ถึง 2,147,483,6470 ถึง 4,294,967,295

ตัวอย่าง

สร้างตาราง UNSIGNED

mysql> create table UnsignedDemoWithPositiveValue (
    -> Distance int unsigned
    -> );
Query OK, 0 rows affected (0.86 sec)

ทดสอบค่าที่เกินช่วง (4294967296)

mysql> insert into UnsignedDemoWithPositiveValue values(4294967296);
ERROR 1264 (22003): Out of range value for column 'Distance' at row 1

ทดสอบค่าสูงสุด (4294967295)

mysql> insert into UnsignedDemoWithPositiveValue values(4294967295);
Query OK, 1 row affected (0.30 sec)

ทดสอบค่าลบ (-124)

mysql> insert into UnsignedDemoWithPositiveValue values(-124);
ERROR 1264 (22003): Out of range value for column 'Distance' at row 1

ทดสอบค่าบวกปกติ (124)

mysql> insert into UnsignedDemoWithPositiveValue values(124);
Query OK, 1 row affected (0.86 sec)

แสดงผล

mysql> select * from UnsignedDemoWithPositiveValue;
+------------+
| Distance   |
+------------+
| 4294967295 |
| 124        |
+------------+
2 rows in set (0.00 sec)

เมื่อไหร่ควรใช้ UNSIGNED?

  • ค่าที่ไม่มีโอกาสเป็นลบ: อายุ, ราคา, จำนวน, ระยะทาง, ID
  • ต้องการช่วงค่าบวกมากขึ้น 2 เท่า (ไม่ต้องไปใช้ BIGINT)
  • เพื่อความชัดเจนของ Domain Logic

ข้อควรระวัง: การคำนวณระหว่าง UNSIGNED และ SIGNED อาจให้ผลลัพธ์ไม่คาดคิด ควรใช้ชนิดเดียวกันทั่วทั้งแอปพลิเคชัน