| Os candidatos devem ser capazes de: | Notas e orientações |
|---|---|
| 1 Definir um banco de dados de tabela única a partir de requisitos de armazenamento de dados dados | • Incluindo: – campos – registros – validação |
| 2 Sugerir tipos de dados básicos adequados | • Incluindo: – texto/alfanumérico – character – Booleano – inteiro – real – data/hora |
| 3 Compreender o propósito de uma chave primária e identificar uma chave primária adequada para uma tabela de banco de dados dada | |
| 4 Ler, compreender e completar scripts de linguagem de consulta estruturada (SQL) para consultar dados armazenados em uma única tabela de banco de dados | • Limitado a: – SELECT – FROM – WHERE – ORDER BY DESCENDENTE – ORDER BY ASCENDENTE – SUM – COUNT – AND – OR • Identificar a saída fornecida por uma instrução SQL que consultará o conteúdo dado de uma tabela de banco de dados |
Bancos de Dados
Ciência da Computação IGCSE · Tópico 9
8:18
Bancos de Dados
Antes dos computadores, uma biblioteca mantinha uma gaveta assim. Um cartão por livro, cada um contendo as mesmas poucas informações, todos organizados — para que um bibliotecário pudesse encontrar qualquer livro…
Narração em inglês · legendas em inglês e 中文 que você pode alternar
Programa
Fonte: Programa Cambridge International
9.1
O que é um banco de dados?
Um banco de dados é um repositório organizado de informações, mantido para facilitar buscas, ordenação e atualizações. No IGCSE, você trabalha com um banco de dados de tabela única — todas as informações estão contidas em uma única tabela.


9.2
Registros e campos
Uma tabela de banco de dados é feita de registros e campos.
- Um registro é uma linha na tabela — todos os dados sobre um único item (por exemplo, um aluno).
- Um campo é uma coluna da tabela — uma informação que todo registro possui (por exemplo, “Nome”).
| StudentID | FirstName | DateOfBirth | FormClass | FeesPaid |
|---|---|---|---|---|
| 1 | Amy | 14/03/2009 | 10A | TRUE |
| 2 | Ben | 02/11/2008 | 10B | FALSE |
Aqui cada row (linha) é um record, e cada column (coluna) é um field.

| English | Português |
|---|---|
| database/ˈdeɪtəbeɪs/ | banco de dados |
| single-table database/ˈsɪŋɡl ˈteɪbl ˈdeɪtəbeɪs/ | banco de dados de tabela única |
| record/ˈrekɔːd/ | registro |
| field/fiːld/ | campo |
9.3
Tipos de dados para campos
Cada campo armazena um tipo de dado. Escolha o tipo que melhor se adapta à informação.

| Data type | Usado para | Exemplo |
|---|---|---|
| texto/alfanumérico | letras, algarismos e símbolos | “10A”, “Amy” |
| caractere | um único caractere | 'M' |
| Booleano | um de dois valores | TRUE / FALSE |
| inteiro | um número inteiro | 42 |
| real | um número com ponto decimal | 3.5 |
| data/hora | uma data ou uma hora | 14/03/2009 |
Exemplo resolvido. Escolha o tipo de dado para cada campo de uma tabela Member.
| Campo | Exemplo | Tipo de dado | Por quê |
|---|---|---|---|
| ID_Membro | M0042 | texto | contém uma letra |
| Telefone | 07712 345678 | texto | começa com 0; nunca usado em cálculos |
| Idade | 15 | inteiro | número inteiro |
| Taxa | 12.50 | real | possui ponto decimal |
| Gênero | F | caractere | um caractere |
| Pago | TRUE | Booleano | apenas dois valores |
| Ingressou | 01/09/2025 | data/hora | uma data |
Um número de telefone parece um número, mas é uma armadilha comum em exames: armazenado como inteiro, perderia seu primeiro 0, e ninguém soma números de telefone.
| English | Português |
|---|---|
| data type/ˈdeɪtə taɪp/ | tipo de dado |
| text/alphanumeric/tekst ˌælfənjuːˈmerɪk/ | texto/alphanumerico |
| character/ˈkærɪktə/ | caractere |
| Boolean/ˈbuːlɪən/ | booleano |
| integer/ˈɪntɪdʒə/ | inteiro |
| real/rɪəl/ | real |
| date/time/deɪt taɪm/ | data/hora |
9.4
A chave primária
Uma chave primária é um campo que contém um valor único para cada registro. Nenhum outro registro pode ter a mesma chave primária, permitindo identificar exatamente um registro.
Na tabela acima, StudentID é uma boa primary key porque cada aluno tem um número diferente. Um campo como FormClass seria uma má primary key, porque muitos alunos compartilham a mesma classe.
Exemplo resolvido. Qual campo da tabela Member acima deve ser a chave primária? MemberID, pois cada membro recebe um diferente. Age, Fee e Joined se repetem; até um nome como Surname é uma má escolha, pois dois membros podem compartilhar o sobrenome. Uma boa resposta cita o campo e afirma que é único para cada registro.
| English | Português |
|---|---|
| primary key/ˈpraɪməri kiː/ | chave primária |
9.5
Validação em um banco de dados
Quando os dados são inseridos no banco de dados, as validações verificam se são sensatas — por exemplo, um controle de faixa etária ou um controle de presença para evitar campos vazios. (Você viu esses controles no tópico 7.)

