Banco de dados e SQL do zero
O que é banco de dados, para que serve SQL e os comandos essenciais que aparecem em praticamente toda vaga de desenvolvimento.
Todo aplicativo que guarda informação usa banco de dados. Seu usuário criou uma conta? Os dados foram para um banco. Você fez um pedido? O pedido foi para um banco. A timeline do Instagram que você viu agora? Veio de um banco.
Banco de dados é onde os dados vivem quando o programa não está rodando, quando o servidor reinicia, quando o usuário fecha o app. É o mecanismo de persistência de tudo.
SQL (Structured Query Language) é a linguagem usada para se comunicar com bancos de dados relacionais. Não é linguagem de programação no sentido tradicional, é uma linguagem de consulta: você escreve o que quer buscar, inserir ou modificar, e o banco executa.
O que é um banco relacional
Bancos de dados relacionais organizam informação em tabelas, que funcionam como planilhas com colunas e linhas.
Uma tabela de usuários pode ter colunas id, nome, email e criado_em. Cada linha é um usuário. O banco garante que os dados estejam organizados, que o email não se repita se você não quiser, e que você consiga buscar qualquer linha de forma eficiente.
O "relacional" vem da capacidade de relacionar tabelas entre si. Uma tabela de pedidos tem uma coluna usuario_id que aponta para a tabela de usuários. Isso evita repetir os dados do usuário em cada pedido e mantém tudo consistente.
Os bancos relacionais mais usados no mercado brasileiro: PostgreSQL (o mais popular em projetos modernos), MySQL e MariaDB (muito presentes em sistemas legados e WordPress), SQL Server (Microsoft, comum em empresas tradicionais) e SQLite (leve, ótimo para aprender e para apps mobile).
Os comandos que você vai usar toda hora
Você não precisa decorar tudo de uma vez. Estes são os que aparecem com mais frequência.
SELECT: buscar dados:
SELECT nome, email FROM usuarios;
SELECT * FROM usuarios WHERE ativo = true;
SELECT * FROM usuarios ORDER BY criado_em DESC LIMIT 10;
INSERT: inserir dados:
INSERT INTO usuarios (nome, email) VALUES ('Maria', 'maria@exemplo.com');
UPDATE: atualizar dados:
UPDATE usuarios SET nome = 'Maria Silva' WHERE id = 42;
DELETE: remover dados:
DELETE FROM usuarios WHERE id = 42;
WHERE filtra quais linhas você quer. ORDER BY define a ordem. LIMIT limita quantas linhas retornam. Esses três aparecem em praticamente toda consulta real.
JOIN: relacionando tabelas
É o conceito que mais assusta e mais é usado.
Imagine que você tem uma tabela pedidos com coluna usuario_id. Para mostrar o nome do usuário junto com o pedido, você precisa juntar as duas tabelas:
SELECT pedidos.id, usuarios.nome, pedidos.total
FROM pedidos
JOIN usuarios ON pedidos.usuario_id = usuarios.id;
O JOIN combina as linhas das duas tabelas onde a condição é verdadeira. O resultado é uma tabela temporária com colunas dos dois lados.
Existem variações (LEFT JOIN, RIGHT JOIN, FULL JOIN) que controlam o que acontece quando não tem correspondência em um dos lados. O JOIN mais comum é o INNER JOIN, que você escreve só como JOIN.
GROUP BY: agrupando e contando
Muito usado em relatórios e análises.
-- quantos pedidos cada usuário fez
SELECT usuario_id, COUNT(*) AS total_pedidos
FROM pedidos
GROUP BY usuario_id;
-- total gasto por usuário
SELECT usuario_id, SUM(total) AS gasto_total
FROM pedidos
GROUP BY usuario_id
ORDER BY gasto_total DESC;
Funções de agregação (COUNT, SUM, AVG, MAX, MIN) sempre aparecem junto com GROUP BY.
Banco relacional vs. banco não-relacional
Nem todo banco usa SQL. Bancos não-relacionais (chamados NoSQL) armazenam dados em outros formatos: documentos JSON, pares chave-valor, grafos.
Os mais conhecidos: MongoDB (documentos JSON), Redis (chave-valor, muito rápido, usado para cache), Cassandra (escala horizontal enorme).
Quando usar NoSQL: quando os dados não têm estrutura fixa, quando você precisa de escala horizontal muito grande, ou quando a velocidade de leitura é crítica (Redis para cache).
Para a maioria dos projetos e para começar, banco relacional com SQL é o caminho. É o que aparece em mais vagas, tem mais suporte da comunidade e cobre a maioria dos casos de uso.
Como praticar
Você não precisa instalar nada para começar:
- SQLiteOnline.com e DB Fiddle: rodam SQL no navegador, sem instalar.
- Mode Analytics e HackerRank SQL: exercícios com datasets prontos.
- Kaggle: datasets reais para importar e consultar.
Quando quiser instalar localmente: PostgreSQL com a interface gráfica DBeaver ou TablePlus deixa o ambiente bem prático.
Um projeto simples para fixar: crie um banco de uma livraria com tabelas de livros, autores e vendas, e escreva consultas para responder perguntas como "quais livros do autor X foram vendidos no último mês?" ou "qual autor tem mais vendas?".
Próximos passos
SQL é habilidade pedida em praticamente toda vaga de Back-End, Dados e até QA. Quanto mais cedo você aprende, mais cedo ela começa a aparecer nos projetos.
Após SQL básico, os próximos temas naturais são: modelagem de banco de dados (como estruturar as tabelas bem), índices (como fazer as consultas ficarem rápidas) e transações (garantir que operações complexas não deixem o banco em estado inconsistente).
- Consigo escrever um SELECT com WHERE, ORDER BY e LIMIT?
- Entendo como um JOIN conecta duas tabelas?
- Fiz pelo menos um exercício com GROUP BY e COUNT?
- Criei uma tabela e inseri dados nela?