| Los candidatos deben ser capaces de: | Notas y orientación |
|---|---|
| 1 Definir una base de datos de una sola tabla a partir de requisitos dados de almacenamiento de datos | • Incluyendo: – campos – registros – validación |
| 2 Sugerir tipos de datos básicos adecuados | • Incluyendo: – texto/alfanumérico – carácter – Booleano – entero – real – fecha/hora |
| 3 Entender el propósito de una clave primaria e identificar una clave primaria adecuada para una tabla de base de datos dada | |
| 4 Leer, comprender y completar scripts de lenguaje de consulta estructurado (SQL) para consultar datos almacenados en una única tabla de base de datos | • Limitado a: – SELECT – FROM – WHERE – ORDER BY DESCENDING – ORDER BY ASCENDING – SUM – COUNT – AND – OR • Identificación de la salida generada por una sentencia SQL que consultará los contenidos dados de una tabla de base de datos |
Bases de datos
IGCSE Ciencias de la Computación · Tema 9
8:18
Bases de datos
Antes de las computadoras, una biblioteca guardaba un cajón como este. Una tarjeta por libro, cada una conteniendo los mismos pocos hechos, todos ordenados — para que un bibliotecario pudiera encontrar cualquier libro…
Narración en inglés · subtítulos en inglés y 中文 que puedes cambiar
Syllabus
Fuente: Plan de estudios Cambridge International
9.1
¿Qué es una base de datos?
Una base de datos es un almacén organizado de datos, mantenido de manera que sea fácil buscar, ordenar y actualizar. En IGCSE trabaja con una base de datos de una sola tabla: todos los datos se mantienen en una única tabla.


9.2
Registros y campos
Una tabla de base de datos está compuesta por registros y campos.
- Un registro es una fila en la tabla: todos los datos sobre una entidad (por ejemplo, un estudiante).
- Un campo es una columna de la tabla: un dato que tiene cada registro (por ejemplo, «Nombre»).
| StudentID | FirstName | DateOfBirth | FormClass | FeesPaid |
|---|---|---|---|---|
| 1 | Amy | 14/03/2009 | 10A | TRUE |
| 2 | Ben | 02/11/2008 | 10B | FALSE |
Aquí cada fila es un registro, y cada columna es un campo.

9.3
Tipos de datos para los campos
Cada campo almacena un tipo de datos. Elige el tipo que mejor se adapte a los datos.

| Tipo de dato | Se usa para | Ejemplo |
|---|---|---|
| texto/alfanumérico | letras, dígitos y símbolos | «10A», «Amy» |
| carácter | un solo carácter | 'M' |
| Booleano | uno de dos valores | TRUE / FALSE |
| entero | un número entero | 42 |
| real | un número con punto decimal | 3.5 |
| fecha/hora | una fecha o una hora | 14/03/2009 |
Ejemplo resuelto. Elige el tipo de datos para cada campo de una tabla Member.
| Campo | Ejemplo | Tipo de datos | Por qué |
|---|---|---|---|
| MemberID | M0042 | texto | contiene una letra |
| Phone | 07712 345678 | texto | empieza con 0; nunca se usa en sumas |
| Age | 15 | entero | número entero |
| Fee | 12.50 | real | tiene punto decimal |
| Gender | F | carácter | un solo carácter |
| Paid | TRUE | Booleano | solo dos valores |
| Joined | 01/09/2025 | fecha/hora | es una fecha |
Un número de teléfono parece un número, pero es una trampa común en exámenes: si se almacena como entero perdería su primer 0, y nadie suma números de teléfono.
| English | Español |
|---|---|
| database/ˈdeɪtəbeɪs/ | base de datos |
| single-table database/ˈsɪŋɡl ˈteɪbl ˈdeɪtəbeɪs/ | base de datos de una sola tabla |
| record/ˈrekɔːd/ | registro |
| field/fiːld/ | campo |
| data type/ˈdeɪtə taɪp/ | tipo de dato |
| text/alphanumeric/tekst ˌælfənjuːˈmerɪk/ | texto/alfanumérico |
| character/ˈkærɪktə/ | carácter |
| Boolean/ˈbuːlɪən/ | booleano |
| integer/ˈɪntɪdʒə/ | entero |
| real/rɪəl/ | real |
| date/time/deɪt taɪm/ | fecha/hora |
| primary key/ˈpraɪməri kiː/ | clave primaria |
| unique/juːˈniːk/ | único |
9.4
La clave primaria
Una clave primaria es un campo que contiene un valor único para cada registro. Dos registros no pueden tener la misma clave primaria, por lo que permite seleccionar exactamente un registro.
En la tabla anterior, StudentID es una buena clave primaria porque cada estudiante tiene un número diferente. Un campo como FormClass sería una mala clave primaria, porque muchos estudiantes comparten el mismo curso.
Ejemplo resuelto. ¿Qué campo de la tabla Member anterior debería ser la clave primaria? MemberID, porque a cada miembro se le asigna uno diferente. Age, Fee y Joined se repiten; incluso un nombre como Surname es una mala elección, porque dos miembros pueden compartir apellido. Una buena respuesta nombra el campo y indica que es único para cada registro.
9.5
Validación en una base de datos
Cuando los datos se introducen en una base de datos, las validaciones aseguran que sean lógicos —por ejemplo, un control de rango en un campo de edad, o un control de presencia para evitar dejar campos vacíos. (Viste estas validaciones en el tema 7.)

