Computer >> Máy Tính >  >> Lập trình >> MySQL

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

Có, MySQL chuyển đổi nội bộ bool thành tinyint (1) vì tinyint là kiểu dữ liệu số nguyên nhỏ nhất.

Bạn cũng có thể nói bool đồng nghĩa với tinyint (1). Trước tiên, hãy để chúng tôi tạo một bảng mẫu:

mysql> create table boolToTinyIntDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> Name varchar(20),
   -> isAgeGreaterThan18 bool
   -> );
Query OK, 0 rows affected (1.02 sec)

Bây giờ chúng ta hãy kiểm tra mô tả của bảng:

mysql> desc boolToTinyIntDemo;

Điều này sẽ tạo ra kết quả sau

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

Nhìn vào kết quả đầu ra mẫu ở trên, kiểu dữ liệu cột isAgeGreaterThan18 được chuyển đổi nội bộ từ bool sang tinyint (1).

Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert:

mysql> insert into boolToTinyIntDemo(Name,isAgeGreaterThan18) values('Larry',true);
Query OK, 1 row affected (0.18 sec)

mysql> insert into boolToTinyIntDemo(Name,isAgeGreaterThan18) values('Sam',false);
Query OK, 1 row affected (0.14 sec)

Sau đây là truy vấn để hiển thị các bản ghi từ bảng bằng lệnh select:

mysql> select *from boolToTinyIntDemo;

Điều này sẽ tạo ra kết quả sau

+----+-------+--------------------+
| Id | Name  | isAgeGreaterThan18 |
+----+-------+--------------------+
| 1  | Larry |                  1 |
| 2  | Sam   |                  0 |
+----+-------+--------------------+
2 rows in set (0.00 sec)