Sintaxe Básica de Consultas Condicional
SELECT colunas FROM tabela WHERE condição;
Ordem de Execução:
- FROM
- WHERE
- SELECT
Tipos de Condições
Condições Relacionais
Utiliza operadores relacionais para filtrar resultados:
>, <, >=, <=, =, <>
-- 1. Listar funcionários de outros setores além do 200
SELECT * FROM funcionarios WHERE setor_id <> 200;
-- 2. Mostrar nome e salário de funcionários com salário abaixo de R$18.000
SELECT nome, salario FROM funcionarios WHERE salario < 18000;
Combina múltiplas condições usando operadores lógicos:
AND, OR, NOT
-- 3. Listar funcionários fora dos setores 50-100
SELECT nome, setor_id, email FROM funcionarios WHERE NOT (setor_id >= 50 AND setor_id <= 100);
-- 4. Mostrar dados de funcionários com comissão maior que 3% ou ID entre 60-110
SELECT * FROM funcionarios WHERE comissao > 0.03 OR (id_funcionario >= 60 AND id_funcionario <= 110);
LIKE - Pesquisa Parcial
/*
Função: Realiza pesquisa parcial em campos de texto
Caracteres Especiais:
_ - Qualquer caractere individual
% - Qualquer quantidade de caracteres
$ - Caractere de escape
*/
-- 5. Listar funcionários cujos nomes contenham a letra 'z'
SELECT * FROM funcionarios WHERE nome LIKE '%z%';
-- 6. Mostrar nomes que terminam com 'a'
SELECT * FROM funcionarios WHERE nome LIKE '%a';
-- 7. Listar nomes onde o terceiro caractere é 'x'
SELECT * FROM funcionarios WHERE nome LIKE '__x%';
-- 8. Pesquisar por nomes que tenham '_' no segundo caractere
SELECT * FROM funcionarios WHERE nome LIKE '_$_%' ESCAPE '$';
/*
Função: Verifica se um valor está em uma lista específica
Uso:
coluna IN (valor1, valor2, ...)
coluna NOT IN (valor1, valor2, ...)
*/
-- 9. Listar funcionários dos setores 40, 60 e 80
SELECT nome, setor_id FROM funcionarios WHERE setor_id IN (40, 60, 80);
-- 10. Mostrar dados de funcionários sem os cargos 'RH_GERENTE' e 'TI_DEVELOPER'
SELECT * FROM funcionarios WHERE cargo NOT IN ('RH_GERENTE', 'TI_DEVELOPER');
/*
Função: Filtra valores dentro de um intervalo específico
*/
-- 11. Listar funcionários de setores entre 20 e 80
SELECT setor_id, nome FROM funcionarios WHERE setor_id BETWEEN 20 AND 80;
-- 12. Mostrar salário anual fora do intervalo R$120.000 a R$240.000
SELECT nome, salario, salario*12*(1+IFNULL(comissao,0)) AS salario_anual
FROM funcionarios
WHERE salario*12*(1+IFNULL(comissao,0)) NOT BETWEEN 120000 AND 240000;
/*
Função: Verifica presença ausência de valores nulos
Diferença entre IS e =:
IS só avalia NULL
= avalia valores regulares
<=> avalia tanto NULL quanto valores regulares
*/
-- 13. Listar funcionários sem comissão
SELECT * FROM funcionarios WHERE comissao IS NULL;
-- 14. Listar funcionários com comissão
SELECT * FROM funcionarios WHERE comissao IS NOT NULL;