Você já viu tipos de dados que guardam números e texto. Agora chegou a hora de falar do tipo lógico de dado — BOOLEAN. Esse é, talvez, o tipo de dado mais "sincero", porque ele só responde duas perguntas: "Sim" ou "Não". E às vezes — "Talvez" (leia-se: NULL).
O tipo lógico de dado BOOLEAN guarda valores que podem ser só:
TRUE(verdadeiro);FALSE(falso);NULL(sem valor).
Pensa num interruptor: ele pode estar ligado TRUE, desligado FALSE ou num estado desconhecido NULL, tipo se a lâmpada sumiu do nada.
Dá pra dizer que o tipo lógico de dado é a base pra tomar decisões e fazer lógica condicional no SQL. Sem ele, não dava pra fazer um filtro decente numa query ou marcar o status de alguma coisa.
Exemplos de uso
O tipo lógico de dado é super usado em bancos de dados. Olha só uns casos reais:
Flags e status.
Por exemplo, o campo is_active pode mostrar se o usuário tá ativo (TRUE) ou não (FALSE).
SELECT username, is_active
FROM users
WHERE is_active = TRUE;
Controle de execução.
Por exemplo, o campo is_complete pode guardar se a tarefa foi concluída.
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Checagem de disponibilidade.
O campo is_available pode mostrar se o produto tá disponível no estoque.
Como usar BOOLEAN no PostgreSQL?
O tipo lógico de dado no PostgreSQL se chama simplesmente BOOLEAN. Bora criar uma tabela e colocar umas colunas nela:
- Identificador único da tarefa
- Nome da tarefa
- Status lógico de conclusão da tarefa
Depois, bora adicionar alguns registros na tabela:
| task_id | task_name - VARCHAR(255) | is_complete - BOOLEAN |
|---|---|---|
| 1 | Escrever relatório | false |
| 2 | Ir ao mercado | true |
| 3 | Ler um livro | null |
Extraindo dados
Agora vamos ver como pegar dados baseado no valor lógico. Por exemplo, pra pegar só as tarefas não concluídas, faz assim:
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Essa query vai trazer só as tarefas onde is_complete é FALSE.
Resultado:
| task_name |
|---|
| Escrever relatório |
Peculiaridades do BOOLEAN
Filtrando valores
Pra trabalhar com tipo lógico, tu pode usar essa sintaxe:
= TRUE— se quiser dizer que o valor é verdadeiro.= FALSE— se quiser pegar os valores falsos.IS NULL— se quiser pegar registros sem valor.
Exemplo:
SELECT task_name
FROM tasks
WHERE is_complete IS NULL;
Simplificando condições
O PostgreSQL é tão "esperto" que muitas vezes nem precisa escrever = TRUE. Por exemplo:
SELECT task_name
FROM tasks
WHERE is_complete;
Essa query é igual a WHERE is_complete = TRUE.
Erros comuns com BOOLEAN
Quando tu começa a mexer com um tipo de dado novo, é normal errar. Olha só uns problemas clássicos que podem rolar:
Comparando com NULL. Quem tá começando costuma escrever is_active = NULL. Mas NULL não pode ser comparado com =. Pra checar se o valor é NULL, usa IS NULL ou IS NOT NULL.
Escrever = TRUE à toa. Às vezes a galera coloca coisa a mais, tipo WHERE is_active = TRUE. Não é erro, mas dá pra simplificar e deixar só WHERE is_active.
Usar string errado. O tipo lógico é bem rígido. Não dá pra escrever is_active = 'TRUE' ou is_active = 'FALSE'. Usa direto os valores TRUE, FALSE ou NULL.
Pra que serve isso?
Talvez tu pense: pra que complicar, colocando esse BOOLEAN? Por que não usar número, tipo 1 pra verdadeiro e 0 pra falso?
A resposta é simples: BOOLEAN deixa teu código e teus dados mais claros. Quando alguém olha pra uma tabela com o campo is_active, já saca que esse campo guarda uma coisa lógica (sim/não). Isso melhora a leitura do esquema do banco e deixa teu modelo de dados mais fácil de entender pra outros devs.
GO TO FULL VERSION