Cómo Crear tu Primera Base de Datos en MySQL paso a paso

D
DanisCh
(Actualizado: ) 12 min de lectura
Cómo Crear tu Primera Base de Datos en MySQL paso a paso
SQL

Ya sabes qué es SQL y para qué sirve. Ahora viene la parte buena: ponerse manos a la obra y crear tu primera base de datos real en MySQL. Con datos reales. Con tablas reales. Con consultas reales.

En este artículo vamos paso a paso, desde instalar MySQL en tu computadora hasta tener una base de datos funcional con varias tablas relacionadas y datos dentro. Sin saltar pasos, sin dar nada por sentado.

¿Listo? Empieza el cronómetro. ⏱️


¿Por qué MySQL?

MySQL es una base de datos de código abierto, fiable y escalable que utilizan algunas de las empresas más importantes del espacio tecnológico, como Meta, Netflix y Airbnb. Es gratuita, tiene una comunidad enorme, funciona en Windows, Mac y Linux, y es la más usada en desarrollo web. Si aprendes MySQL, el conocimiento te sirve directamente en el mundo laboral real.

Además, MySQL soporta las webs con mayor tráfico del planeta como Facebook, Twitter y YouTube. No está nada mal para algo que puedes instalar gratis en tu computadora en 10 minutos.


Paso 1: Instala MySQL en tu computadora

Tienes dos opciones para instalar MySQL. Elige la que más se adapte a tu perfil:

Opción A: XAMPP — la más fácil para principiantes

XAMPP es un paquete que incluye MySQL, un servidor web Apache y PHP, todo junto en una sola instalación. Es la opción más popular entre estudiantes y principiantes porque no requiere configuración manual.

  1. Ve a apachefriends.org y descarga XAMPP para tu sistema operativo.
  2. Instálalo con las opciones por defecto.
  3. Abre el Panel de Control de XAMPP y haz clic en Start junto a MySQL.
  4. Cuando veas el indicador en verde, MySQL está corriendo. ✅

Para acceder a MySQL desde XAMPP, abre tu navegador y ve a http://localhost/phpmyadmin. Verás una interfaz gráfica llamada phpMyAdmin desde donde puedes gestionar todo visualmente.

Opción B: MySQL Community Server — instalación directa

Si prefieres instalar solo MySQL sin paquetes adicionales, descarga el instalador desde dev.mysql.com/downloads/installer. Durante la instalación, el asistente te pedirá que configures una contraseña para el usuario root. Guárdala bien, la vas a necesitar cada vez que te conectes.

💡 Recomendación: Si eres principiante y solo quieres aprender SQL, ve con XAMPP. Si quieres un entorno más profesional, instala MySQL directamente.


Paso 2: Elige tu herramienta de trabajo

Puedes trabajar con MySQL de dos formas: desde la terminal con comandos de texto, o desde una interfaz gráfica. Ambas son válidas y te conviene conocer las dos.

MySQL Workbench — la interfaz gráfica oficial

MySQL Workbench es la herramienta oficial de MySQL. Tiene un editor SQL con autocompletado, un diseñador visual de bases de datos y herramientas de administración. Es lo que usan muchos desarrolladores profesionales.

Descárgala gratis desde dev.mysql.com/downloads/workbench.

Para conectarte, inicia la aplicación Workbench, crea una nueva conexión e ingresa host, puerto, usuario y contraseña. El host por defecto es localhost, el puerto es 3306, el usuario es root y la contraseña es la que configuraste al instalar.

La terminal — el método clásico

También puedes conectarte directamente desde la terminal de tu sistema operativo. Abre CMD (Windows) o Terminal (Mac/Linux) y escribe:

mysql -u root -p

Presiona Enter, escribe tu contraseña cuando te la pida, y verás el prompt de MySQL listo para recibir comandos:

mysql>

Desde aquí puedes escribir cualquier comando SQL. Para salir, escribe exit;

💡 Consejo: Aprende a usar la terminal aunque luego uses Workbench. Entender los comandos base te hace mejor programador y te salva cuando no tienes interfaz gráfica disponible.


Paso 3: Crea tu primera base de datos

Ya tienes MySQL corriendo y tu herramienta lista. Ahora sí: vamos a crear la base de datos. El proyecto que vamos a construir a lo largo de este tutorial es una base de datos para una tienda online. Simple, realista y con suficiente complejidad para aprender los conceptos que importan.

En MySQL Workbench o en la terminal, ejecuta este comando:

CREATE DATABASE tienda_online;

Verifica que se creó correctamente:

SHOW DATABASES;