| Campo | Verificação adequada | Rejeita |
|---|---|---|
| Idade | controle de faixa, 11 a 18 | 200 |
| Sobrenome | controle de presença | um campo vazio |
| Telefone | controle de comprimento, 11 caracteres | 0771234 |
| Mensalidade | verificação de tipo, um número | “doze” |
| Ingressou | controle de formato, DD/MM/AAAA | 2025-9-1 |
Exemplo resolvido (projeto de uma tabela). Uma escola de dança deseja armazenar, para cada aluno: um número de aluno, o nome do aluno, a data de nascimento, a nota do último exame (de 1 a 8), se ele pagou o período letivo atual e o valor da mensalidade. Defina um banco de dados adequado com uma única tabela.
| Campo | Tipo de dado | Validação |
|---|---|---|
| ID do aluno (chave primária) | texto, por exemplo, “D0153” | verificação de presença; verificação de formato (D + 4 dígitos) |
| Nome do aluno | texto | verificação de presença |
| Data de nascimento | data/hora | verificação de formato, DD/MM/AAAA |
| Última nota | inteiro | verificação de intervalo, de 1 a 8 |
| Pagou o período letivo | booleano | verificação de tipo, TRUE/FALSE |
| Mensalidade | real | verificação de intervalo, maior que 0 |
Dê um nome à tabela (aqui, Pupil), crie um campo para cada informação, indique um tipo de dado para cada campo e diga qual campo é a chave primária e por quê: PupilID é diferente para cada aluno, enquanto dois alunos podem ter o mesmo nome ou a mesma data de nascimento.
| English | Português |
|---|---|
| validation/ˌvælɪˈdeɪʃn/ | validação |
| structured query language/ˈstrʌktʃəd ˈkwɪərɪ ˈlæŋɡwɪdʒ/ | linguagem de consulta estruturada |
9.6
Linguagem de Consulta Estruturada (SQL)
Linguagem de Consulta Estruturada (SQL) é uma linguagem usada para consultar um banco de dados — para selecionar os registros desejados. Você deve compreender e executar scripts SQL.
SELECT, FROM e WHERE
SELECTdiz quais fields mostrar.FROMdiz qual table usar.WHEREfornece uma condição, mostrando apenas os registros correspondentes.

SELECT FirstName, FormClass
FROM Student
WHERE FeesPaid = TRUE;
Isso mostra o primeiro nome e a classe de cada aluno que pagou as taxas.
Use * para selecionar todos os fields:
SELECT *
FROM Student
WHERE FormClass = '10A';
ORDER BY
ORDER BY ordena os resultados. Use ASC para crescente (menor primeiro, A→Z) ou DESC para decrescente (maior primeiro, Z→A).
SELECT FirstName, DateOfBirth
FROM Student
ORDER BY DateOfBirth ASC;
AND e OR
Junte condições com AND (ambas devem ser verdadeiras) ou OR (pelo menos uma deve ser verdadeira).
As condições usam estes operadores de comparação:
| Operador | Significado | Exemplo |
|---|---|---|
= |
igual a | FormClass = '10A' |
<> |
diferente de | FormClass <> '10A' |
> e < |
maior que, menor que | Height > 100 |
>= e <= |
maior ou igual a, menor ou igual a | Price <= 5.00 |
SELECT FirstName
FROM Student
WHERE FormClass = '10A' AND FeesPaid = FALSE;
SUM e COUNT
SUMsoma os valores num campo numérico.COUNTconta quantos records correspondem.
SELECT COUNT(StudentID)
FROM Student
WHERE FeesPaid = FALSE;
Isso conta quantos alunos não pagaram. SUM funciona da mesma forma, mas soma um campo numérico em vez de contar linhas.
SELECT SUM(Fee)
FROM Member
WHERE Paid = TRUE;
Isso soma a Fee de todos os membros que pagaram e exibe um único número. SUM exige um campo numérico (inteiro ou real); COUNT pode contar qualquer campo.
Calculando a saída
Para encontrar a saída de um script SQL, leia-o nesta ordem:
FROM— qual table;WHERE— manter apenas os records que correspondem à condição;SELECT— mostrar apenas os fields escolhidos;ORDER BY— colocar os resultados em ordem.

