Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Kiểu dữ liệu nhỏ nhất cho 1 bit trong MySQL?

Kiểu dữ liệu BIT(1) - nhỏ nhất cho 1 bit trong MySQL

Kiểu BIT(1) chỉ chiếm 1 bit lưu trữ, phù hợp cho cờ true/false, on/off, yes/no.

Cú pháp

yourColumnName BIT(1)

Ví dụ tạo bảng

mysql> CREATE TABLE bitDemo (
    -> isValid BIT(1)
    -> );

Kiểm tra cấu trúc:

mysql> SHOW CREATE TABLE bitDemo;
CREATE TABLE `bitdemo` (
  `isValid` bit(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

Chèn dữ liệu

mysql> INSERT INTO bitDemo VALUES (0), (1), (1), (0);

Hiển thị gốc (hiển thị nhị phân không đọc được):

+---------+
| isValid |
+---------+
|         |
|         |
|         |
|         |
+---------+

Hiển thị giá trị số (cộng 0):

mysql> SELECT isValid + 0 FROM bitDemo;
+-----------+
| isValid+0 |
+-----------+
| 0         |
| 1         |
| 1         |
| 0         |
+-----------+

So sánh các kiểu boolean-like

KiểuKích thướcGiá trịGhi chú
BIT(1)1 bit0/1Nhỏ nhất, gom 8 cột = 1 byte
TINYINT(1)1 byte-128..127Thường dùng cho BOOLEAN
BOOLEAN1 byteTRUE/FALSEAlias của TINYINT(1)
CHAR(1)1 byte'Y'/'N'Dễ đọc, tốn không gian hơn BIT
ENUM('Y','N')1 byte'Y'/'N'Ràng buộc giá trị

Lưu ý BIT(M)

  • BIT(M) với M từ 1-64
  • M ≤ 8: 1 byte, M ≤ 16: 2 bytes, ..., M ≤ 64: 8 bytes
  • MySQL gom nhiều cột BIT liên tiếp vào cùng 1 byte để tiết kiệm
  • Giá trị literal: b'1', b'0', b'101'

Khi nào dùng BIT(1)?

  • Bảng cực lớn (triệu hàng), cần tiết kiệm tối đa
  • Nhiều cờ boolean cùng lúc (gom nhóm 8 cột = 1 byte)
  • Khi không cần index (BIT index kém hiệu quả)