Tipo de dados BOOLEAN MySQL

Resumo : neste tutorial, você aprenderá sobre BOOLEANo 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 BOOLEANtipo de dados.

Para tornar mais conveniente a definição BOOLEANde coluna, o MySQL oferece BOOLEANou BOOLcomo 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 truee falsesem 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 BOOLEANcoluna. 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 taskstabela:

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 taskstabela:

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 truee falsepara 1 e 0 respectivamente.

Porque BOOLEANé TINYINT(1), você pode inserir valores diferentes de 1 e 0 na BOOLEANcoluna. 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 taskstabela:

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 truee false, você pode usar a IFfunçã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 taskstabela, 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 completedvalor 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 ISoperador:

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 ISoperador para testar um valor em relação ao TRUEvalor.

Para obter todas as tarefas pendentes, você pode usar IS FALSEou IS NOT TRUEda 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 BOOLEANtipo de dados dedicado. Em vez disso, ele usa TINYINT(1)para representar o BOOLEANtipo.
  • Use a BOOLEANpalavra-chave para declarar uma coluna com o BOOLEANtipo. Os BOOLEANe TINYINT(1)são sinônimos.
  • Por convenção, zero é falso, enquanto diferente de zero é verdadeiro.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *