O que é um Banco de Dados
A Ana trabalha na Loja Aurora, uma loja de departamentos em Teresina. No começo, a dona anotava tudo num caderno: quem comprou, o que comprou, quanto custou, o que ainda tinha na prateleira. A loja cresceu, o caderno virou uma pilha de cadernos, e responder "quantas canetas azuis ainda temos?" virou uma tarde de trabalho. Hoje a Aurora guarda tudo num banco de dados, e a mesma pergunta é respondida num piscar de olhos. Nesta aula você vai entender o que é esse banco, do que ele é feito e por que quase todo programa que você usa tem um por trás.
- O que é um banco de dados, comparando com um caderno de fichas e com uma planilha.
- As peças de um banco: tabela, linha (registro), coluna (campo) e valor.
- Como várias tabelas se ligam por um número, o id.
- O que é o SGBD, o programa que cuida do banco (o SQLite é um deles).
- Quando vale a pena usar um banco em vez de uma planilha.
- As duas primeiras mensagens de erro que todo iniciante vê: tabela e coluna que não existem.
Nesta página você ainda não precisa saber SQL. Os quadros com código já rodam de verdade (o SQLite, um banco de dados completo, funciona dentro do seu navegador), mas por enquanto só leia o resultado. A língua do código, o SQL, é o assunto da próxima aula: O que é SQL.
A ideia: o caderno de fichas da lojinha
Antes dos computadores, uma loja organizada guardava os dados em fichas: um cartão para cada produto, todos com os mesmos campos, numa gaveta só de produtos. Os clientes ficavam em outra gaveta, com outro tipo de ficha.
Produto: Caneta Esferográfica Azul Categoria: Papelaria Preço: R$ 2,79 Estoque: 500 unidades
Repare em três coisas, porque um banco de dados é exatamente isso, só que no computador:
- Toda ficha da gaveta tem os mesmos campos (produto, categoria, preço, estoque). Ninguém escreve a cor da caneta no lugar do preço.
- Cada ficha tem um número (a ficha nº 2). Dois produtos podem ter nomes parecidos, mas nunca o mesmo número.
- Cada assunto tem a sua gaveta: produtos numa, clientes noutra, pedidos noutra.
Agora deite as fichas da gaveta lado a lado, uma embaixo da outra, e escreva os nomes dos campos só uma vez, no alto. Virou uma tabela, igual a uma planilha:
SELECT id, nome, categoria_id, preco, estoque FROM produtos LIMIT 5;
Esse quadro "Resultado" não foi digitado por ninguém: o SQLite do seu navegador abriu o banco da Loja Aurora e mostrou os 5 primeiros produtos. A caneta azul da ficha está lá, na linha de número 2.
1. As peças: tabela, linha, coluna e valor
Todo banco de dados do tipo que este guia ensina (o banco relacional) é feito destas peças:
| Peça | No caderno de fichas | Na planilha | Na Loja Aurora |
|---|---|---|---|
| Banco de dados | O fichário inteiro, com todas as gavetas | O arquivo da planilha | O banco da loja, com 7 tabelas |
| Tabela | Uma gaveta | Uma aba | produtos, clientes, pedidos… |
| Linha (ou registro) | Uma ficha | Uma linha | A Caneta Esferográfica Azul |
| Coluna (ou campo) | Um campo da ficha | Uma coluna | nome, preco, estoque |
| Valor | O que está escrito num campo | Uma célula | 2.79, o preço da caneta |
Veja as peças numa tabela pequena, a das categorias da loja:
SELECT * FROM categorias;
- categorias
- O nome da tabela. Ela guarda um assunto só: os departamentos da loja.
- id, nome, descricao
- As três colunas, o cabeçalho do quadro. Toda linha tem essas três, nem mais, nem menos.
- a linha 2
- Um registro: a categoria de número 2, chamada Eletrônicos, com a sua descrição.
- Eletrônicos
- Um valor: o que está guardado na coluna
nomeda linha 2. - 8 linhas
- A loja tem 8 categorias. O número embaixo do quadro conta as linhas para você.
A coluna id (de identificador) é o número da ficha. Nunca se repete dentro da tabela: existe uma só categoria 2, um só produto 2, um só cliente 2. É por esse número que o banco acha um registro sem confusão, mesmo quando dois nomes são parecidos. O nome técnico dessa coluna é chave primária, e ela tem aula própria: PRIMARY KEY.
Experimente: o código abaixo mostra a gaveta das categorias. Troque a palavra categorias por fornecedores e clique em Rodar para abrir a gaveta das empresas que vendem para a loja. Quantas colunas ela tem? Quantas linhas?
SELECT * FROM categorias;
SELECT * FROM fornecedores;
Na tabela de fornecedores aparece uma palavra estranha em itálico: NULL, na coluna estado das duas empresas estrangeiras. NULL quer dizer "aqui não tem valor" (Porto, em Portugal, não tem estado brasileiro). É como um campo da ficha deixado em branco de propósito. O NULL é tão importante que tem aula própria: O Valor NULL.
2. Um banco tem várias tabelas, e elas se ligam
A Loja Aurora não guarda tudo numa tabela só. Cada assunto tem a sua:
| Tabela | O que guarda | Linhas |
|---|---|---|
categorias | Os departamentos da loja | 8 |
fornecedores | As empresas que vendem para a loja | 6 |
produtos | O que a loja vende, com preço e estoque | 45 |
clientes | Quem compra na loja | 30 |
funcionarios | Quem trabalha na loja | 8 |
pedidos | Cada compra feita: quem comprou, quando, o frete | 90 |
itens_pedido | O que foi comprado em cada pedido | 220 |
Por que não uma tabela gigante? Volte ao primeiro quadro desta aula: a caneta azul não tem escrito "Papelaria" na linha dela; tem categoria_id = 1. Esse 1 é o número da ficha da categoria Papelaria, na outra tabela. É como na ficha do produto estar escrito "ver gaveta CATEGORIAS, ficha nº 1".
tabela produtos tabela categorias id | nome | categoria_id id | nome 2 | Caneta Esferográfica Azul | 1 ─────────────► 1 | Papelaria
Parece mais trabalho, mas pense no dia em que a loja resolver trocar o nome "Papelaria" para "Papelaria e Escritório". Com a ligação pelo número, muda-se uma linha na tabela de categorias, e todos os produtos de papelaria passam a mostrar o nome novo. Se o nome estivesse escrito em cada produto, seria preciso corrigir produto por produto, e bastaria esquecer um para o banco ficar contraditório.
Essa ideia de tabelas ligadas por números é o que dá nome ao banco relacional: as tabelas se relacionam. Você vai aprender a juntar duas tabelas numa resposta só no Nível 2, em Tabelas que se Relacionam e O que é um JOIN. O mapa completo da Loja Aurora está na aula O Banco da Loja Aurora.
3. Fazendo perguntas ao banco
Guardar é só metade do serviço. A graça de um banco é perguntar. A dona da loja quer saber quantos produtos a Aurora vende. No caderno, alguém teria de contar ficha por ficha. No banco:
SELECT COUNT(*) FROM produtos;
São 45. E quais produtos estão com o estoque zerado, para pedir mais ao fornecedor?
SELECT nome, estoque FROM produtos WHERE estoque = 0;
Dois produtos. Você ainda não precisa entender cada palavra do código; repare só que a pergunta foi escrita quase como uma frase: "selecione o nome e o estoque dos produtos onde o estoque é zero". Essa língua de perguntas é o SQL, e a partir da aula SELECT você vai escrevê-la sozinho. Uma pergunta feita ao banco se chama consulta (em inglês, query).
4. O programa que cuida do banco: o SGBD
Um banco de dados não se abre com um editor de texto, como uma carta. Quem lê, grava, organiza e protege os dados é um programa especial, o SGBD: Sistema Gerenciador de Banco de Dados (em inglês, DBMS, Database Management System).
Pense no SGBD como o estoquista da loja. Você não entra no depósito mexendo nas prateleiras: você pede ao estoquista ("me traga as canetas azuis", "guarde estas 50 caixas") e ele sabe onde fica cada coisa, não deixa duas pessoas pegarem a mesma caixa ao mesmo tempo e anota tudo o que entra e sai. O pedido que você faz ao estoquista é escrito em SQL.
| Palavra | O que é | Na loja |
|---|---|---|
| Banco de dados | Os dados guardados, organizados em tabelas | O depósito com as prateleiras |
| SGBD | O programa que cuida do banco | O estoquista |
| SQL | A língua usada para falar com o SGBD | O jeito de fazer o pedido ao estoquista |
| Consulta | Uma pergunta ou ordem em SQL | Um pedido: "me traga…" |
Existem vários SGBDs: SQLite, MySQL, PostgreSQL, SQL Server, Oracle… Todos falam SQL, cada um com o seu sotaque. Este guia usa o SQLite, porque ele não precisa de instalação complicada nem de servidor e é o banco mais usado do mundo: está dentro de todo celular e de todo navegador. Os outros têm uma aula só para eles: Os Bancos Famosos.
Na prática, as pessoas dizem "banco de dados" para as duas coisas: os dados e o programa. "O banco caiu" quer dizer que o programa (o SGBD) parou; "o banco tem 30 clientes" fala dos dados. Pelo contexto, você entende qual dos dois.
5. Por que um banco e não uma planilha?
Uma planilha também tem linhas e colunas. Para a lista de compras do mês, ela basta. A diferença aparece quando os dados crescem e muita gente mexe neles:
| Situação | Na planilha | No banco de dados |
|---|---|---|
| Alguém digita "dois" na coluna do preço | A planilha aceita; a soma do mês sai errada | Dá para proibir: a coluna só aceita números (aula CHECK) |
| Três vendedoras registram vendas ao mesmo tempo | Uma salva por cima da outra, ou o arquivo fica "em uso" | O SGBD organiza a fila; nenhuma venda se perde |
| A luz acaba no meio de uma venda | O arquivo pode ficar pela metade | A venda entra inteira ou não entra (aula Transações) |
| Um milhão de linhas | A planilha trava ou nem abre | Responde em milissegundos, ainda mais com um índice (aula Índices) |
| "Quanto cada cliente gastou em 2025?" | Fórmulas e tabelas dinâmicas, refeitas a cada mês | Uma consulta, que pode ser guardada e repetida |
| Um site ou aplicativo precisa ler os dados | Difícil e frágil | É para isso que os bancos existem (aula SQL nas Linguagens) |
Não é que a planilha seja ruim: muita gente começa nela, e o guia tem até um projeto para levar uma planilha para dentro do banco (Projeto: da Planilha ao Banco). Só que, quando os dados viram o coração de um negócio, um banco dá regras, segurança e velocidade que a planilha não dá.
Formas de guardar dados, e qual usar
| Forma | Bom para | Começa a sofrer quando… |
|---|---|---|
| Caderno ou fichas de papel | Pouca coisa, uma pessoa só | É preciso contar, somar ou procurar |
| Arquivo de texto (anotações) | Lembretes, listas soltas | Os dados precisam de colunas e de conta |
| Planilha | Tabelas pequenas, contas rápidas, uma ou duas pessoas | Muitas tabelas ligadas, muita gente ao mesmo tempo, muitos dados |
| Banco de dados relacional (SQL) | Dados de um negócio, sites, aplicativos | Quase nunca: é a escolha padrão do mercado há décadas |
Você vai ouvir falar de bancos NoSQL (como o MongoDB e o Redis). Eles guardam os dados de outros jeitos: em documentos, em pares "chave → valor", em grafos. Têm o seu lugar, mas não usam tabelas como as desta aula e não são o assunto deste guia. Aqui, "banco de dados" é sempre o banco relacional, o de tabelas e SQL.
Quando dá errado
Um banco é exigente com nomes: ele não "adivinha" o que você quis dizer. As duas mensagens abaixo são as que todo iniciante vê primeiro. Elas vêm em inglês, porque o SQLite fala inglês; o quadro mostra a mensagem real que o seu navegador recebeu.
produto no singular
SELECT * FROM produto;
O que aconteceu: no such table: produto quer dizer "não existe a tabela produto". A tabela se chama produtos, no plural. Para o banco, uma letra a menos é outro nome, como pedir ao estoquista a gaveta "PRODUTO" quando na etiqueta está escrito "PRODUTOS".
Como consertar: use o nome exato da tabela: SELECT * FROM produtos;. Se não lembrar os nomes, a aula Comandos de Ponto mostra como listar as tabelas de um banco.
preço
SELECT preço FROM produtos;
O que aconteceu: no such column: preço, "não existe a coluna preço". Na Loja Aurora, a coluna foi criada como preco, sem cedilha. Quem cria a tabela escolhe os nomes, e o banco exige exatamente aquele nome.
Como consertar: SELECT preco FROM produtos;. Por isso o costume, que este guia segue, é dar às colunas nomes sem acento, sem espaço e em minúsculas: preco, chefe_id, entregue_em. Ninguém precisa lembrar se tinha cedilha.
Missão: este código tem os dois erros que você acabou de ver. Rode, leia a mensagem, conserte e rode de novo, até aparecerem os nomes e preços dos 45 produtos da loja.
SELECT nome, preço FROM produto;
SELECT nome, preco FROM produtos;
Reparou? O banco acusou um erro de cada vez. Ele para no primeiro problema que encontra, e só depois de consertado você vê o próximo.
Referência rápida
| Termo | Em inglês | O que é |
|---|---|---|
| Banco de dados | database | Conjunto de dados organizados, guardados para serem consultados |
| Banco relacional | relational database | Banco feito de tabelas que se ligam por números (ids); fala SQL |
| Tabela | table | Os dados de um assunto: a "gaveta" dos produtos, dos clientes… |
| Linha, registro | row, record | Um item da tabela: uma "ficha" |
| Coluna, campo | column, field | Uma informação que toda linha tem: nome, preço… |
| Valor | value | O que está guardado numa coluna de uma linha |
| NULL | null | "Sem valor": o campo em branco |
| Chave primária (id) | primary key | A coluna que identifica cada linha; nunca se repete |
| SGBD | DBMS | O programa que cuida do banco: SQLite, MySQL, PostgreSQL… |
| Consulta | query | Uma pergunta (ou ordem) feita ao banco em SQL |
Exercícios
1. A gaveta
Num banco de dados, o conjunto de linhas sobre um mesmo assunto (os produtos, os clientes) se chama:
2. O programa
Complete a sigla do programa que cuida do banco de dados: Sistema Gerenciador de Banco de Dados.
3. Na tabela categorias, o que é "Eletrônicos"?
4. Por que o produto guarda categoria_id = 1 em vez de escrever "Papelaria"?
5. A Ana rodou SELECT * FROM cliente; e recebeu no such table: cliente. O que aconteceu?
6. Qual situação mais pede um banco de dados em vez de uma planilha?
Missão final: abra a gaveta dos pedidos
Missão: o código mostra a tabela de clientes. Faça ele mostrar a tabela pedidos, com todas as suas linhas. Depois, olhe o resultado: quantos pedidos a loja tem? Em que coluna aparece o número do cliente que fez cada pedido? E, rolando até o fim, quais pedidos ainda têm NULL em entregue_em?
SELECT * FROM clientes;
SELECT * FROM pedidos;
Os pedidos com entregue_em vazio são os que ainda estão a caminho do cliente. E a coluna cliente_id é a mesma ideia do categoria_id: o número da ficha do cliente, na outra tabela.
Resumo
- Um banco de dados guarda dados organizados para serem consultados, como um fichário: cada gaveta é uma tabela, cada ficha é uma linha (registro), cada campo da ficha é uma coluna, e o que está escrito nele é um valor.
- Toda linha de uma tabela tem as mesmas colunas. A coluna
idé o número da ficha e nunca se repete (a chave primária). - Num banco relacional, as tabelas se ligam por esses números: o produto guarda
categoria_id= 1 para dizer "sou da categoria 1". - O SGBD é o programa que cuida do banco (SQLite, MySQL, PostgreSQL…); você fala com ele em SQL, fazendo consultas.
- Comparado a uma planilha, um banco dá regras para os dados, aguenta muita gente ao mesmo tempo, não perde dados pela metade e responde rápido, mesmo com milhões de linhas.
- O banco exige o nome exato:
no such tableeno such columnquerem dizer que o nome da tabela ou da coluna está errado.