Desenvolvimento Web

SQL para iniciantes: SELECT, WHERE, JOIN e as queries que você mais vai usar

SQL para iniciantes: SELECT, WHERE, JOIN e as queries que você mais vai usar

SQL (Structured Query Language) é a linguagem de consulta de bancos de dados relacionais — e é provavelmente a linguagem mais usada no mundo, considerando que está presente em praticamente todo sistema de software que armazena dados. MySQL, PostgreSQL, SQLite, SQL Server, Oracle — todos falam SQL com pequenas variações de sintaxe. Aprender SQL é uma das habilidades com maior retorno de investimento para qualquer desenvolvedor, analista de dados, ou profissional de tecnologia.

Conceitos básicos: tabelas, linhas e colunas

Um banco de dados relacional organiza dados em tabelas (pense em planilhas Excel). Cada tabela tem colunas (os campos/atributos) e linhas (os registros/dados). Uma tabela usuarios pode ter colunas id, nome, email, data_cadastro — e cada usuário é uma linha. A relação entre tabelas é feita por chaves: a coluna usuario_id na tabela pedidos aponta para a coluna id da tabela usuarios, ligando pedidos aos seus donos.

SELECT: buscando dados

-- Busca todos os campos de todos os usuários
SELECT * FROM usuarios;

-- Busca apenas nome e email
SELECT nome, email FROM usuarios;

-- Limita a 10 resultados
SELECT nome, email FROM usuarios LIMIT 10;

-- Ordena por nome em ordem alfabética
SELECT nome, email FROM usuarios ORDER BY nome ASC;

-- Ordena por data de cadastro, mais recente primeiro
SELECT * FROM usuarios ORDER BY data_cadastro DESC;

WHERE: filtrando resultados

-- Busca usuário por email exato
SELECT * FROM usuarios WHERE email = 'joao@exemplo.com';

-- Usuários cadastrados em 2025
SELECT * FROM usuarios WHERE YEAR(data_cadastro) = 2025;

-- Múltiplas condições com AND e OR
SELECT * FROM usuarios
WHERE ativo = 1 AND cidade = 'São Paulo';

-- LIKE para busca parcial (% é curinga)
SELECT * FROM usuarios WHERE nome LIKE 'João%';  -- começa com João
SELECT * FROM usuarios WHERE email LIKE '%gmail.com';  -- termina com gmail.com

-- IN: várias opções de um campo
SELECT * FROM usuarios WHERE cidade IN ('São Paulo', 'Rio de Janeiro', 'Curitiba');

-- Intervalo de valores
SELECT * FROM pedidos WHERE valor BETWEEN 100 AND 500;

JOIN: combinando dados de múltiplas tabelas

JOIN é onde SQL brilha — e onde muitos iniciantes travam. A ideia: combinar linhas de tabelas diferentes baseado em um campo em comum.

-- INNER JOIN: retorna apenas os registros com correspondência nas duas tabelas
SELECT
    u.nome,
    u.email,
    p.id AS pedido_id,
    p.valor,
    p.data_pedido
FROM usuarios u
INNER JOIN pedidos p ON p.usuario_id = u.id
ORDER BY p.data_pedido DESC;

-- LEFT JOIN: retorna TODOS os usuários, mesmo os sem pedidos
-- (colunas de pedidos ficam NULL para quem não tem pedido)
SELECT
    u.nome,
    COUNT(p.id) AS total_pedidos
FROM usuarios u
LEFT JOIN pedidos p ON p.usuario_id = u.id
GROUP BY u.id, u.nome;

GROUP BY e funções de agregação

-- Total de pedidos por cidade
SELECT
    u.cidade,
    COUNT(p.id) AS total_pedidos,
    SUM(p.valor) AS valor_total,
    AVG(p.valor) AS ticket_medio
FROM pedidos p
INNER JOIN usuarios u ON u.id = p.usuario_id
GROUP BY u.cidade
ORDER BY total_pedidos DESC;

-- HAVING: filtra grupos (como WHERE mas para resultados de GROUP BY)
SELECT usuario_id, COUNT(*) AS qtd_pedidos
FROM pedidos
GROUP BY usuario_id
HAVING COUNT(*) >= 5;  -- apenas usuários com 5 ou mais pedidos

INSERT, UPDATE e DELETE

-- Inserir registro
INSERT INTO usuarios (nome, email, ativo)
VALUES ('Maria Costa', 'maria@exemplo.com', 1);

-- Atualizar (SEMPRE use WHERE em UPDATE para não alterar tudo!)
UPDATE usuarios
SET cidade = 'Campinas'
WHERE id = 42;

-- Deletar (SEMPRE use WHERE em DELETE!)
DELETE FROM pedidos WHERE status = 'cancelado' AND data_pedido < '2024-01-01';

O aviso sobre WHERE em UPDATE e DELETE não é exagero — esquecer o WHERE atualiza ou deleta TODOS os registros da tabela. É um dos erros mais comuns e devastadores em bancos de dados. Sempre verifique o WHERE antes de executar qualquer UPDATE ou DELETE em produção.

Praticando SQL gratuitamente

SQLiteOnline.com e DB-Fiddle.com permitem praticar SQL no browser sem instalar nada. Para prática local, SQLite é zero-configuração e funciona direto com Python (import sqlite3). PostgreSQL e MySQL têm imagens Docker oficiais que sobem em um comando. O site SQLZoo oferece exercícios interativos progressivos em SQL — uma das melhores formas de aprender praticando.

Tem um projeto em mente?

Somos especialistas em transformar ideias em produtos digitais. Apps, sites, automações e IA — vamos construir juntos.

Resposta rápida Orçamento sem compromisso +100 projetos entregues
Compartilhar: