AULA 53
MÓDULO 7
banco de dados
⏱ 55 min
SQL na Prática
SELECT, JOIN, GROUP BY, agregações. Ordem lógica de execução. EXPLAIN ANALYZE. Knex como query builder.
SQLSELECTJOINGROUP BYEXPLAIN ANALYZEKnexaggregação
SQL na prática
SQL é a linguagem universal dos bancos relacionais. Dominar SELECT, JOIN, GROUP BY e subqueries resolve 90% dos problemas do dia a dia.
ORDEM LÓGICA DO SELECT
①
FROM / JOIN — quais tabelas
②
WHERE — filtrar linhas
③
GROUP BY — agrupar
④
HAVING — filtrar grupos
⑤
SELECT — quais colunas
⑥
ORDER BY — ordenar
⑦
LIMIT / OFFSET — paginar
JOINs
INNER JOIN retorna linhas com match nos dois lados. LEFT JOIN retorna todos da esquerda e match da direita. RIGHT/FULL para outros casos.
EXPLAIN ANALYZE
Antes de otimizar uma query, execute EXPLAIN ANALYZE para ver o plano de execução. Sequential scan em tabela grande = precisa de índice.
javascript
-- Queries SQL na prática -- Relatório: receita por mês dos últimos 12 meses SELECT DATE_TRUNC('month', o.created_at) AS mes, COUNT(*) AS pedidos, SUM(o.total) AS receita, AVG(o.total) AS ticket_medio FROM orders o WHERE o.status = 'paid' AND o.created_at >= NOW() - INTERVAL '12 months' GROUP BY mes ORDER BY mes DESC; -- Top produtos com estoque baixo SELECT p.name, p.sku, p.stock, COUNT(oi.id) AS vendas_30d FROM products p LEFT JOIN order_items oi ON oi.product_id = p.id AND oi.created_at >= NOW() - INTERVAL '30 days' WHERE p.stock < 10 GROUP BY p.id ORDER BY p.stock ASC, vendas_30d DESC LIMIT 20; -- Node.js com query builder (Knex) const top = await knex('products as p') .select('p.name', 'p.stock') .where('p.stock', '<', 10) .orderBy('p.stock', 'asc') .limit(20)
quiz · aula 53
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Qual é a ordem lógica de execução de um SELECT com WHERE e GROUP BY?
QUESTÃO 02
Qual JOIN retorna TODOS os registros da tabela esquerda mesmo sem match?
QUESTÃO 03
O que EXPLAIN ANALYZE mostra?
0/3