PostgreSQL WHERE
A cláusula `WHERE` no PostgreSQL é usada para filtrar registros que atendem a condições específicas. Ele permite que você recupere apenas as linhas que atendem aos critérios fornecidos.
Uso
A cláusula `WHERE` é normalmente usada em conjunto com comandos de recuperação de dados como `SELECT`, `UPDATE` e `DELETE` para especificar quais registros devem ser afetados. Ela vem depois do nome da tabela e antes de outras cláusulas como `ORDER BY` ou `GROUP BY`.
sql
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Nessa sintaxe, `WHERE condition` define os critérios de filtro para a consulta, limitando o conjunto de resultados apenas às linhas que satisfazem a condição.
Exemplos
1. Filtragem básica
sql
SELECT *
FROM employees
WHERE department = 'Sales';
Este exemplo recupera todas as colunas da tabela `employees` para registros em que o `department` é 'Sales'.
2. Filtragem com várias condições
sql
SELECT first_name, last_name
FROM employees
WHERE department = 'Engineering' AND salary > 50000;
Aqui, a consulta recupera o `primeiro_nome` e o `último_nome` dos funcionários do departamento de "Engenharia" com um salário maior que 50.000.
3. Usando a correspondência de padrões
sql
SELECT product_name
FROM products
WHERE product_name LIKE 'A%';
Este exemplo usa o operador `LIKE` para buscar todos os nomes de produtos que começam com a letra 'A'.
4. Uso do WHERE em uma instrução UPDATE
sql
UPDATE employees
SET salary = salary * 1.10
WHERE department = 'Marketing';
Essa consulta aumenta o salário em 10% para todos os funcionários do departamento de "Marketing".
5. Usando WHERE em uma declaração DELETE
sql
DELETE FROM orders
WHERE order_date < '2023-01-01';
Esse exemplo exclui todos os pedidos feitos antes de 1º de janeiro de 2023.
6. Manipulação de valores NULL
sql
SELECT *
FROM customers
WHERE last_name IS NULL;
Essa consulta recupera todos os clientes cujo `last_name` é `NULL`.
7. Exemplo de operadores lógicos
sql
SELECT employee_id
FROM employees
WHERE department = 'HR' OR department = 'Finance' AND NOT salary < 40000;
Essa consulta obtém IDs de funcionários dos departamentos de "RH" ou "Finanças" com um salário não inferior a 40.000.
Dicas e práticas recomendadas
- Use índices. Certifique-se de que as colunas indexadas sejam usadas nas condições `WHERE` para obter um desempenho de consulta mais rápido. Tenha cuidado ao usar funções ou cálculos em colunas indexadas, pois eles podem anular os benefícios do índice.
- Aproveite os operadores lógicos. Combine várias condições usando `AND`, `OR` e `NOT` para criar filtros complexos.
- Otimize a ordem das condições. Coloque as condições mais restritivas primeiro para reduzir o conjunto de dados rapidamente.
- Use a correspondência de padrões com sabedoria. Use `%` e `_` com `LIKE` com cautela, pois eles podem afetar o desempenho.
- Validar tipos de dados. Certifique-se de que os tipos de dados na condição da cláusula `WHERE` correspondam aos tipos de coluna para evitar erros e aumentar a eficiência.
- Considere a sensibilidade a maiúsculas e minúsculas. Lembre-se de que o PostgreSQL diferencia maiúsculas de minúsculas nas comparações de texto, o que pode afetar os resultados das condições `WHERE` que utilizam strings.