Qué es una base de datos
💡 🎯 Al terminar esta lección podrás…
- Explicar qué es una base de datos y para qué se usa en una aplicación web.
- Reconocer tablas, filas, columnas y claves en un ejemplo.
- Distinguir SQL de NoSQL y SQLite de PostgreSQL.
- Preparar SQLite con la tabla de ejemplo del curso.
1.Qué es una base de datos
Una base de datos es una colección de información organizada para que se pueda guardar, buscar, modificar y proteger de forma fiable. Cada vez que inicias sesión en una web, compras algo o ves tu historial de pedidos, hay una base de datos detrás respondiendo.
Podrías guardar los datos en un archivo de texto o en una hoja de cálculo, pero en cuanto la información crece o la usan varias personas a la vez aparecen los problemas: datos repetidos, errores al escribir, dos personas editando lo mismo y nadie que impida borrar algo importante. Una base de datos resuelve esto con reglas y herramientas propias.
| Necesidad | Archivo de texto u hoja de cálculo | Base de datos |
|---|---|---|
| Buscar un dato entre millones | Lento: hay que leer todo | Rápido, con índices y consultas |
| Evitar errores (un precio escrito como «abc») | Cualquiera escribe lo que quiera | Tipos de datos y restricciones que lo impiden |
| Varios usuarios a la vez | Conflictos y pérdidas | Control de acceso y transacciones |
| Relacionar datos (clientes y pedidos) | Se copian los datos a mano | Se enlazan entre tablas |
| Seguridad y copias | Depende de ti | Usuarios, permisos y copias de seguridad |
📌 Nota · BD y SGBD no son lo mismo
La base de datos son los datos guardados. El SGBD (sistema gestor de bases de datos, en inglés DBMS) es el programa que los administra: SQLite, PostgreSQL, MySQL… En el lenguaje cotidiano se dice «base de datos» para los dos, y en este curso también lo haremos cuando no haya confusión.
Casi todas las aplicaciones web siguen este esquema: el navegador pide algo al servidor (por ejemplo, un programa en Node.js), el servidor consulta la base de datos y devuelve la respuesta. El navegador nunca habla directamente con la base de datos: lo veremos en la lección 7.
peticiónSQL2.Tablas, filas y columnas
En una base de datos relacional la información se guarda en tablas, parecidas a una hoja de cálculo. A lo largo del curso usaremos una tabla llamada productos, de una tienda de informática:
| id | nombre | categoria | precio | stock |
|---|---|---|---|---|
| 1 | Teclado | Periféricos | 120.00 | 15 |
| 2 | Ratón | Periféricos | 45.50 | 40 |
| 3 | Monitor FHD | Pantallas | 650.00 | 8 |
| 4 | Auriculares | Audio | 89.90 | 0 |
| 5 | Webcam | Periféricos | 150.00 | 12 |
| 6 | Altavoz | Audio | 99.00 | 25 |
| 7 | Monitor 4K | Pantallas | 899.00 | 3 |
| 8 | Cable HDMI | Accesorios | 15.00 | 100 |
- La tabla (
productos) agrupa datos de una misma cosa: aquí, productos. - Cada fila (también «registro») es un elemento: un producto concreto.
- Cada columna (también «campo» o «atributo») es una característica: nombre, precio, stock…
- Una celda (un «valor») es el cruce de una fila y una columna: el precio del monitor 4K es
899.00.
Todas las filas de una tabla tienen las mismas columnas, y todos los valores de una columna son del mismo tipo (números en precio, texto en nombre). Esa regularidad es lo que permite consultar con precisión.
💡 Consejo · Piensa en una hoja de cálculo
Si sabes usar Excel o Google Sheets ya entiendes lo esencial: una tabla es una hoja, las filas son los registros y las columnas son los campos. La diferencia es que en una base de datos las columnas tienen tipo y reglas, y las consultas se hacen con un lenguaje, no a mano.
3.Claves: cómo se identifica cada fila
Si dos productos se llamaran igual, ¿cómo distinguirías uno de otro? Para eso existe la clave primaria (primary key): una columna (o varias) cuyo valor identifica de forma única cada fila. En productos es la columna id.
- No puede repetirse: no habrá dos filas con
id = 3. - No puede estar vacía (
NULL). - Conviene que no cambie nunca, aunque cambie el nombre del producto.
La clave foránea (foreign key) es una columna que guarda la clave primaria de otra tabla y así las relaciona. Por ejemplo, una tabla pedidos podría tener una columna cliente_id que apunta a una fila de clientes:
cliente_idAsí el nombre del cliente se guarda una sola vez y cada pedido solo apunta a él. Las relaciones y el JOIN son el tema de la lección 5; por ahora quédate con la idea: primaria = identifica, foránea = enlaza.
⚠️ Importante · No uses datos «reales» como clave
El nombre, el correo o el DNI parecen únicos, pero cambian o se repiten. Es más seguro un número interno (id) que la propia base de datos genera. Lo verás en la lección 4.
4.Qué es SQL
SQL (Structured Query Language, «lenguaje de consulta estructurado») es el lenguaje para hablar con una base de datos relacional. Se parece a una frase en inglés y es declarativo: indicas qué datos quieres, no los pasos para encontrarlos; el gestor decide cómo hacerlo.
-- «Muéstrame el nombre y el precio de los productos de Audio»
SELECT nombre, precio
FROM productos
WHERE categoria = 'Audio';
Resultado esperado (la tabla de ejemplo está completa en la lección 2):
| nombre | precio |
|---|---|
| Auriculares | 89.90 |
| Altavoz | 99.00 |
Las instrucciones de SQL se agrupan según lo que hacen:
| Grupo | Para qué sirve | Ejemplos | Lección |
|---|---|---|---|
| Consultar | Leer datos | SELECT | 2, 5 y 6 |
| Manipular datos | Añadir, cambiar o borrar filas | INSERT, UPDATE, DELETE | 3 |
| Definir estructura | Crear o modificar tablas | CREATE TABLE, ALTER TABLE, DROP TABLE | 4 |
| Permisos y control | Usuarios, transacciones | GRANT, BEGIN, COMMIT | 3 y 8 |
📌 Nota · Mayúsculas, minúsculas y punto y coma
SQL no distingue mayúsculas de minúsculas en las palabras clave: select y SELECT son lo mismo. Por convención se escriben en mayúsculas para distinguirlas de los nombres de tablas y columnas. Cada instrucción termina con ;.
⚠️ Importante · SQL es un estándar con dialectos
Hay un SQL estándar y cada motor añade variaciones. En este curso escribimos SQL que funciona en SQLite y en PostgreSQL; cuando la sintaxis difiere lo indicaremos con una nota.
5.SQL frente a NoSQL
Las bases de datos relacionales (SQL) guardan datos en tablas con estructura fija. Las llamadas NoSQL («no solo SQL») agrupan modelos distintos: documentos parecidos a JSON (MongoDB), pares clave-valor (Redis), grafos, etc.
| Relacional (SQL) | Documentos (NoSQL) | |
|---|---|---|
| Estructura | Tablas con columnas definidas de antemano | Documentos flexibles, cada uno puede ser distinto |
| Relaciones | Muy buenas: claves y JOIN | Se suelen anidar o duplicar datos |
| Consistencia | Transacciones fiables | Depende del producto |
| Ideal para | Tiendas, facturación, usuarios, reservas | Catálogos muy variables, caché, registros masivos |
💡 Consejo · ¿Cuál elegir?
No hay uno «mejor». Para la mayoría de aplicaciones web (usuarios, pedidos, productos) una base relacional es una excelente primera opción: los datos están relacionados y necesitas que sean correctos. Aprender SQL te sirve además en casi cualquier empresa.
6.Motores populares y cuál usaremos
| Motor | Cómo funciona | Cuándo usarlo |
|---|---|---|
| SQLite | Toda la base de datos es un solo archivo; no hay servidor que instalar | Aprender, apps pequeñas, móviles, prototipos |
| PostgreSQL | Servidor completo, muy potente y estricto con los tipos | Aplicaciones web en producción |
| MySQL / MariaDB | Servidor muy extendido en alojamientos web | Sitios con PHP, WordPress |
Para practicar usaremos SQLite, porque se instala en un minuto. Todo lo que aprendas sirve en PostgreSQL con cambios mínimos. Puedes consultar la documentación oficial en sqlite.org y postgresql.org.
7.Prepara tu entorno con SQLite
Necesitas el programa de línea de comandos sqlite3. Comprueba si ya lo tienes abriendo una terminal:
sqlite3 --version
Si muestra una versión, perfecto. Si no, descárgalo desde sqlite.org/download.html (en Windows, el paquete «sqlite-tools»; en macOS ya suele venir instalado; en Linux, sudo apt install sqlite3).
Ahora crea el archivo tienda.sql con la tabla de ejemplo que usaremos en todo el curso. No te preocupes por entender cada línea: CREATE TABLE y INSERT los estudiarás en las lecciones 3 y 4.
CREATE TABLE productos (
id INTEGER PRIMARY KEY,
nombre TEXT NOT NULL,
categoria TEXT NOT NULL,
precio NUMERIC NOT NULL,
stock INTEGER NOT NULL DEFAULT 0
);
INSERT INTO productos (id, nombre, categoria, precio, stock) VALUES
(1, 'Teclado', 'Periféricos', 120.00, 15),
(2, 'Ratón', 'Periféricos', 45.50, 40),
(3, 'Monitor FHD', 'Pantallas', 650.00, 8),
(4, 'Auriculares', 'Audio', 89.90, 0),
(5, 'Webcam', 'Periféricos', 150.00, 12),
(6, 'Altavoz', 'Audio', 99.00, 25),
(7, 'Monitor 4K', 'Pantallas', 899.00, 3),
(8, 'Cable HDMI', 'Accesorios', 15.00, 100);
Y cárgalo en una base de datos nueva:
sqlite3 tienda.db
sqlite> .read tienda.sql
sqlite> .headers on
sqlite> .mode column
sqlite> SELECT * FROM productos;
sqlite> .tables
sqlite> .schema productos
sqlite> .quit
- Los comandos que empiezan por punto (
.read,.tables,.quit…) son del programasqlite3, no de SQL, y no llevan;. tienda.dbes tu base de datos: un archivo que puedes copiar o borrar.- Si te equivocas y quieres empezar de cero, borra
tienda.dby repite.read tienda.sql.
📌 Nota · Sobre los números de los resultados
En este curso mostramos los precios con dos decimales (120.00) para que se lean mejor. SQLite puede mostrar 120 o 45.5; es el mismo valor.
8.Errores frecuentes
- Confundir la base de datos con el servidor o con SQL: los datos, el programa que los gestiona (SGBD) y el lenguaje (SQL) son tres cosas distintas.
- Pensar que NoSQL es «mejor» o «más moderno»: resuelve otros problemas; para datos relacionados, lo relacional suele ser la mejor opción.
- Escribir
.read tienda.sql;con punto y coma: los comandos con punto del programa no llevan;. - Usar el nombre o el correo como clave primaria: pueden cambiar o repetirse; usa un
idnumérico. - Ejecutar
.readdos veces: la segunda da error («table productos already exists») porque la tabla ya existe.
📒 Apuntes para llevar
- Una base de datos organiza información para guardarla, consultarla y protegerla; el SGBD es el programa que la gestiona.
- En el modelo relacional los datos viven en tablas: cada fila es un registro y cada columna un campo con su tipo.
- La clave primaria identifica cada fila; la clave foránea enlaza con otra tabla.
- SQL es un lenguaje declarativo para consultar (
SELECT), modificar (INSERT,UPDATE,DELETE) y definir (CREATE TABLE) datos. - Relacional (SQL) y NoSQL resuelven problemas distintos; para datos relacionados, SQL es una gran primera opción.
- SQLite guarda todo en un archivo y es ideal para aprender; PostgreSQL es el servidor habitual en producción.
9.Glosario
| Término | Significado |
|---|---|
| Base de datos | Colección organizada de información que se puede consultar y modificar. |
| SGBD | Sistema gestor de bases de datos: el programa que administra los datos (SQLite, PostgreSQL…). |
| Tabla | Conjunto de filas y columnas sobre un mismo tema. |
| Fila / registro | Un elemento de la tabla; por ejemplo, un producto. |
| Columna / campo | Una característica de los elementos, con un tipo de dato. |
| Clave primaria | Columna que identifica de forma única cada fila. |
| Clave foránea | Columna que apunta a la clave primaria de otra tabla. |
| SQL | Lenguaje estándar para trabajar con bases de datos relacionales. |
| NoSQL | Familia de bases de datos que no usan el modelo de tablas relacionales. |
🧠 Comprueba lo aprendido
Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.
¿Qué representa una fila de la tabla productos?
Cada fila es un registro: un elemento de la tabla. Las características son las columnas.
¿Para qué sirve una clave primaria?
La clave primaria no se repite ni puede estar vacía: así cada fila se distingue de las demás.
¿Qué es SQLite?
SQLite es un motor (SGBD) sin servidor: toda la base de datos es un único archivo.
«SQL» es…
SQL es el lenguaje; los programas que lo entienden son los SGBD, como SQLite o PostgreSQL.
¿Qué columna de pedidos sería una clave foránea hacia clientes?
La clave foránea guarda el id de la fila de otra tabla (aquí, de clientes).
Tu progreso se guarda en este navegador y se refleja en el índice del curso.
💡 🚀 ¡Ahora te toca!
La práctica fija lo aprendido. Pasa al ejercicio de esta lección.