Cách chèn boolean trong MySQL

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]   |
--   +-----------+--------------+
2

Thay 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]   |
--   +-----------+--------------+
0

Xem 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]   |
--   +-----------+--------------+
0

CREATE 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]   |
--   +-----------+--------------+
9

Lư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ưới

DESCRIBE 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]   |
--   +-----------+--------------+
3

Giố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]   |
--   +-----------+--------------+
1

Bạ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ư sau

SELECT 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án

Bạ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'];
3

SELECT 
  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]   |
--   +-----------+--------------+
1

Mặ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'];
9

MySQL 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 ứng

Quay 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ư sau

INSERT 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ư sau

SELECT * 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]   |
--   +-----------+--------------+
2

Bạ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 đương

SELECT 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 MySQL

Ngoà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ị boolean

Bạ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
    INSERT INTO books VALUE
      [NULL, "The Three Musketeers", true],
      [NULL, "The Sound of Storm", false];
    
    9
  • Giải thích về kiểu dữ liệu MySQL
    +----+----------------------+-----------+
    | id | title                | published |
    +----+----------------------+-----------+
    |  1 | The Three Musketeers |         1 |
    |  2 | The Sound of Storm   |         0 |
    +----+----------------------+-----------+
    
    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ì. 😉

Làm cách nào để thêm dữ liệu boolean trong MySQL?

MySQL không có kiểu dữ liệu boolean [hoặc bool] . Thay vào đó, nó chuyển đổi các giá trị boolean thành kiểu dữ liệu số nguyên [TINYINT]. Khi bạn tạo một bảng có kiểu dữ liệu boolean, MySQL xuất dữ liệu là 0, nếu sai và 1, nếu đúng.

Làm cách nào để sử dụng boolean trong MySQL?

Để xử lý Boolean trong MySQL, bạn có thể sử dụng BOOL hoặc BOOLEAN hoặc TINYINT[1] . Nếu bạn sử dụng BOOL hoặc BOOLESE, thì MySQL sẽ chuyển đổi nội bộ nó thành TINYINT[1]. Trong kiểu dữ liệu BOOL hoặc BOOLESE, nếu bạn sử dụng chữ đúng thì MySQL biểu thị nó là 1 và chữ sai là 0 giống như trong ngôn ngữ PHP/C/C++.

Làm cách nào để chèn dữ liệu boolean trong SQL?

Bạn có thể chèn một giá trị boolean bằng câu lệnh INSERT. CHÈN VÀO testbool [sometext, is_checked] VALUES ['a', TRUE]; . When you select a boolean value, it is displayed as either 't' or 'f'.

Chủ Đề