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