Desenvolvimento Web

SQL do zero: SELECT, WHERE, JOIN e as queries que todo desenvolvedor precisa dominar

SQL do zero: SELECT, WHERE, JOIN e as queries que todo desenvolvedor precisa dominar

Independente de qual linguagem você programe — Python, JavaScript, Java, PHP — em algum momento vai precisar trabalhar com banco de dados. SQL (Structured Query Language) é a linguagem universal para comunicar com bancos de dados relacionais. PostgreSQL, MySQL, SQLite, Oracle, SQL Server — todos falam SQL com pequenas variações. Aprender SQL é um dos melhores investimentos que um dev iniciante pode fazer.

O modelo relacional em 5 minutos

Um banco de dados relacional organiza dados em tabelas: linhas são registros, colunas são atributos. Uma tabela alunos tem colunas como id, nome, email, data_nascimento. Cada linha é um aluno. A coluna id é a chave primária — um identificador único que não se repete. Relacionamentos entre tabelas usam chaves estrangeiras: uma tabela matriculas tem um campo aluno_id que referencia o id da tabela alunos.

SELECT: lendo dados

SELECT * FROM alunos; retorna todos os registros e todas as colunas da tabela. O asterisco significa “todas as colunas” — em produção, prefira listar as colunas explicitamente: SELECT nome, email FROM alunos;. Isso é mais eficiente (busca só o que precisa) e mais legível (quem lê sabe exatamente quais dados são usados). O ponto e vírgula ao final é necessário em alguns clientes SQL para delimitar o fim da instrução.

SELECT DISTINCT coluna FROM tabela; retorna valores únicos — sem repetição. ORDER BY coluna ASC (crescente) ou DESC (decrescente) ordena o resultado. LIMIT 10 retorna apenas os primeiros 10 registros — essencial para paginação e para não travar o banco com SELECT * em tabelas de milhões de linhas. Em SQL Server usa-se TOP 10 em vez de LIMIT.

WHERE: filtrando registros

A cláusula WHERE filtra quais linhas são retornadas. SELECT * FROM alunos WHERE cidade = 'São Paulo'; retorna apenas alunos de São Paulo. Operadores de comparação: =, != (ou <>), >, <, >=, <=. Combine condições com AND e OR: WHERE idade >= 18 AND cidade = 'Rio'. Parenteses para controlar prioridade quando combina AND e OR.

LIKE faz busca por padrão em strings: WHERE nome LIKE 'Ana%' retorna nomes que começam com “Ana”. O % é curinga para qualquer sequência de caracteres. _ é curinga para um único caractere. IN verifica se o valor está em uma lista: WHERE estado IN ('SP', 'RJ', 'MG'). BETWEEN para ranges: WHERE nota BETWEEN 7.0 AND 10.0 (inclui os extremos). IS NULL e IS NOT NULL verificam campos vazios — nunca use = NULL, não funciona.

Funções de agregação

Funções de agregação calculam um único valor a partir de múltiplas linhas. COUNT(*) conta linhas. SUM(coluna) soma. AVG(coluna) calcula média. MAX(coluna) e MIN(coluna) retornam máximo e mínimo. Geralmente usadas com GROUP BY: SELECT cidade, COUNT(*) as total FROM alunos GROUP BY cidade retorna quantos alunos existem em cada cidade. HAVING filtra após o agrupamento (WHERE filtra antes): HAVING COUNT(*) > 10 mostra apenas cidades com mais de 10 alunos.

JOIN: combinando tabelas

JOIN é o coração do SQL relacional — ele combina dados de múltiplas tabelas. INNER JOIN retorna apenas as linhas que têm correspondência em ambas as tabelas. Para trazer alunos com suas matrículas: SELECT alunos.nome, cursos.nome FROM alunos INNER JOIN matriculas ON alunos.id = matriculas.aluno_id INNER JOIN cursos ON matriculas.curso_id = cursos.id.

LEFT JOIN retorna todas as linhas da tabela esquerda, mesmo sem correspondência na direita (os campos da direita ficam NULL). Para listar todos os alunos, inclusive os que não têm matrícula: SELECT alunos.nome, matriculas.curso_id FROM alunos LEFT JOIN matriculas ON alunos.id = matriculas.aluno_id. Entender quando usar INNER vs LEFT JOIN é fundamental — usar o errado retorna resultados silenciosamente incorretos. Na dúvida, visualize um diagrama de Venn: INNER JOIN é a interseção, LEFT JOIN é o círculo esquerdo inteiro.

SQL bem escrito é um diferencial raro e valioso no mercado. Desenvolvedores que entendem queries complexas, sabem criar índices e interpretar planos de execução são muito mais eficientes que os que dependem de ORMs para tudo. Pratique no SQLFiddle, no DB Browser for SQLite, ou no pgAdmin — banco de dados é uma das poucas áreas onde prática direta com dados reais ensina mais do que qualquer tutorial.

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: