Tutorial SQL
Aprenda SQL do zero, como numa escola: cada comando é explicado pedaço por pedaço, você vê a resposta de verdade do banco de dados logo embaixo e pratica num editor aqui mesmo na página. Quem responde é o SQLite, o banco de dados mais usado do mundo, rodando dentro do seu navegador. Você não precisa instalar nada para começar, em qualquer sistema: Windows, macOS, Linux ou até um Chromebook.
Comece pelo Nível 1 ❯Experimente agora
A caixa abaixo é o editor Experimente do guia. Em cima fica o comando SQL; clique em Rodar ▶ e a resposta do banco aparece embaixo, como uma tabela. O banco é o da Loja Aurora, uma loja de departamentos inventada para o guia. Pode mexer à vontade: cada Rodar começa com a loja inteira de novo.
Missão: rode o comando como está e veja os produtos que custam menos de 5 reais. Depois, a Ana quer saber quais produtos estão em falta: troque a última linha, WHERE preco < 5;, por WHERE estoque = 0; e rode de novo.
SELECT nome, preco FROM produtos WHERE preco < 5;
SELECT nome, preco FROM produtos WHERE estoque = 0;
O que aconteceu: você fez uma pergunta ao banco de dados, numa língua que ele entende. Lida em voz alta, ela diz: "selecione (SELECT) o nome e o preço, da (FROM) tabela de produtos, onde (WHERE) o estoque é zero". O banco procurou entre os 45 produtos da loja e devolveu os 2 que combinam: o Pen Drive 32GB e o Carrinho de Fricção. Essa língua é o SQL, e é isso que este guia ensina. A aula O que é SQL conta essa história com calma.
Se você digitou algo errado, viu um quadro vermelho com uma mensagem em inglês, como no such column: estoq ("não existe a coluna estoq"). O banco não adivinha: ele diz exatamente o que não entendeu. Todas as aulas mostram os erros mais comuns, com a mensagem real e o jeito de consertar.
Mais uma pergunta
Quantos pedidos a loja já recebeu? O count(*) ("conte as linhas") responde. Depois troque pedidos por clientes nas duas vezes em que aparece e descubra quantos clientes a loja tem.
SELECT count(*) AS pedidos FROM pedidos;
O que é este guia
Quase todo programa que guarda informação usa um banco de dados: o aplicativo do banco guarda as suas transações, a loja on-line guarda os produtos e os pedidos, o celular guarda os contatos e as mensagens. E a língua que se usa para conversar com esses bancos é o SQL (Structured Query Language, "linguagem de consulta estruturada"), criada nos anos 1970 e até hoje a mesma no essencial.
Quem aprende SQL consegue:
- tirar respostas de uma montanha de dados: "quais clientes compraram este mês?", "qual produto vende mais?";
- somar, contar e fazer médias, como numa planilha, mas com milhões de linhas;
- juntar informações de várias tabelas: o pedido, o cliente que comprou e os produtos de cada pedido;
- criar o seu próprio banco, com as tabelas, as regras e as ligações entre elas;
- trabalhar com qualquer linguagem de programação (PHP, Python, Java…), porque todas falam com o banco em SQL;
- passar para o MySQL, o PostgreSQL ou o SQL Server sem começar do zero: o SQL é quase o mesmo.
O guia é para quem nunca mexeu num banco de dados. Ele começa do zero absoluto (o que é uma tabela? o que é uma linha?) e vai até transações, funções de janela, modelagem e segurança. O banco usado nas aulas é o SQLite: ele é pequeno, não precisa de servidor e está dentro de todo celular e navegador. O SQL que você aprende aqui é o SQL padrão; quando outros bancos fazem diferente, uma nota "Nos outros bancos" mostra o jeito deles. A aula Os Bancos Famosos compara os principais.
O banco das aulas: a Loja Aurora
Todas as aulas usam o mesmo banco: o da Loja Aurora, uma loja de departamentos (fictícia) de Teresina, no Piauí, que vende de lápis a pen drives. Ele tem 7 tabelas: categorias, produtos, fornecedores, clientes, funcionarios, pedidos e itens_pedido. A dona é a Ana, que você vai acompanhar aula a aula, das primeiras consultas até os relatórios do fim do ano. A aula O Banco da Loja Aurora apresenta cada tabela:
SELECT * FROM categorias;
Como as aulas funcionam
Nenhum SQL aparece "seco". Toda aula segue o mesmo caminho:
- A ideia primeiro. Antes do código, você entende o problema que ele resolve, com uma comparação do dia a dia: um caderno de fichas, uma planilha, o estoque da lojinha.
- Anatomia. Cada parte de um comando novo é separada e explicada.
- O resultado real. Embaixo de cada exemplo, um quadro Resultado com a resposta do SQLite, calculada na hora pelo seu navegador. Nenhuma tabela foi digitada à mão.
- Experimente. Pelo menos duas caixas por aula para você mudar o SQL e ver a resposta, muitas com uma missão que confere sozinha se você acertou.
- Várias formas de fazer. Quase sempre há mais de um jeito de escrever a mesma pergunta, e uma tabela "qual usar" mostra quando escolher cada um.
- Quando dá errado. O SQL com erro e a mensagem real do SQLite, traduzida e explicada.
- Exercícios e resumo. Perguntas com correção na hora e uma lista curta do que levar da aula.
Exemplo: a anatomia de uma consulta
Veja como as aulas desmontam um comando. Primeiro o SQL, com o resultado embaixo:
SELECT nome, preco FROM produtos WHERE preco < 5;
Agora cada parte:
- SELECT
- "Selecione": o começo de toda pergunta ao banco. Diz que você quer ler dados (aula SELECT).
- nome, preco
- As colunas que você quer ver, separadas por vírgula. Na resposta, elas viram o cabeçalho da tabela.
- FROM produtos
- "Da tabela produtos": onde o banco vai procurar.
- WHERE preco < 5
- "Onde o preço é menor que 5": o filtro. Só passam as linhas em que isso é verdade (aula WHERE).
- ;
- O ponto e vírgula fecha o comando. Com ele, você pode escrever vários comandos seguidos.
As palavras em maiúsculas (SELECT, FROM, WHERE) são do SQL; as minúsculas (nome, preco, produtos) são os nomes que a loja deu às suas tabelas e colunas. O banco aceitaria tudo em minúsculas, mas escrever assim deixa claro, de relance, o que é comando e o que é nome.
Exemplo: o terminal
Além do editor, as aulas mostram o terminal da máquina fictícia do guia: um computador chamado notebook, da usuária ana. Lá, o banco da loja é o arquivo loja.db, e quem conversa com ele é o programa sqlite3:
$ sqlite3 loja.db "SELECT nome, preco FROM produtos WHERE preco < 5;" Caneta Esferográfica Azul|2.79 Lápis Grafite HB|1.15 Marca-texto Amarelo|4.9
A resposta é a mesma do quadro de cima, num formato mais simples: uma linha por produto, com as colunas separadas por |. O motor é o mesmo SQLite nos dois lugares, então tudo o que você aprende no editor vale no terminal. A aula O Editor do Guia mostra as diferenças, e Instalar o SQLite ensina a pôr o sqlite3 no seu computador.
Escolha sua trilha
O guia tem três níveis, uma seção de projetos e uma de referência. Os níveis foram pensados para serem feitos em ordem: cada aula usa o que as anteriores ensinaram.
Nível 1 · Iniciante
SQL do zero.
- Começando: o que é um banco de dados e o SQL, os bancos famosos, instalar o SQLite e o terminal
- Lendo Dados:
SELECT,WHERE,AND/OR,ORDER BY,LIMIT - Filtros Espertos:
LIKE,IN,BETWEENe o valorNULL - Mudando Dados:
INSERT,UPDATE,DELETEe o perigo doWHEREesquecido - Contando e Somando:
COUNT,SUM,AVG,MIN,MAX
Nível 2 · Intermediário
Relacionando tabelas.
- Agrupando:
GROUP BYeHAVING - Juntando Tabelas: os
JOINe oUNION - Subconsultas,
EXISTS,CASEeCOALESCE - Criando Tabelas: tipos,
PRIMARY KEY,FOREIGN KEY,ALTER TABLE - Organizando o Banco: índices, views, datas, funções, CSV e backup
Nível 3 · Avançado
Consultas de gente grande.
- Transações:
BEGIN,COMMIT,ROLLBACKe as garantias ACID - Consultas Poderosas:
WITH, funções de janela, JSON e busca de texto - Desempenho:
EXPLAIN, índices na prática,PRAGMAeVACUUM - Modelagem e Segurança: normalização, diagramas, SQL injection e parâmetros
- Os Dialetos: MySQL, PostgreSQL, SQL Server e o SQL dentro das linguagens
Projetos
Bancos completos, construídos passo a passo.
- A Loja Aurora completa e os relatórios da loja
- Biblioteca e notas da escola
- Controle de gastos
- Da planilha ao banco
Referência
Consulta rápida para quando você já sabe o que procura.
- Palavras-chave e tipos de dados
- Funções de texto, números, datas, agregadas e de janela
- Comandos de ponto e PRAGMAs
- Erros comuns, traduzidos
Como estudar
SQL se aprende perguntando, como quem aprende a pesquisar numa biblioteca. Para cada aula, siga estes quatro passos:
- Leia com calma. Leia a ideia, a anatomia e o resultado. Não pule a parte "Quando dá errado": quem entende a mensagem de erro conserta o problema em segundos.
- Mexa nos exemplos. Em toda caixa Experimente, mude um número, troque uma coluna, apague um pedaço de propósito e veja o que o banco responde. Não tem como estragar nada: cada Rodar começa com a loja inteira.
- Faça as missões. As caixas com Missão conferem sozinhas se você acertou. Tente de verdade antes de abrir a solução; se abrir, digite a solução você mesmo em vez de só olhar.
- Repita no seu computador. Quando chegar às aulas do terminal, instale o
sqlite3e refaça as consultas num banco seu. Algumas coisas (os comandos de ponto, importar uma planilha, o backup) só existem lá.
Ler não basta: digite cada consulta. Copiar e colar ensina pouco; digitar faz você reparar em cada vírgula, cada aspa e cada ponto e vírgula. Comece pela aula O que é um Banco de Dados e, antes de ir longe, dê uma olhada em O Editor do Guia: ela mostra tudo o que as caixas Experimente sabem fazer.
Como ler este guia
| Elemento | O que significa |
|---|---|
Caixa com consulta.sql no canto | Um comando SQL. O nome no canto é só um rótulo (arquivos com SQL costumam terminar em .sql). |
| Quadro Resultado embaixo do código | A resposta do SQLite para aquele comando, calculada pelo seu navegador na hora. Não é uma imagem. |
| NULL em itálico numa tabela | "Sem valor": aquele registro não tem nada naquela coluna (aula O Valor NULL). |
| Caixa Quando dá errado | SQL com um erro colocado de propósito, com a mensagem real do SQLite em vermelho. |
ana@notebook:~$ | O prompt do terminal: usuária ana, na máquina notebook, na pasta pessoal (~). O que vem depois é o comando digitado. |
sqlite> | O prompt do programa sqlite3: ele está esperando um comando SQL ou um comando de ponto. |
| Linhas sem prompt | A resposta do computador. |
| ← etiqueta | Uma explicação do guia sobre aquela linha. Não aparece no terminal real. |
O guia ensina o SQL padrão usando o SQLite 3.50.4. O editor das aulas é o SQLite oficial compilado para rodar no navegador (WebAssembly), e as saídas de terminal foram conferidas no programa sqlite3 da mesma versão, num Linux em português do Brasil. Como os dois são o mesmo motor, toda resposta bate. As mensagens de erro saem em inglês, exatamente como o SQLite as escreve, e as aulas as explicam em português.