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

ประเภทข้อมูล MySQL int กับ enum?


หากคุณทราบแล้วว่าต้องการเพียงค่าบางค่าเท่านั้น วิธีที่ดีที่สุดคือการใช้ประเภทข้อมูล ENUM ENUM มีข้อจำกัดมากกว่า

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

ให้เราใช้ประเภทข้อมูล ENUM หากคุณต้องการเก็บเพียง 10,20,30 ต่อไปนี้เป็นแบบสอบถาม -

mysql> สร้างตาราง DemoTable ( Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, Number ENUM('10','20','30') );Query OK, 0 แถวได้รับผลกระทบ (0.24 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable(Number) ('10');Query OK, 1 แถวได้รับผลกระทบ (0.07 วินาที)mysql> แทรกลงในค่า DemoTable(Number) ('20');Query OK, 1 แถวได้รับผลกระทบ ( 0.06 วินาที) mysql> แทรกลงในค่า DemoTable(Number) ('30'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.06 วินาที) mysql> แทรกลงในค่า DemoTable (หมายเลข) ('50'); ข้อผิดพลาด 1265 (01000):ข้อมูล ตัดทอนสำหรับคอลัมน์ 'หมายเลข' ที่แถวที่ 1

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

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+---------+| รหัส | เบอร์ |+----+-------+| 1 | 10 || 2 | 20 || 3 | 30 |+----+-------+3 แถวในชุด (0.00 วินาที)

นี่คือการใช้งาน TINYINT UNSIGNED ให้เราสร้างตารางใหม่ -

mysql> สร้างตาราง DemoTable ( Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, จำนวน tinyint ที่ไม่ได้ลงนาม ); เคียวรีตกลง 0 แถวได้รับผลกระทบ (0.23 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable(Number) (100) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.07 วินาที) mysql> แทรกลงใน DemoTable (หมายเลข) ค่า (50) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า DemoTable(Number) (60); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.06 วินาที) mysql> แทรกลงในค่า DemoTable (หมายเลข) (70); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.07 วินาที)

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

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+---------+| รหัส | เบอร์ |+----+-------+| 1 | 100 || 2 | 50 || 3 | 60 || 4 | 70 |+----+--------+4 แถวในชุด (0.00 วินาที)