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.

Você vai aprender
  • 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:

  1. 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.
  2. Cada ficha tem um número (a ficha nº 2). Dois produtos podem ter nomes parecidos, mas nunca o mesmo número.
  3. 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çaNo caderno de fichasNa planilhaNa Loja Aurora
Banco de dadosO fichário inteiro, com todas as gavetasO arquivo da planilhaO banco da loja, com 7 tabelas
TabelaUma gavetaUma abaprodutos, clientes, pedidos…
Linha (ou registro)Uma fichaUma linhaA Caneta Esferográfica Azul
Coluna (ou campo)Um campo da fichaUma colunanome, preco, estoque
ValorO que está escrito num campoUma célula2.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 nome da linha 2.
8 linhas
A loja tem 8 categorias. O número embaixo do quadro conta as linhas para você.
O id: o número da ficha

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:

TabelaO que guardaLinhas
categoriasOs departamentos da loja8
fornecedoresAs empresas que vendem para a loja6
produtosO que a loja vende, com preço e estoque45
clientesQuem compra na loja30
funcionariosQuem trabalha na loja8
pedidosCada compra feita: quem comprou, quando, o frete90
itens_pedidoO que foi comprado em cada pedido220

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.

PalavraO que éNa loja
Banco de dadosOs dados guardados, organizados em tabelasO depósito com as prateleiras
SGBDO programa que cuida do bancoO estoquista
SQLA língua usada para falar com o SGBDO jeito de fazer o pedido ao estoquista
ConsultaUma pergunta ou ordem em SQLUm 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.

"Banco de dados" na conversa do dia a dia

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çãoNa planilhaNo banco de dados
Alguém digita "dois" na coluna do preçoA planilha aceita; a soma do mês sai erradaDá para proibir: a coluna só aceita números (aula CHECK)
Três vendedoras registram vendas ao mesmo tempoUma 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 vendaO arquivo pode ficar pela metadeA venda entra inteira ou não entra (aula Transações)
Um milhão de linhasA planilha trava ou nem abreResponde 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êsUma consulta, que pode ser guardada e repetida
Um site ou aplicativo precisa ler os dadosDifí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

FormaBom paraComeça a sofrer quando…
Caderno ou fichas de papelPouca coisa, uma pessoa sóÉ preciso contar, somar ou procurar
Arquivo de texto (anotações)Lembretes, listas soltasOs dados precisam de colunas e de conta
PlanilhaTabelas pequenas, contas rápidas, uma ou duas pessoasMuitas tabelas ligadas, muita gente ao mesmo tempo, muitos dados
Banco de dados relacional (SQL)Dados de um negócio, sites, aplicativosQuase nunca: é a escolha padrão do mercado há décadas
E os bancos "NoSQL"?

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.

A gaveta com o nome errado: 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.

O campo com acento: 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

TermoEm inglêsO que é
Banco de dadosdatabaseConjunto de dados organizados, guardados para serem consultados
Banco relacionalrelational databaseBanco feito de tabelas que se ligam por números (ids); fala SQL
TabelatableOs dados de um assunto: a "gaveta" dos produtos, dos clientes…
Linha, registrorow, recordUm item da tabela: uma "ficha"
Coluna, campocolumn, fieldUma informação que toda linha tem: nome, preço…
ValorvalueO que está guardado numa coluna de uma linha
NULLnull"Sem valor": o campo em branco
Chave primária (id)primary keyA coluna que identifica cada linha; nunca se repete
SGBDDBMSO programa que cuida do banco: SQLite, MySQL, PostgreSQL…
ConsultaqueryUma 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 table e no such column querem dizer que o nome da tabela ou da coluna está errado.