Resumo : neste tutorial, você aprenderá sobre BOOLEAN
o tipo de dados MySQL e como usá-lo para armazenar valores booleanos nos bancos de dados.
Introdução ao tipo de dados MySQL BOOLEAN
O MySQL não possui um tipo de dados booleano dedicado. Em vez disso, o MySQL usa TINYINT(1)
para representar o BOOLEAN
tipo de dados.
Para tornar mais conveniente a definição BOOLEAN
de coluna, o MySQL oferece BOOLEAN
ou BOOL
como sinônimo de TINYINT(1)
.
Então, em vez de definir uma coluna BOOLEAN como esta:
column_name TINYINT(1)
Você pode usar a palavra-chave BOOL ou BOOLEAN da seguinte maneira:
column_name BOOL
No MySQL, a convenção é que zero é considerado falso, enquanto um valor diferente de zero é considerado verdadeiro.
Ao trabalhar com literais booleanos, você pode usar as constantes true
e false
sem distinção entre maiúsculas e minúsculas, o que equivale a 1 e 0, respectivamente. Por exemplo:
SELECT true, false, TRUE, FALSE, True, False;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
1 0 1 0 1 0
Exemplo BOOLEAN do MySQL
Daremos um exemplo de uso do tipo de dados MySQL BOOLEAN.
Primeiro, crie uma nova tabela chamada tasks
:
CREATE TABLE tasks (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
completed BOOLEAN
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A tasks
tabela possui três colunas id
, title
, e completed
.
O concluído é uma BOOLEAN
coluna. Como the BOOLEAN
é sinônimo de TINYINT(1)
, quando você descreve a estrutura da tabela , o MySQL mostra TINYINT(1)
:
DESCRIBE tasks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
| completed | tinyint(1) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
Linguagem de código: PHP ( php )
Segundo, insira duas linhas na tasks
tabela:
INSERT INTO tasks(title, completed)
VALUES
('Master MySQL Boolean type', true),
('Design database table', false);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Antes de salvar os dados na coluna booleana, o MySQL os converte em 1 ou 0.
A consulta a seguir recupera dados da tasks
tabela:
SELECT
id,
title,
completed
FROM
tasks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+---------------------------+-----------+
| id | title | completed |
+----+---------------------------+-----------+
| 1 | Master MySQL Boolean type | 1 |
| 2 | Design database table | 0 |
+----+---------------------------+-----------+
2 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
A saída indica que o MySQL converteu true
e false
para 1 e 0 respectivamente.
Porque BOOLEAN
é TINYINT(1)
, você pode inserir valores diferentes de 1 e 0 na BOOLEAN
coluna. Por exemplo:
INSERT INTO tasks(title, completed)
VALUES
('Test Boolean with a number', 2);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
Query OK, 1 row affected (0.01 sec)
Linguagem de código: CSS ( css )
Consultando dados da tasks
tabela:
SELECT * FROM tasks;
Saída:
+----+----------------------------+-----------+
| id | title | completed |
+----+----------------------------+-----------+
| 1 | Master MySQL Boolean type | 1 |
| 2 | Design database table | 0 |
| 3 | Test Boolean with a number | 2 |
+----+----------------------------+-----------+
3 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Se quiser gerar o resultado como true
e false
, você pode usar a IF
função da seguinte maneira:
SELECT
id,
title,
IF(completed, 'true', 'false') completed
FROM
tasks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+----------------------------+-----------+
| id | title | completed |
+----+----------------------------+-----------+
| 1 | Master MySQL Boolean type | true |
| 2 | Design database table | false |
| 3 | Test Boolean with a number | true |
+----+----------------------------+-----------+
3 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Operadores BOOLEAN do MySQL
Para obter todas as tarefas concluídas na tasks
tabela, você pode fazer a seguinte consulta:
SELECT
id, title, completed
FROM
tasks
WHERE
completed = TRUE;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+---------------------------+-----------+
| id | title | completed |
+----+---------------------------+-----------+
| 1 | Master MySQL Boolean type | 1 |
+----+---------------------------+-----------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
A consulta retornou a tarefa com completed
valor 1. Não mostra a tarefa com o valor concluído 2 porque TRUE
é 1 e não 2.
Para corrigir isso, você pode usar o IS
operador:
SELECT
id,
title,
completed
FROM
tasks
WHERE
completed IS TRUE;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+----------------------------+-----------+
| id | title | completed |
+----+----------------------------+-----------+
| 1 | Master MySQL Boolean type | 1 |
| 3 | Test Boolean with a number | 2 |
+----+----------------------------+-----------+
2 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Neste exemplo, usamos o IS
operador para testar um valor em relação ao TRUE
valor.
Para obter todas as tarefas pendentes, você pode usar IS FALSE
ou IS NOT TRUE
da seguinte forma:
SELECT
id,
title,
completed
FROM
tasks
WHERE
completed IS NOT TRUE;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+-----------------------+-----------+
| id | title | completed |
+----+-----------------------+-----------+
| 2 | Design database table | 0 |
+----+-----------------------+-----------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Resumo
- MySQL não possui
BOOLEAN
tipo de dados dedicado. Em vez disso, ele usaTINYINT(1)
para representar oBOOLEAN
tipo. - Use a
BOOLEAN
palavra-chave para declarar uma coluna com oBOOLEAN
tipo. OsBOOLEAN
eTINYINT(1)
são sinônimos. - Por convenção, zero é falso, enquanto diferente de zero é verdadeiro.