Mặc dù giá trị boolean là loại giá trị phổ biến nhất mà bạn có thể tìm thấy trong các ngôn ngữ lập trình, MySQL thực sự không có loại dữ liệu
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
0 được lưu trữ nội bộ dưới dạng DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
1 hoặc DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
2Thay vào đó, MySQL sử dụng kiểu dữ liệu
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
3 cho bất kỳ cột nào có kiểu dữ liệu DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
4 hoặc DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
0Xem xét ví dụ sau về câu lệnh
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
6. Lưu ý cách cột DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
7 được đánh dấu là loại DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
0CREATE TABLE books [
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR[150] NOT NULL,
published BOOLEAN
];
Khi bạn đã tạo bảng thành công, bạn có thể kiểm tra kiểu dữ liệu đã triển khai cho các cột bằng cách sử dụng câu lệnh
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
9Lưu ý cách cột
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
7 có loại DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
3 trong tập hợp kết quả bên dướiDESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
Từ khóa
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
4 hoặc DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
0 thực chất là bí danh của DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
3Giống như trong các ngôn ngữ lập trình khác, MySQL coi số
SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
5 giống như số DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
2, trong khi số SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
7 được coi là DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
1Bạn thực sự có thể kiểm tra điều này bằng cách sử dụng câu lệnh
SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
9 như sauSELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
Giá trị của
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
1 thực tế là bất kỳ số nào khác ngoài SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
5, nhưng bạn nên sử dụng số SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
7 để làm cho việc lưu trữ các giá trị boolean trở nên đơn giản và nhất quánBạn có thể kiểm tra điều này trong MySQL bằng cách sử dụng hàm
SELECT
IF[7, 'true', 'false'],
IF[-7, 'true', 'false'],
IF[0, 'true', 'false'];
3SELECT
IF[7, 'true', 'false'],
IF[-7, 'true', 'false'],
IF[0, 'true', 'false'];
Tập kết quả trả về sẽ như hình bên dưới
+------------------------+-------------------------+------------------------+
| IF[7, 'true', 'false'] | IF[-7, 'true', 'false'] | IF[0, 'true', 'false'] |
+------------------------+-------------------------+------------------------+
| true | true | false |
+------------------------+-------------------------+------------------------+
Như bạn có thể thấy, ngay cả một số âm cũng được MySQL coi là
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
1Mặc dù MySQL sử dụng
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
3 cho cột DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
0, nhưng bạn không cần chèn SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
5 hoặc SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
7 cho cột khi bạn đưa ra câu lệnh SELECT
IF[7, 'true', 'false'],
IF[-7, 'true', 'false'],
IF[0, 'true', 'false'];
9MySQL sẽ tự động chuyển đổi bất kỳ giá trị
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
1 hoặc DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
2 nào thành giá trị số tương ứngQuay trở lại ví dụ về bảng
+------------------------+-------------------------+------------------------+
| IF[7, 'true', 'false'] | IF[-7, 'true', 'false'] | IF[0, 'true', 'false'] |
+------------------------+-------------------------+------------------------+
| true | true | false |
+------------------------+-------------------------+------------------------+
2, hãy chèn hai cuốn sách với một trong số chúng chưa được xuất bản như sauINSERT INTO books VALUE
[NULL, "The Three Musketeers", true],
[NULL, "The Sound of Storm", false];
Bảng
+------------------------+-------------------------+------------------------+
| IF[7, 'true', 'false'] | IF[-7, 'true', 'false'] | IF[0, 'true', 'false'] |
+------------------------+-------------------------+------------------------+
| true | true | false |
+------------------------+-------------------------+------------------------+
2 bây giờ sẽ có dữ liệu sau+----+----------------------+-----------+
| id | title | published |
+----+----------------------+-----------+
| 1 | The Three Musketeers | 1 |
| 2 | The Sound of Storm | 0 |
+----+----------------------+-----------+
Bạn cũng có thể truy vấn bảng của mình bằng các giá trị
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
1 hoặc DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
2 như sauSELECT * FROM BOOKS WHERE published IS NOT true;
-- +----+--------------------+-----------+
-- | id | title | published |
-- +----+--------------------+-----------+
-- | 2 | The Sound of Storm | 0 |
-- +----+--------------------+-----------+
SELECT * FROM BOOKS WHERE published IS true;
-- +----+----------------------+-----------+
-- | id | title | published |
-- +----+----------------------+-----------+
-- | 1 | The Three Musketeers | 1 |
-- +----+----------------------+-----------+
Nhưng vấn đề với việc sử dụng
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
3 cho loại DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
0 là đầu ra của câu lệnh SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
9 sẽ hiển thị SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
7 hoặc SELECT true, false;
-- +------+-------+
-- | true | false |
-- +------+-------+
-- | 1 | 0 |
-- +------+-------+
5 thay vì DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
1 hoặc DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
2Bạn cần sử dụng hàm
SELECT
IF[7, 'true', 'false'],
IF[-7, 'true', 'false'],
IF[0, 'true', 'false'];
3 để chuyển đổi giá trị số thành giá trị boolean tương đươngSELECT id, title,
IF[published, 'true', 'false'] AS published
FROM BOOKS;
Với câu truy vấn SQL trên, cột
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
7 sẽ có giá trị là DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
1 hoặc DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
2 như hình bên dưới+----+----------------------+-----------+
| id | title | published |
+----+----------------------+-----------+
| 1 | The Three Musketeers | true |
| 2 | The Sound of Storm | false |
+----+----------------------+-----------+
Và đó là cách mà loại
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
0 được sử dụng trong MySQLNgoài loại
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
3, quản trị viên MySQL cũng có thể sử dụng loại INSERT INTO books VALUE
[NULL, "The Three Musketeers", true],
[NULL, "The Sound of Storm", false];
9 hoặc +----+----------------------+-----------+
| id | title | published |
+----+----------------------+-----------+
| 1 | The Three Musketeers | 1 |
| 2 | The Sound of Storm | 0 |
+----+----------------------+-----------+
0 để lưu trữ các giá trị booleanBạn có thể tìm hiểu thêm về chúng tại đây
- Giải thích về loại dữ liệu MySQL
9INSERT INTO books VALUE [NULL, "The Three Musketeers", true], [NULL, "The Sound of Storm", false];
- Giải thích về kiểu dữ liệu MySQL
0+----+----------------------+-----------+ | id | title | published | +----+----------------------+-----------+ | 1 | The Three Musketeers | 1 | | 2 | The Sound of Storm | 0 | +----+----------------------+-----------+
DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
3 là bí danh mặc định cho loại DESCRIBE books;
-- +-----------+--------------+
-- | Field | Type |
-- +-----------+--------------+
-- | id | int |
-- | title | varchar[150] |
-- | published | tinyint[1] |
-- +-----------+--------------+
0 do MySQL xác định, nhưng bạn có thể sử dụng các loại khác nếu bạn biết mình đang làm gì. 😉