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

ความแตกต่างระหว่าง BIT และ TINYINT ใน MySQL

BIT เก็บได้ 1 บิต (0 หรือ 1) เท่านั้น ส่วน TINYINT เก็บได้ 8 บิต (-128 ถึง 127 สำหรับ SIGNED, 0-255 สำหรับ UNSIGNED)

BIT Type

mysql> CREATE TABLE BitDemo (Id BIT);
mysql> INSERT INTO BitDemo VALUES (1), (0);  -- OK
mysql> INSERT INTO BitDemo VALUES (2);      -- ERROR 1406: Data too long

TINYINT Type

mysql> CREATE TABLE TinyIntDemo (Id TINYINT);
mysql> INSERT INTO TinyIntDemo VALUES (123), (97), (127);  -- OK
mysql> INSERT INTO TinyIntDemo VALUES (128);  -- ERROR 1264: Out of range (SIGNED max 127)
mysql> INSERT INTO TinyIntDemo VALUES (255);  -- ERROR 1264 (SIGNED)

ถ้าใช้ TINYINT UNSIGNED จะเก็บได้ 0-255

ตารางเปรียบเทียบ

คุณสมบัติBITTINYINT (SIGNED)TINYINT UNSIGNED
จำนวนบิต188
ช่วงค่า0-1-128 ถึง 1270 ถึง 255
พื้นที่จัดเก็บ~1 ไบต์1 ไบต์1 ไบต์
ใช้สำหรับFlag เดียว, Bitmaskตัวเลขเล็ก, Flag หลายตัวตัวเลขเล็กไม่ติดลบ
หมายเหตุ: BIT(M) สามารถกำหนดจำนวนบิตได้สูงสุด 64 บิต แต่ใน MySQL จะจัดเก็บเป็น byte แบบปัดขึ้น (BIT(1-8) = 1 byte, BIT(9-16) = 2 bytes, ...)