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:

  1. 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.
  2. Anatomia. Cada parte de um comando novo é separada e explicada.
  3. 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.
  4. 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.
  5. 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.
  6. Quando dá errado. O SQL com erro e a mensagem real do SQLite, traduzida e explicada.
  7. 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çar ❯

Nível 2 · Intermediário

Relacionando tabelas.

Começar ❯

Nível 3 · Avançado

Consultas de gente grande.

Começar ❯

Referência

Consulta rápida para quando você já sabe o que procura.

Consultar ❯

Como estudar

SQL se aprende perguntando, como quem aprende a pesquisar numa biblioteca. Para cada aula, siga estes quatro passos:

  1. 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.
  2. 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.
  3. 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.
  4. Repita no seu computador. Quando chegar às aulas do terminal, instale o sqlite3 e refaça as consultas num banco seu. Algumas coisas (os comandos de ponto, importar uma planilha, o backup) só existem lá.
A regra de ouro

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

ElementoO que significa
Caixa com consulta.sql no cantoUm comando SQL. O nome no canto é só um rótulo (arquivos com SQL costumam terminar em .sql).
Quadro Resultado embaixo do códigoA 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á erradoSQL 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 promptA resposta do computador.
← etiquetaUma explicação do guia sobre aquela linha. Não aparece no terminal real.
Versão de referência: SQLite 3.50

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.