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

BIT และ TINYINT ใน MySQL แตกต่างกันอย่างไร


BIT สามารถใช้เก็บค่า 1 บิตได้ อาจเป็น 0 หรือ 1 เราไม่สามารถจัดเก็บได้ ตัวอย่างเช่น 2 ที่มีประเภทข้อมูล BIT หากเราพยายามแทรก 2 ด้วยประเภทข้อมูล BIT MySQL จะทำให้เกิดข้อผิดพลาด

TINYINT สามารถใช้เก็บค่า 8 บิตได้ ค่าสูงสุดที่เราจัดเก็บได้คือ 127 เราไม่สามารถเก็บได้ เช่น 987 ที่มีค่า 8 บิต หากเราพยายามแทรก 987 ด้วยประเภทข้อมูล TINYINT MySQL จะทำให้เกิดข้อผิดพลาด

ให้เราทำงานผ่าน MySQL เวอร์ชัน 8.0.12

เพื่อตรวจสอบเวอร์ชันที่ติดตั้งในระบบของคุณ

mysql> เลือกเวอร์ชัน ();

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-----------+| รุ่น() |+-----------+| 8.0.12 |+-----------+1 แถวในชุด (0.00 วินาที)

ประเภทบิต

การสร้างตารางด้วยประเภท BIT

mysql> สร้างตาราง BitDemo -> ( -> Id BIT -> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.56 วินาที)

การแทรกระเบียนลงในตาราง 'BitDemo'

mysql> แทรกลงในค่า BitDemo(1); Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงในค่า BitDemo (0); Query OK, 1 แถวได้รับผลกระทบ (0.33 วินาที)

เราได้รับข้อผิดพลาดทุกครั้งที่เราแทรก 2 ลงในบิต

mysql> แทรกลงในค่า BitDemo(2);ข้อผิดพลาด 1406 (22001):ข้อมูลยาวเกินไปสำหรับคอลัมน์ 'Id' ที่แถว 1

TINYINT

การสร้างตารางด้วยประเภทข้อมูล TINYINT

mysql> สร้างตาราง TinyIntDemo -> ( -> Id TINYINT -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.69 วินาที)

กำลังแทรกบันทึก

mysql> แทรกลงในค่า TinyIntDemo (123); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า TinyIntDemo (97); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า TinyIntDemo ( 127);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที)

เราได้รับข้อผิดพลาดทุกครั้งที่เราพยายามใส่ค่าเกิน 127

mysql> แทรกลงในค่า TinyIntDemo (9876);ข้อผิดพลาด 1264 (22003):ค่านอกช่วงสำหรับคอลัมน์ 'Id' ที่แถว 1mysql> แทรกลงในค่า TinyIntDemo (987);ข้อผิดพลาด 1264 (22003):ค่านอกช่วง สำหรับคอลัมน์ 'Id' ที่ rowmysql> แทรกลงในค่า TinyIntDemo (255);ข้อผิดพลาด 1264 (22003):ค่านอกช่วงสำหรับคอลัมน์ 'Id' ที่แถว 1mysql> แทรกลงในค่า TinyIntDemo (254); ERROR 1264 (22003):ออก ของค่าช่วงสำหรับคอลัมน์ 'Id' ที่แถว 1mysql> แทรกลงในค่า TinyIntDemo(200);ERROR 1264 (22003):ค่านอกช่วงสำหรับคอลัมน์ 'Id' ที่แถว 1mysql> แทรกลงในค่า TinyIntDemo(199);ERROR 1264 ( 22003):ค่านอกช่วงสำหรับคอลัมน์ 'Id' ที่แถว 1

ค่าสูงสุดที่เราเก็บได้คือ 127

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

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

นี่คือผลลัพธ์

<ก่อนหน้า>+------+| รหัส |+------+| 123 || 97 || 127 |+------+3 แถวในชุด (0.00 วินาที)