Deberías ver tienda_online en la lista junto a las bases de datos del sistema.

Ahora dile a MySQL que quieres trabajar con esa base de datos:

USE tienda_online;

A partir de este punto, todos los comandos que ejecutes afectarán a tienda_online. Así de simple: tres comandos y tu primera base de datos existe.


Paso 4: Diseña la estructura antes de escribir código

Antes de crear tablas, tómate un momento para pensar qué información necesitas guardar. Este paso se llama diseño de la base de datos y es lo que separa una base de datos bien construida de un desastre difícil de mantener.

Para nuestra tienda online necesitamos guardar:

  • 👤 Clientes — quiénes compran
  • 📦 Productos — qué se vende
  • 🛒 Pedidos — quién compró qué y cuándo
  • 📋 Detalle de pedidos — los productos específicos de cada pedido

La relación entre ellas es:

clientes ──── pedidos ──── detalle_pedidos ──── productos

Un cliente puede tener muchos pedidos. Cada pedido puede tener muchos productos. Cada producto puede aparecer en muchos pedidos. Eso es una base de datos relacional en su esencia.


Paso 5: Crea las tablas

Ahora traducimos ese diseño a código SQL. Ejecuta cada bloque en orden:

Tabla de clientes

CREATE TABLE clientes (
  id         INT PRIMARY KEY AUTO_INCREMENT,
  nombre     VARCHAR(100) NOT NULL,
  email      VARCHAR(150) UNIQUE NOT NULL,
  telefono   VARCHAR(20),
  ciudad     VARCHAR(80),
  creado_en  DATETIME DEFAULT CURRENT_TIMESTAMP
);

Tabla de productos

CREATE TABLE productos (
  id           INT PRIMARY KEY AUTO_INCREMENT,
  nombre       VARCHAR(150) NOT NULL,
  descripcion  TEXT,
  precio       DECIMAL(10, 2) NOT NULL,
  stock        INT DEFAULT 0,
  creado_en    DATETIME DEFAULT CURRENT_TIMESTAMP
);

Tabla de pedidos

CREATE TABLE pedidos (
  id           INT PRIMARY KEY AUTO_INCREMENT,
  cliente_id   INT NOT NULL,
  fecha        DATETIME DEFAULT CURRENT_TIMESTAMP,
  estado       ENUM('pendiente', 'enviado', 'entregado', 'cancelado') DEFAULT 'pendiente',
  total        DECIMAL(10, 2) DEFAULT 0,
  FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);

Tabla de detalle de pedidos

CREATE TABLE detalle_pedidos (
  id           INT PRIMARY KEY AUTO_INCREMENT,
  pedido_id    INT NOT NULL,
  producto_id  INT NOT NULL,
  cantidad     INT NOT NULL,
  precio_unit  DECIMAL(10, 2) NOT NULL,
  FOREIGN KEY (pedido_id)   REFERENCES pedidos(id),
  FOREIGN KEY (producto_id) REFERENCES productos(id)
);

Verifica que todas las tablas se crearon correctamente:

SHOW TABLES;

Deberías ver las cuatro tablas listadas. Si quieres ver la estructura detallada de una tabla específica:

DESCRIBE clientes;

Esto te muestra cada columna, su tipo de dato, si acepta nulos y si tiene alguna restricción. Muy útil cuando no recuerdas cómo dejaste una tabla.

¿Qué significa cada parte del código?

Hay conceptos nuevos en esas tablas que vale la pena entender:

  • DECIMAL(10, 2) — número con hasta 10 dígitos en total y 2 decimales. Ideal para precios.
  • TEXT — texto largo sin límite fijo. Para descripciones extensas.
  • ENUM — solo acepta uno de los valores listados. Perfecto para estados con opciones fijas.
  • FOREIGN KEY — clave foránea. Le dice a MySQL que ese campo apunta a un registro de otra tabla. Esto garantiza la integridad de los datos: no puedes crear un pedido con un cliente_id que no existe en la tabla clientes.
  • DEFAULT CURRENT_TIMESTAMP — rellena automáticamente la fecha y hora actual al insertar un registro.

Paso 6: Inserta datos de prueba

Una base de datos vacía no sirve de mucho para practicar. Vamos a insertar datos reales para poder hacer consultas interesantes.

Insertar clientes

INSERT INTO clientes (nombre, email, telefono, ciudad) VALUES
  ('Ana García',    'ana@email.com',    '555-1001', 'Ciudad de México'),
  ('Luis Pérez',    'luis@email.com',   '555-1002', 'Bogotá'),
  ('María López',   'maria@email.com',  '555-1003', 'Lima'),
  ('Carlos Ruiz',   'carlos@email.com', '555-1004', 'Buenos Aires'),
  ('Sofía Herrera', 'sofia@email.com',  '555-1005', 'Santiago');

