Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

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.
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.
É 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.
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.
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.
É 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.
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
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.
É 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