Dicas de SQL para o ajudar a poupar tempo e a escrever consultas mais simplesteste

A SQL é uma das linguagens mais utilizadas para gerir e manipular dados armazenados numa base de dados relacional.

Neste artigo, vamos abordar alguns códigos de batota SQL que podem ajudá-lo a poupar tempo e a simplificar consultas complexas.

Utilizar Aliases para Nomes de Tabelas e Colunas

Pode utilizar aliases para tornar o seu código SQL mais legível e reduzir a quantidade de digitação necessária ao trabalhar com tabelas longas e nomes de colunas.

Também é possível usar aliases para diferenciar entre várias instâncias da mesma tabela em uma consulta. Aqui está um exemplo:

-- Sem aliases
SELECT employees.employee_name, departments.department_name
FROM employees
JOIN departments ON employees.department_id = departments.department_id

-- Com aliases
SELECT emp.employee_name, dept.department_name
FROM employees AS emp
JOIN departments AS dept ON emp.department_id = dept.department_id

No exemplo acima, utilizámos os pseudónimos “emp” e “dept” para as tabelas “employees” e “departments”, respectivamente. Isto torna o código mais legível e reduz a quantidade de digitação necessária.

Utilizar o operador IN com subconsultas

É possível usar o operador IN para filtrar rapidamente os dados com base em uma lista de valores. Isto é especialmente útil quando se trabalha com subconsultas. Aqui está um exemplo:

-- Recuperar todos os clientes que efectuaram uma encomenda
SELECT *
FROM customers
WHERE customer_id IN (
    SELECT DISTINCT customer_id
    FROM orders
)

No exemplo acima, a subconsulta devolve uma lista de IDs de clientes distintos da tabela “encomendas”. A consulta externa usa o operador IN para recuperar todos os clientes cujos IDs estão na lista retornada pela subconsulta.

Utilizar Wildcards para correspondência de padrões

Pode utilizar wildcards como % e _ com o operador LIKE para procurar rapidamente padrões em dados de cadeia de caracteres. Aqui está um exemplo:

-- Recuperar todos os produtos que contenham a palavra “widget” no seu nome
SELECT *
FROM products
WHERE product_name LIKE '%widget%'

No exemplo acima, utilizámos o wildcard % para corresponder a qualquer número de caracteres antes ou depois da palavra “widget”. Isto recupera todos os produtos que contêm a palavra “widget” no seu nome.

Utilizar a cláusula HAVING com GROUP BY

Pode utilizar a cláusula HAVING para filtrar dados com base em funções agregadas, como COUNT, SUM, AVG, etc.

Eis um exemplo:

-- Recuperar todos os clientes que efetuaram mais de 10 encomendas
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
HAVING COUNT(*) > 10

No exemplo acima, a cláusula GROUP BY agrupa os pedidos por ID de cliente. A função COUNT(*) conta o número de encomendas de cada cliente. A cláusula HAVING é então utilizada para filtrar os resultados de modo a incluir apenas os clientes que efectuaram mais de 10 encomendas.

Utilizar o operador EXISTS para verificações de existência

É possível utilizar o operador EXISTS para verificar rapidamente se uma subconsulta retorna alguma linha. Isso é útil para verificações de existência. Veja um exemplo:

-- Recuperar todos os clientes que efectuaram uma encomenda
SELECT *
FROM customers AS c
WHERE EXISTS (
    SELECT *
    FROM orders AS o
    WHERE o.customer_id = c.customer_id
)

No exemplo acima, o operador EXISTS verifica se a subconsulta devolve alguma linha para cada cliente na tabela “customers”. Se a subconsulta devolver pelo menos uma linha, o cliente é incluído no conjunto de resultados.

Utilizar a instrução CASE para lógica condicional

Pode utilizar a instrução CASE para lógica condicional em consultas SQL.

Aqui está um exemplo:

-- Atribuir um nível de cliente com base na contagem de encomendas
SELECT customer_id, COUNT(*) AS order_count,
    CASE
        WHEN COUNT(*) < 5 THEN 'Bronze'
        WHEN COUNT(*) >= 5 AND COUNT(*) < 10 THEN 'Silver'
        WHEN COUNT(*) >= 10 THEN 'Gold'
    END AS customer_tier
FROM orders
GROUP BY customer_id

Utilizar o operador INNER JOIN para combinar tabelas

Pode utilizar o operador INNER JOIN para combinar dados de duas ou mais tabelas com base numa coluna ou conjunto de colunas comum. Aqui está um exemplo:

-- Recuperar todas as encomendas com detalhes do cliente e do produto
SELECT o.order_id, c.customer_name, p.product_name, o.order_date
FROM encomendas AS o
JOIN customers AS c ON o.customer_id = c.customer_id
JOIN products AS p ON o.product_id = p.product_id

No exemplo acima, o operador INNER JOIN combina dados das tabelas “orders”, “customers” e “products” com base nos seus IDs comuns. O conjunto de resultados inclui o ID do pedido, o nome do cliente, o nome do produto e a data do pedido.

Utilizar o operador LEFT JOIN para dados em falta

É possível utilizar o operador LEFT JOIN para incluir dados de uma tabela, mesmo que não existam dados correspondentes noutra tabela.

Isto é útil quando é necessário incluir todos os dados de uma tabela, mesmo que existam valores em falta em outra tabela.

Aqui está um exemplo:

-- Recuperar todos os clientes e seus pedidos (mesmo que eles não tenham feito um pedido)
SELECT c.customer_id, c.customer_name, o.order_id
FROM clientes AS c
LEFT JOIN orders AS o ON c.customer_id = o.customer_id

No exemplo acima, o operador LEFT JOIN inclui todos os clientes da tabela “customers”, mesmo que não tenham efectuado uma encomenda. O conjunto de resultados inclui o ID do cliente, o nome do cliente e o ID da encomenda.

Referências:

https://www.freecodecamp.org/news/sql-tips-save-time-write-simpler-queries

Leave a Reply

Your email address will not be published. Required fields are marked *