Insertar productos

INSERT INTO productos (nombre, descripcion, precio, stock) VALUES
  ('Laptop Pro 15"',      'Laptop de alto rendimiento para programadores', 899.99,  20),
  ('Mouse inalámbrico',   'Mouse ergonómico con batería recargable',        29.99,  150),
  ('Teclado mecánico',    'Teclado retroiluminado con switches blue',       79.99,   80),
  ('Monitor 27" 4K',      'Monitor UHD con panel IPS y 144Hz',             399.99,  15),
  ('Auriculares gaming',  'Auriculares con sonido surround 7.1',            59.99,   60),
  ('Webcam Full HD',      'Webcam 1080p con micrófono integrado',           45.99,  100),
  ('Hub USB-C 7 en 1',    'Hub con HDMI, USB 3.0 y carga rápida',          39.99,  200),
  ('SSD Externo 1TB',     'SSD portátil con velocidad de 1050 MB/s',       89.99,   45);

Insertar pedidos

INSERT INTO pedidos (cliente_id, estado, total) VALUES
  (1, 'entregado', 959.97),
  (2, 'enviado',   439.98),
  (3, 'pendiente', 179.97),
  (1, 'entregado', 89.99),
  (4, 'cancelado', 29.99);

Insertar detalle de pedidos

INSERT INTO detalle_pedidos (pedido_id, producto_id, cantidad, precio_unit) VALUES
  (1, 1, 1, 899.99),  -- Pedido 1: Laptop
  (1, 2, 2, 29.99),   -- Pedido 1: 2x Mouse
  (2, 4, 1, 399.99),  -- Pedido 2: Monitor
  (2, 3, 1, 79.99),   -- Pedido 2: Teclado
  (3, 5, 2, 59.99),   -- Pedido 3: 2x Auriculares
  (3, 6, 1, 45.99),   -- Pedido 3: Webcam
  (4, 8, 1, 89.99),   -- Pedido 4: SSD
  (5, 2, 1, 29.99);   -- Pedido 5: Mouse

Paso 7: Consulta tus datos

Ya tienes una base de datos poblada con datos reales. Ahora viene la parte más satisfactoria: hacer consultas y ver cómo MySQL devuelve exactamente la información que necesitas.

Ver todos los clientes

SELECT * FROM clientes;

Ver productos con stock bajo (menos de 50 unidades)

SELECT nombre, precio, stock
FROM productos
WHERE stock < 50
ORDER BY stock ASC;

Ver todos los pedidos con el nombre del cliente

SELECT
  pedidos.id AS numero_pedido,
  clientes.nombre AS cliente,
  pedidos.estado,
  pedidos.total,
  pedidos.fecha
FROM pedidos
INNER JOIN clientes ON pedidos.cliente_id = clientes.id
ORDER BY pedidos.fecha DESC;

Ver el detalle completo de un pedido específico

SELECT
  productos.nombre AS producto,
  detalle_pedidos.cantidad,
  detalle_pedidos.precio_unit,
  (detalle_pedidos.cantidad * detalle_pedidos.precio_unit) AS subtotal
FROM detalle_pedidos
INNER JOIN productos ON detalle_pedidos.producto_id = productos.id
WHERE detalle_pedidos.pedido_id = 1;

¿Cuánto ha gastado cada cliente en total?

SELECT
  clientes.nombre,
  COUNT(pedidos.id) AS total_pedidos,
  SUM(pedidos.total) AS total_gastado
FROM clientes
LEFT JOIN pedidos ON clientes.id = pedidos.cliente_id
GROUP BY clientes.id, clientes.nombre
ORDER BY total_gastado DESC;

Los 3 productos más vendidos

SELECT
  productos.nombre,
  SUM(detalle_pedidos.cantidad) AS unidades_vendidas
FROM detalle_pedidos
INNER JOIN productos ON detalle_pedidos.producto_id = productos.id
GROUP BY productos.id, productos.nombre
ORDER BY unidades_vendidas DESC
LIMIT 3;

¿Ves lo que está pasando? Con estas consultas puedes responder preguntas de negocio reales: qué productos se venden más, cuánto gasta cada cliente, qué pedidos están pendientes. Eso es exactamente lo que hacen los analistas de datos y los desarrolladores backend en sus trabajos todos los días.


Paso 8: Modifica y elimina datos