| Campo | Control adecuado | Rechaza |
|---|---|---|
| Age | control de rango, 11 a 18 | 200 |
| Surname | control de presencia | un campo vacío |
| Phone | control de longitud, 11 caracteres | 0771234 |
| Cuota | comprobación de tipo, un número | «doce» |
| Unido | comprobación de formato, DD/MM/AAAA | 2025-9-1 |
Ejemplo resuelto (diseño de una tabla). Una escuela de baile quiere almacenar, para cada estudiante: un número de estudiante, su nombre, fecha de nacimiento, la calificación de su último examen (de 1 a 8), si ha pagado este período y la cuota mensual. Define una base de datos adecuada de una sola tabla.
| Campo | Tipo de dato | Validación |
|---|---|---|
| PupilID (clave primaria) | texto, p. ej., «D0153» | comprobación de presencia; comprobación de formato (D + 4 dígitos) |
| PupilName | texto | comprobación de presencia |
| DateOfBirth | fecha/hora | comprobación de formato, DD/MM/AAAA |
| LastGrade | entero | comprobación de rango, de 1 a 8 |
| PaidThisTerm | booleano | comprobación de tipo, TRUE/FALSE |
| MonthlyFee | real | comprobación de rango, mayor que 0 |
Da un nombre a la tabla (aquí Pupil), crea un campo para cada dato, asigna un tipo de dato a cada campo e indica qué campo es la clave primaria y por qué: PupilID es diferente para cada estudiante, mientras que dos estudiantes podrían compartir un nombre o una fecha de nacimiento.
| English | Español |
|---|---|
| validation/ˌvælɪˈdeɪʃn/ | validación |
| structured query language/ˈstrʌktʃəd ˈkwɪərɪ ˈlæŋɡwɪdʒ/ | lenguaje de consulta estructurado |
9.6
Lenguaje de consulta estructurado (SQL)
Lenguaje de consulta estructurada (SQL) es un lenguaje utilizado para consultar una base de datos —para seleccionar los registros que desea. Debe comprender y ejecutar scripts SQL.
SELECT, FROM y WHERE
SELECTindica qué campos mostrar.FROMindica qué tabla utilizar.WHEREproporciona una condición, por lo que solo se muestran los registros coincidentes.

SELECT FirstName, FormClass
FROM Student
WHERE FeesPaid = TRUE;
Esto muestra el nombre y el curso de cada estudiante que ha pagado las cuotas.
Usa * para seleccionar todos los campos:
SELECT *
FROM Student
WHERE FormClass = '10A';
ORDER BY
ORDER BY ordena los resultados. Utilice ASC para ascendente (menor primero, A→Z) o DESC para descendente (mayor primero, Z→A).
SELECT FirstName, DateOfBirth
FROM Student
ORDER BY DateOfBirth ASC;
AND y OR
Une condiciones con AND (ambas deben ser verdaderas) u OR (al menos una debe ser verdadera).
Las condiciones utilizan estos operadores de comparación:
| Operador | Significado | Ejemplo |
|---|---|---|
= |
igual a | FormClass = '10A' |
<> |
distinto de | FormClass <> '10A' |
> y < |
mayor que, menor que | Height > 100 |
>= y <= |
mayor o igual que, menor o igual que | Price <= 5.00 |
SELECT FirstName
FROM Student
WHERE FormClass = '10A' AND FeesPaid = FALSE;
SUM y COUNT
SUMsuma los valores de un campo numérico.COUNTcuenta cuántos registros coinciden.
SELECT COUNT(StudentID)
FROM Student
WHERE FeesPaid = FALSE;
Esto cuenta cuántos estudiantes no han pagado. SUM funciona de manera similar, pero suma un campo numérico en lugar de contar filas.
SELECT SUM(Fee)
FROM Member
WHERE Paid = TRUE;
Esto suma los Fee de cada miembro que ha pagado y muestra un solo número. SUM necesita un campo numérico (entero o real); COUNT puede contar cualquier campo.
Calcular la salida
Para determinar la salida de un script SQL, léalo en este orden:
FROM— qué tabla;WHERE— mantener solo los registros que cumplan la condición;SELECT— mostrar solo los campos elegidos;ORDER BY— poner los resultados en orden.