Seguindo esses passos, você pode escrever exatamente quais linhas e colunas a consulta retornará.
Exemplo resolvido. A tabela Plant:
| IDPlanta | Nome | Tipo | Altura | Preço |
|---|---|---|---|---|
| P01 | Rosa | arbusto | 120 | 8.50 |
| P02 | Manjericão | erva aromática | 30 | 2.00 |
| P03 | Azevinho | arbusto | 300 | 15.00 |
| P04 | Hortelã | erva aromática | 40 | 1.50 |
| P05 | Lavanda | arbusto | 60 | 6.00 |
Dê a saída de:
SELECT Name, Price
FROM Plant
WHERE Type = 'shrub' AND Height < 200
ORDER BY Price DESC;
FROM: a tabelaPlant.WHERE: os arbustos são P01, P03 e P05; o Azevinho tem altura de 300, então apenas Rosa e Lavanda passam.SELECT: apenasNameePrice.ORDER BY Price DESC: primeiro os mais caros.
| Nome | Preço |
|---|---|
| Rosa | 8.50 |
| Lavanda | 6.00 |
SELECT COUNT(PlantID) FROM Plant WHERE Type = 'herb'; resultaria em 2, e SELECT SUM(Price) FROM Plant WHERE Type = 'herb'; resultaria em 3.50.
Com OR, mais registros são selecionados: SELECT Name FROM Plant WHERE Type = 'herb' OR Price > 10; retorna manjericão, azevinho e hortelã (as duas ervas e o azevinho porque seu preço é superior a 10). Um registro que atende a ambas as condições ainda é exibido apenas uma vez.
Exemplo resolvido. Uma table Book tem os fields Title, Author, Price e InStock. Escreva uma query mostrando o título e o preço de cada livro de Orwell que está em estoque, do mais barato ao mais caro.
SELECT Title, Price
FROM Book
WHERE Author = 'Orwell' AND InStock = TRUE
ORDER BY Price ASC;
Construa na ordem de leitura: FROM nomeia a table; WHERE mantém apenas os records correspondentes, e como há duas condições elas precisam de AND; SELECT mostra apenas os dois fields pedidos; ORDER BY … ASC os ordena. Valores de texto vão entre aspas, e apenas os fields que a pergunta pede pertencem em SELECT - adicionar Author apenas porque você filtrou por ele é a maneira mais comum de perder pontos aqui.
SELECT … WHERE
Passe por uma consulta: WHERE filtra linhas, SELECT escolhe colunas.
| English | Português |
|---|---|
| query/ˈkwɪərɪ/ | consulta |
| condition/kənˈdɪʃn/ | condição |
| ascending/əˈsendɪŋ/ | crescente |
| descending/dɪˈsendɪŋ/ | decrescente |
9.7
Dicas de prova
- Um record é uma linha (todos os dados sobre uma coisa); um field é uma coluna (um item que todo record tem).
- Uma primary key deve ser unique para cada record, assim ela seleciona exatamente um record (StudentID, não FormClass).
- Aprenda as partes do SQL:
SELECT(quais fields),FROM(qual table),WHERE(a condição),ORDER BY(ordenação, ASC ou DESC). - Leia uma query na ordem FROM → WHERE → SELECT → ORDER BY para calcular sua saída.
COUNTconta os records correspondentes;SUMsoma um campo numérico.- Para projetar uma tabela, dê a cada campo um nome, um tipo de dado e uma verificação de validação, e justifique a chave primária.
<>significa “diferente de”; valores de texto precisam de aspas, números e TRUE/FALSE não precisam.
| English | Português |
|---|---|
| unique/juːˈniːk/ | único |
Aulas interativas sobre este tópico
Passe por ele passo a passo, com exercícios de verificação instantânea.