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

MySQL có chuyển đổi BOOL thành TINYINT(1) nội bộ không?

Có. Trong MySQL, BOOL và BOOLEAN là **từ khóa đồng nghĩa (alias)** của TINYINT(1). MySQL lưu trữ nội bộ là TINYINT(1).

Minh chứng

Tạo bảng cột BOOL:

CREATE TABLE boolToTinyIntDemo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20),
    isAgeGreaterThan18 BOOL
);

Kiểm tra cấu trúc (DESC):

+--------------------+-------------+------+-----+---------+----------------+
| Field              | Type        | Null | Key | Default | Extra          |
+--------------------+-------------+------+-----+---------+----------------+
| Id                 | int(11)     | NO   | PRI | NULL    | auto_increment |
| Name               | varchar(20) | YES  |     | NULL    |                |
| isAgeGreaterThan18 | tinyint(1)  | YES  |     | NULL    |                |
+--------------------+-------------+------+-----+---------+----------------+

→ Cột isAgeGreaterThan18 kiểu BOOL hiển thị là tinyint(1).

Chèn dữ liệu:

INSERT INTO boolToTinyIntDemo (Name, isAgeGreaterThan18) VALUES ('Larry', TRUE), ('Sam', FALSE);

SELECT:

+----+-------+--------------------+
| Id | Name  | isAgeGreaterThan18 |
+----+-------+--------------------+
| 1  | Larry | 1                  |
| 2  | Sam   | 0                  |
+----+-------+--------------------+

Tóm tắt:

  • TRUE = 1, FALSE = 0 (không phân biệt hoa/thường).
  • IS TRUE, IS FALSE, IS NULL dùng cho kiểm tra boolean.
  • Khi migration sang DB khác (PostgreSQL, SQL Server), chú ý: PostgreSQL có kiểu BOOLEAN thực sự, SQL Server dùng BIT.