Actualizar el stock después de una venta

UPDATE productos
SET stock = stock - 1
WHERE id = 1;

-- Verificamos el cambio
SELECT nombre, stock FROM productos WHERE id = 1;

Cambiar el estado de un pedido

UPDATE pedidos
SET estado = 'entregado'
WHERE id = 2;

Eliminar un pedido cancelado

-- Primero eliminamos el detalle (por la clave foránea)
DELETE FROM detalle_pedidos WHERE pedido_id = 5;

-- Luego eliminamos el pedido
DELETE FROM pedidos WHERE id = 5;

⚠️ Nota importante: Como la tabla detalle_pedidos tiene una FOREIGN KEY que apunta a pedidos, MySQL no te deja eliminar un pedido si todavía tiene registros en el detalle. Primero debes borrar los detalles y luego el pedido. Eso es precisamente la integridad referencial funcionando para proteger tus datos.


Errores comunes al crear tu primera base de datos

Olvidar el punto y coma al final

SELECT * FROM clientes   -- ❌ MySQL espera más input
SELECT * FROM clientes;  -- ✅ El punto y coma indica que el comando terminó

No seleccionar la base de datos antes de operar

-- ❌ Error: no hay base de datos seleccionada
CREATE TABLE productos (...);

-- ✅ Primero selecciona la base de datos
USE tienda_online;
CREATE TABLE productos (...);

Intentar eliminar una tabla que tiene dependencias

-- ❌ Error: pedidos tiene una FOREIGN KEY hacia clientes
DROP TABLE clientes;

-- ✅ Elimina primero las tablas dependientes
DROP TABLE detalle_pedidos;
DROP TABLE pedidos;
DROP TABLE productos;
DROP TABLE clientes;

Crear una tabla sin PRIMARY KEY

Técnicamente es posible, pero es una mala práctica. Sin PRIMARY KEY, no tienes una forma confiable de identificar y actualizar registros individuales. Siempre define una llave primaria en cada tabla.


Comandos de administración útiles

Antes de terminar, aquí van algunos comandos de administración que te van a salvar más de una vez:

-- Ver todas las bases de datos disponibles
SHOW DATABASES;

-- Ver todas las tablas de la base de datos activa
SHOW TABLES;

-- Ver la estructura de una tabla
DESCRIBE clientes;
-- o también:
SHOW COLUMNS FROM clientes;

-- Ver el comando SQL que creó una tabla
SHOW CREATE TABLE clientes;

-- Contar cuántos registros hay en una tabla
SELECT COUNT(*) FROM productos;

-- Eliminar una base de datos completa (¡con cuidado!)
DROP DATABASE tienda_online;

Resumen: lo que construiste hoy

  • ✅ Instalaste MySQL usando XAMPP o el instalador oficial
  • ✅ Creaste y seleccionaste tu primera base de datos con CREATE DATABASE y USE
  • ✅ Diseñaste 4 tablas relacionadas con tipos de datos apropiados
  • ✅ Usaste FOREIGN KEY para mantener la integridad entre tablas
  • ✅ Insertaste datos reales con INSERT INTO
  • ✅ Consultaste información con SELECT, JOIN, GROUP BY y ORDER BY
  • ✅ Modificaste y eliminaste registros con UPDATE y DELETE
  • ✅ Aprendiste los errores más comunes y cómo evitarlos

Lo que tienes ahora no es un ejercicio de laboratorio: es una base de datos funcional con estructura real, datos reales y consultas reales. Exactamente lo mismo que encontrarás en proyectos profesionales, solo que más pequeño.


🧪 ¿Listo para poner a prueba tus conocimientos de SQL?

Acabas de construir tu primera base de datos desde cero. Ahora viene el momento de verificar que los fundamentos de SQL que usaste hoy están bien sólidos.

Tenemos un test de SQL Basics con preguntas cortas y directas sobre todo lo que viste en este artículo y en la guía anterior. Sin trampa, sin tiempo límite y con feedback inmediato. En pocos minutos sabrás exactamente en qué nivel estás.

👉 Hacer el test de SQL Basics 

¿Lograste ejecutar todas las consultas sin errores? ¿Tuviste algún problema con las claves foráneas o los JOINs? Cuéntanos en los comentarios 👇 — respondemos todos.

¿Te ha gustado esta entrada?

Compártela con tus compañeros para que también sigan aprendiendo.

Comunidad y Comentarios

0 COMENTARIOS

No hay comentarios todavía. Sé el primero en compartir tu opinión.

Escribe tu opinión
Respondiendo a