Siguiendo estos pasos, puedes escribir exactamente qué filas y columnas devuelve la consulta.
Ejemplo resuelto. La tabla Plant:
| PlantID | Nombre | Tipo | Altura | Precio |
|---|---|---|---|---|
| P01 | Rosa | arbusto | 120 | 8.50 |
| P02 | Albahaca | hierba | 30 | 2.00 |
| P03 | Acebo | arbusto | 300 | 15.00 |
| P04 | Menta | hierba | 40 | 1.50 |
| P05 | Lavanda | arbusto | 60 | 6.00 |
Proporcione la salida de:
SELECT Name, Price
FROM Plant
WHERE Type = 'shrub' AND Height < 200
ORDER BY Price DESC;
FROM: la tablaPlant.WHERE: los arbustos son P01, P03 y P05; el Acebo mide 300 de alto, por lo que solo la Rosa y la Lavanda pasan el filtro.SELECT: soloNameyPrice.ORDER BY Price DESC: del más caro al más barato.
| Nombre | Precio |
|---|---|
| Rosa | 8.50 |
| Lavanda | 6.00 |
SELECT COUNT(PlantID) FROM Plant WHERE Type = 'herb'; daría como resultado 2, y SELECT SUM(Price) FROM Plant WHERE Type = 'herb'; daría como resultado 3.50.
Con OR, en cambio, pasan más registros: SELECT Name FROM Plant WHERE Type = 'herb' OR Price > 10; da como resultado albahaca, acebo y menta (las dos hierbas y el acebo porque su precio es superior a 10). Un registro que cumple ambas condiciones sigue mostrándose una sola vez.
Ejemplo resuelto. Una tabla Book tiene los campos Title, Author, Price e InStock. Escribe una consulta que muestre el título y el precio de cada libro de Orwell que esté en stock, ordenado del más barato al más caro.
SELECT Title, Price
FROM Book
WHERE Author = 'Orwell' AND InStock = TRUE
ORDER BY Price ASC;
Constrúyela en el orden de lectura: FROM nombra la tabla; WHERE mantiene solo los registros coincidentes, y como hay dos condiciones requieren AND; SELECT muestra solo los dos campos solicitados; ORDER BY … ASC los ordena. Los valores de texto van entre comillas, y solo los campos que pide la pregunta deben estar en SELECT — añadir Author simplemente porque se filtró por él es la forma más común de perder puntos aquí.
SELECT … WHERE
Paso a paso por una consulta: DONDE filtra filas, SELECCIONAR selecciona columnas.
| English | Español |
|---|---|
| query/ˈkwɪərɪ/ | consulta |
| condition/kənˈdɪʃn/ | condición |
| ascending/əˈsendɪŋ/ | ascendente |
| descending/dɪˈsendɪŋ/ | descendente |
9.7
Consejos para el examen
- Un registro es una fila (todos los datos sobre una cosa); un campo es una columna (un elemento que tiene cada registro).
- Una clave primaria debe ser única para cada registro, por lo que identifica exactamente un registro (StudentID, no FormClass).
- Aprende las partes del SQL:
SELECT(qué campos),FROM(qué tabla),WHERE(la condición),ORDER BY(ordenar, ASC o DESC). - Lee una consulta en el orden FROM → WHERE → SELECT → ORDER BY para calcular su salida.
COUNTcuenta los registros coincidentes;SUMsuma un campo numérico.- Para diseñar una tabla, asigna a cada campo un nombre, un tipo de dato y una comprobación de validación, y justifica la clave primaria.
<>significa «distinto de»; los valores de texto necesitan comillas, los números y TRUE/FALSE no.
Lecciones interactivas sobre este tema
Trátalo paso a paso, con ejercicios de verificación instantánea.