O que fiz para aprender e criar consultas complexas e gigantescas usando sql
Estou a trabalhar numa aplicação web há 2 meses, o que me obrigou a melhorar os meus conhecimentos em sql. Foi preciso alguma dedicação para obter resultados mais ou menos consideráveis, por isso aqui ficam algumas dicas para quem quer construir consultas mais complexas e eficientes.
-
Dominar o básico: Antes de se aventurar em consultas complexas, certifique-se de que tem um bom conhecimento das noções básicas de
SQL, comoSELECT,INSERT,UPDATE,DELETE,JOIN,GROUP BY,HAVINGeWHERE. -
Entenda os diferentes tipos de junções: As junções são a espinha dorsal de consultas complexas. Domine os diferentes tipos:
INNER JOIN: Combina registos comuns entre duas tabelas.
LEFT JOIN(ouLEFT OUTER JOIN): Devolve todos os registos da tabela da esquerda, mesmo que não haja correspondência na tabela da direita.RIGHT JOIN: Semelhante aoLEFT JOIN, mas devolve todos os registos da tabela da direita.FULL JOIN: Devolve registos quando existe uma correspondência numa das tabelas.
- Utilizar subconsultas e CTEs (Common Table Expressions):
- Subconsultas: São consultas dentro de consultas. Podem ser utilizadas para dividir grandes problemas em partes mais pequenas.
SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
- CTEs: Proporcionam uma forma mais legível e reutilizável de estruturar consultas complexas. São definidos com
WITH.
WITH HighEarners AS (
SELECT name, salary FROM employees WHERE salary > 5000
)
SELECT * FROM HighEarners;
- Utilizar agregações de forma inteligente: Utilize funções como
SUM(),AVG(),COUNT(),MIN(),MAX()combinadas comGROUP BYpara resumir dados de grandes volumes de registos.
SELECT department, COUNT(employee_id), AVG(salary)
FROM employees
GROUP BY department;
- Aprender a otimizar as consultas:
- Utilizar índices: A indexação de colunas frequentemente utilizadas em WHERE e JOIN pode melhorar o desempenho.
- Examine o plano de execução: Use o comando EXPLAIN para ver como o banco de dados processa suas consultas e identificar gargalos.
EXPLAIN SELECT * FROM employees WHERE salary > 5000;
Comece sempre por coisas pequenas e vai pegando a pratica.