Skip to content

¿Qué es una base de datos? ​

Antes de escribir tu primera consulta necesitas entender qué problema resuelven las bases de datos y qué piezas intervienen. En esta lección verás qué es una base de datos, qué es un SGBD, la diferencia entre bases relacionales y NoSQL, y cómo empezar a practicar hoy mismo sin instalar nada.

Concepto ​

Una base de datos es un archivero organizado ​

Imagina la papelería de tu colonia. Al principio el dueño anota las ventas en un cuaderno. Funciona… hasta que tiene 3 sucursales, 2,000 productos y le preguntas: "¿cuántas libretas vendiste en marzo en la sucursal centro?". Con un cuaderno, responder eso toma horas.

Una base de datos (BD) es una colección de datos organizada para que puedas guardarlos, encontrarlos y modificarlos de forma rápida y confiable. En vez de páginas sueltas, la información vive en estructuras bien definidas (tablas, documentos…) y puedes preguntarle cosas en segundos.

¿Y por qué no usar Excel? ​

Una hoja de cálculo se parece a una tabla, pero se queda corta cuando el proyecto crece:

ProblemaHoja de cálculoBase de datos
Muchos usuarios a la vezConflictos, archivos "copia (2).xlsx"Miles de conexiones simultáneas
Millones de registrosSe vuelve lenta o no abreDiseñada para eso
Reglas (un email único, precio positivo)Fáciles de romperSe garantizan con restricciones
Relacionar datos (cliente → pedidos)Fórmulas frágilesClaves y JOINs
Seguridad y permisosTodo o nadaPermisos por usuario y tabla
Acceso desde una app webComplicadoEs su función principal

SGBD: el programa que administra la base de datos ​

La base de datos son los datos. El programa que los guarda en disco, atiende las consultas, controla permisos y evita que se corrompan es el SGBD (Sistema Gestor de Bases de Datos, en inglés DBMS).

txt
  Tu app (PHP, Node, Laravel...)          Tú, desde una terminal
            │                                      │
            └──────────── consultas SQL ───────────┘
                              │
                     ┌────────▼────────┐
                     │      SGBD       │  ← MySQL, PostgreSQL, SQLite...
                     │ (servidor de BD)│
                     └────────┬────────┘
                              │ lee / escribe
                     ┌────────▼────────┐
                     │ Archivos en disco│  ← tus datos
                     └─────────────────┘

SGBD populares:

SGBDTipoDónde lo verás
MySQL / MariaDBRelacionalHosting compartido, WordPress, Laravel, PHP
PostgreSQLRelacionalApps modernas, Supabase, Django, Node
SQLiteRelacional (archivo)Apps móviles, prototipos, navegadores
SQL ServerRelacionalEmpresas con tecnología Microsoft
OracleRelacionalBancos y corporativos grandes
MongoDBNoSQL (documentos)Apps con datos flexibles, Node.js
RedisNoSQL (clave-valor)Caché, sesiones, colas

Bases de datos relacionales ​

Una base de datos relacional organiza la información en tablas (como hojas de cálculo con reglas estrictas) que se relacionan entre sí mediante claves. Por ejemplo, la tabla pedidos guarda el id del cliente en vez de repetir su nombre y correo en cada pedido.

txt
clientes                         pedidos
┌────┬─────────────┐             ┌────┬────────────┬────────────┐
│ id │ nombre      │             │ id │ cliente_id │ fecha      │
├────┼─────────────┤             ├────┼────────────┼────────────┤
│ 1  │ Ana López   │◄────────────│ 1  │ 1          │ 2024-05-02 │
│ 2  │ Carlos Ruiz │◄──────┐     │ 3  │ 1          │ 2024-06-01 │
└────┴─────────────┘       └─────│ 2  │ 2          │ 2024-05-10 │
                                 └────┴────────────┴────────────┘

Para hablar con ellas se usa SQL.

Bases de datos NoSQL ​

NoSQL ("not only SQL") agrupa a los sistemas que no usan tablas relacionales. El más conocido es MongoDB, que guarda documentos parecidos a JSON:

json
{
  "_id": 1,
  "nombre": "Ana López",
  "pedidos": [
    { "fecha": "2024-05-02", "total": 1597.00 },
    { "fecha": "2024-06-01", "total": 3499.00 }
  ]
}

¿Relacional o NoSQL? ​

CriterioRelacional (SQL)NoSQL (p. ej. MongoDB)
EstructuraEsquema fijo: columnas y tipos definidosFlexible: cada documento puede variar
RelacionesExcelentes (JOINs, claves foráneas)Se embeben datos o se referencian a mano
ConsistenciaTransacciones ACID muy madurasDepende del sistema (Mongo ya tiene transacciones)
EscalaVertical y réplicas de lecturaPensado para escalar horizontalmente
Ideal paraTiendas, ERP, finanzas, escuelas, casi todoCatálogos muy variables, logs, tiempo real

Regla práctica

Si no tienes una razón clara para usar NoSQL, usa una base de datos relacional. La gran mayoría de proyectos para clientes (tiendas, reservas, inventarios, sistemas escolares) encajan perfecto en tablas. Cuando quieras explorar la otra opción, tienes el curso de MongoDB.

SQL: el idioma de las bases relacionales ​

SQL es un lenguaje declarativo: dices qué quieres, no cómo obtenerlo. El SGBD decide la mejor forma de buscarlo.

sql
-- "Dame el nombre y la ciudad de los clientes de Monterrey"
SELECT nombre, ciudad
FROM clientes
WHERE ciudad = 'Monterrey';

Las instrucciones de SQL se agrupan en familias:

FamiliaSignificadoComandosPara qué
DDLData Definition LanguageCREATE, ALTER, DROPDefinir la estructura
DMLData Manipulation LanguageINSERT, UPDATE, DELETEModificar datos
DQLData Query LanguageSELECTConsultar datos
DCLData Control LanguageGRANT, REVOKEPermisos
TCLTransaction ControlBEGIN, COMMIT, ROLLBACKTransacciones

Cada SGBD tiene su "dialecto" (pequeñas diferencias), pero el 90 % de lo que aprenderás funciona igual en todos. Cuando haya diferencias importantes te lo indicaremos.

Ejemplo ​

Este es un adelanto de lo que construirás en el curso. Puedes copiarlo y ejecutarlo en cualquier herramienta de las que verás abajo:

sql
-- 1. Crear una tabla
CREATE TABLE clientes (
  id INT PRIMARY KEY,           -- identificador único
  nombre VARCHAR(100) NOT NULL, -- texto obligatorio
  ciudad VARCHAR(80)            -- texto opcional
);

-- 2. Guardar datos
INSERT INTO clientes (id, nombre, ciudad) VALUES
  (1, 'Ana López', 'Ciudad de México'),
  (2, 'Carlos Ruiz', 'Guadalajara'),
  (3, 'María Pérez', 'Monterrey');

-- 3. Consultar
SELECT nombre FROM clientes WHERE ciudad = 'Guadalajara';

Resultado:

nombre
Carlos Ruiz

Cómo practicar ​

Tienes tres caminos, de menor a mayor esfuerzo:

1. En el navegador (cero instalación) ​

  • DB Fiddle (db-fiddle.com): eliges MySQL, PostgreSQL o SQLite, pegas tu script y ejecutas.
  • SQLite Online (sqliteonline.com): rápido para pruebas.
  • OneCompiler o Programiz SQL: editores sencillos.

Ideal para las primeras lecciones.

2. SQLite en tu computadora ​

SQLite es una base de datos en un solo archivo. Descarga el programa sqlite3 o la app gráfica DB Browser for SQLite:

bash
# Crear (o abrir) una base de datos llamada tienda.db
sqlite3 tienda.db

# Dentro de sqlite3:
# .tables          → lista las tablas
# .headers on      → muestra nombres de columnas
# .mode column     → formato de tabla
# .quit            → salir

3. Un servidor real: MySQL o PostgreSQL ​

Es lo que usarás en proyectos de clientes. Tienes guías completas de instalación en MySQL y PostgreSQL. Con Docker, por ejemplo, levantas un MySQL en un minuto:

bash
docker run --name mysql-curso -e MYSQL_ROOT_PASSWORD=secreto -p 3306:3306 -d mysql:8.4
docker exec -it mysql-curso mysql -u root -p

Buena práctica

Guarda tus scripts en archivos .sql dentro de una carpeta del curso (por ejemplo curso-sql/04-crear-tablas.sql). Así podrás reconstruir tu base de datos en segundos y versionarla con Git.

Error común

Confundir base de datos con SGBD. "Instalé MySQL" significa que instalaste el gestor; dentro de él después creas una o varias bases de datos (tienda, escuela, blog...).

Casos de uso reales ​

  • Tienda en línea: productos, inventario, clientes, pedidos, pagos.
  • Sistema escolar: alumnos, materias, grupos, calificaciones.
  • Clínica: pacientes, citas, médicos, historiales.
  • Blog o CMS (WordPress): entradas, usuarios, comentarios, categorías.
  • App de reservas: habitaciones, fechas, huéspedes, pagos.

En todos ellos hay entidades (cosas) que se relacionan entre sí: justo lo que las bases relacionales hacen mejor.

Ejercicios ​

  1. Explica con tus palabras la diferencia entre una base de datos y un SGBD.
  2. Para cada proyecto, ¿usarías relacional o NoSQL? a) Sistema de nómina. b) Registro de eventos (logs) de millones de sensores con campos que cambian. c) Tienda en línea de ropa.
  3. Clasifica estos comandos en DDL, DML, DQL o DCL: SELECT, CREATE TABLE, GRANT, DELETE, ALTER TABLE, INSERT.
  4. Entra a DB Fiddle o SQLite Online, ejecuta el script del ejemplo y agrega un cuarto cliente de tu ciudad. Después consulta todos los clientes.
Ver solución
  1. La base de datos es el conjunto organizado de datos (por ejemplo, tienda). El SGBD es el software que la administra, guarda en disco y responde consultas (MySQL, PostgreSQL...).
  2. a) Relacional: datos estructurados, cálculos exactos y transacciones. b) NoSQL encaja bien (estructura variable, volumen enorme, escrituras masivas); también podría usarse PostgreSQL con JSONB. c) Relacional: productos, inventario y pedidos están muy relacionados.
  3. DQL: SELECT. DDL: CREATE TABLE, ALTER TABLE. DML: DELETE, INSERT. DCL: GRANT.
sql
INSERT INTO clientes (id, nombre, ciudad) VALUES (4, 'Tu Nombre', 'Puebla');

SELECT * FROM clientes;

Resumen ​

  • Una base de datos es información organizada para guardarla y consultarla rápido y de forma confiable.
  • El SGBD (MySQL, PostgreSQL, SQLite...) es el programa que la administra.
  • Las bases relacionales usan tablas relacionadas por claves; las NoSQL usan documentos, pares clave-valor, grafos, etc.
  • SQL es el lenguaje declarativo de las bases relacionales: DDL, DML, DQL, DCL y TCL.
  • Para practicar basta un sitio como DB Fiddle; para proyectos reales usarás MySQL o PostgreSQL.

Academia Web — aprende, copia y construye.