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.