Saltar al contenido
Bases de datos con SQL
Todos los cursos Ir al ejercicio →

Qué es una base de datos

  • ⏱ 40 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 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.

NecesidadArchivo de texto u hoja de cálculoBase de datos
Buscar un dato entre millonesLento: hay que leer todoRápido, con índices y consultas
Evitar errores (un precio escrito como «abc»)Cualquiera escribe lo que quieraTipos de datos y restricciones que lo impiden
Varios usuarios a la vezConflictos y pérdidasControl de acceso y transacciones
Relacionar datos (clientes y pedidos)Se copian los datos a manoSe enlazan entre tablas
Seguridad y copiasDepende de tiUsuarios, 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.

Navegadorformulario, página
→petición
ServidorNode.js u otro
→SQL
Base de datosSQLite, PostgreSQL…

2.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:

idnombrecategoriapreciostock
1TecladoPeriféricos120.0015
2RatónPeriféricos45.5040
3Monitor FHDPantallas650.008
4AuricularesAudio89.900
5WebcamPeriféricos150.0012
6AltavozAudio99.0025
7Monitor 4KPantallas899.003
8Cable HDMIAccesorios15.00100

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.

🔍 Explorador de la tabla productos
idnombrecategoriapreciostock
1TecladoPeriféricos120.0015
2RatónPeriféricos45.5040
3Monitor FHDPantallas650.008
4AuricularesAudio89.900

Pulsa un botón para ver qué parte de la tabla es.

💡 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.

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:

clientesid (clave primaria)
←cliente_id
pedidoscliente_id (clave foránea)

Así 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.

Tu primera consulta
-- «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):

nombreprecio
Auriculares89.90
Altavoz99.00

Las instrucciones de SQL se agrupan según lo que hacen:

GrupoPara qué sirveEjemplosLección
ConsultarLeer datosSELECT2, 5 y 6
Manipular datosAñadir, cambiar o borrar filasINSERT, UPDATE, DELETE3
Definir estructuraCrear o modificar tablasCREATE TABLE, ALTER TABLE, DROP TABLE4
Permisos y controlUsuarios, transaccionesGRANT, BEGIN, COMMIT3 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)
EstructuraTablas con columnas definidas de antemanoDocumentos flexibles, cada uno puede ser distinto
RelacionesMuy buenas: claves y JOINSe suelen anidar o duplicar datos
ConsistenciaTransacciones fiablesDepende del producto
Ideal paraTiendas, facturación, usuarios, reservasCatá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

MotorCómo funcionaCuándo usarlo
SQLiteToda la base de datos es un solo archivo; no hay servidor que instalarAprender, apps pequeñas, móviles, prototipos
PostgreSQLServidor completo, muy potente y estricto con los tiposAplicaciones web en producción
MySQL / MariaDBServidor muy extendido en alojamientos webSitios 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:

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.

tienda.sql
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:

Terminal
sqlite3 tienda.db

sqlite> .read tienda.sql
sqlite> .headers on
sqlite> .mode column
sqlite> SELECT * FROM productos;
sqlite> .tables
sqlite> .schema productos
sqlite> .quit

📌 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

📒 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érminoSignificado
Base de datosColección organizada de información que se puede consultar y modificar.
SGBDSistema gestor de bases de datos: el programa que administra los datos (SQLite, PostgreSQL…).
TablaConjunto de filas y columnas sobre un mismo tema.
Fila / registroUn elemento de la tabla; por ejemplo, un producto.
Columna / campoUna característica de los elementos, con un tipo de dato.
Clave primariaColumna que identifica de forma única cada fila.
Clave foráneaColumna que apunta a la clave primaria de otra tabla.
SQLLenguaje estándar para trabajar con bases de datos relacionales.
NoSQLFamilia 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?

¿Para qué sirve una clave primaria?

¿Qué es SQLite?

«SQL» es…

¿Qué columna de pedidos sería una clave foránea hacia 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.

Ir al ejercicio