📚¿Qué es una Base de Datos?

Imagina que tienes cientos de cuadernos con información de tus amigos: nombres, teléfonos, cumpleaños, etc. Una base de datos es como un archivo digital súper organizado donde puedes guardar, buscar y ordenar información de forma rápida y eficiente.

MySQL es un sistema que te permite crear y gestionar estas bases de datos. Es uno de los sistemas más populares del mundo y lo usan empresas como Facebook, YouTube, Twitter y muchas más.

🎮 Para Gamers

Guarda información de tus juegos favoritos, puntuaciones y logros

🎵 Para Música

Organiza tu colección de canciones, artistas y álbumes

📱 Para Apps

Almacena usuarios, mensajes y contenido de aplicaciones

🚀Conceptos Básicos

Elemento Descripción Ejemplo
Base de Datos El contenedor principal tienda_videojuegos
Tabla Como una hoja de Excel videojuegos, jugadores
Columna Cada tipo de dato nombre, edad, precio
Fila Un registro completo La información de un videojuego
Primary Key Identificador único id (1, 2, 3...)

Tipos de Datos Más Comunes

  • INT: Números enteros (1, 2, 3, 100, -5)
  • VARCHAR(n): Texto de hasta n caracteres
  • DECIMAL(n,d): Números con decimales (99.99)
  • DATE: Fechas (2024-12-25)
  • DATETIME: Fecha y hora
  • TEXT: Texto largo (biografías, descripciones)

💻¡Practica Aquí! - Simulador SQL Interactivo

🎉 ¡Prueba todos los comandos directamente en tu navegador!

No necesitas instalar MySQL. Usa este simulador para practicar CREATE, INSERT, SELECT, UPDATE, DELETE y más. Es perfecto para experimentar sin miedo a romper nada.

Simulador SQL Interactivo
En línea
Crear Base de Datos CREATE DATABASE
Crear Tabla CREATE TABLE
Insertar Datos INSERT INTO
Consultar Datos SELECT
Actualizar Datos UPDATE
Eliminar Datos DELETE
Bienvenido al simulador SQL. Escribe un comando y haz clic en "Ejecutar" o presiona Ctrl+Enter.

Comandos Disponibles:

  • CREATE DATABASE nombre - Crear una base de datos
  • USE nombre - Seleccionar una base de datos
  • CREATE TABLE nombre (columnas) - Crear una tabla
  • INSERT INTO tabla VALUES (valores) - Insertar datos
  • SELECT * FROM tabla - Consultar datos
  • UPDATE tabla SET columna=valor WHERE condicion - Actualizar datos
  • DELETE FROM tabla WHERE condicion - Eliminar datos
  • SHOW DATABASES - Ver todas las bases de datos
  • SHOW TABLES - Ver todas las tablas
  • DESCRIBE tabla - Ver estructura de una tabla

Ejercicio Práctico

Prueba crear tu primera base de datos siguiendo estos pasos:

  1. Crea una base de datos llamada mi_tienda
  2. Selecciónala con USE mi_tienda
  3. Crea una tabla de productos con columnas: id, nombre, precio
  4. Inserta 3 productos diferentes
  5. Consulta todos los datos con SELECT * FROM productos

¡Inténtalo ahora en el simulador de arriba! 👆

🎯Crear tu Primera Base de Datos

Acceder a MySQL

mysql -u root -p

Crear y Seleccionar una Base de Datos

-- Crear una base de datos
CREATE DATABASE tienda_videojuegos;

-- Ver todas las bases de datos
SHOW DATABASES;

-- Seleccionar la base de datos para usarla
USE tienda_videojuegos;
¡Consejo! Es buena práctica nombrar las bases de datos y tablas en minúsculas y usar guiones bajos (_) en lugar de espacios.

📊Crear Tablas

Ejemplo 1: Tabla de Videojuegos

CREATE TABLE videojuegos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(100) NOT NULL,
    plataforma VARCHAR(50),
    precio DECIMAL(10, 2),
    fecha_lanzamiento DATE,
    genero VARCHAR(50),
    calificacion INT
);

Explicación de Propiedades:

  • AUTO_INCREMENT: Se incrementa automáticamente (1, 2, 3...)
  • PRIMARY KEY: Identifica cada registro de forma única
  • NOT NULL: El campo es obligatorio
  • UNIQUE: No puede haber valores duplicados
  • DEFAULT: Valor por defecto si no se especifica

Ejemplo 2: Tabla de Jugadores

CREATE TABLE jugadores (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    nickname VARCHAR(50) UNIQUE,
    email VARCHAR(100) UNIQUE,
    edad INT,
    pais VARCHAR(50),
    fecha_registro DATE,
    puntos INT DEFAULT 0
);

Ver la Estructura de una Tabla

DESCRIBE videojuegos;
-- o también
SHOW COLUMNS FROM videojuegos;

Insertar Datos (CREATE)

Insertar un Solo Registro

INSERT INTO videojuegos (titulo, plataforma, precio, fecha_lanzamiento, genero, calificacion)
VALUES ('The Legend of Zelda', 'Nintendo Switch', 59.99, '2023-05-12', 'Aventura', 10);

Insertar Múltiples Registros

INSERT INTO videojuegos (titulo, plataforma, precio, fecha_lanzamiento, genero, calificacion)
VALUES 
    ('Minecraft', 'PC', 29.99, '2011-11-18', 'Sandbox', 9),
    ('FIFA 24', 'PlayStation 5', 69.99, '2023-09-29', 'Deportes', 8),
    ('Fortnite', 'Multiplataforma', 0.00, '2017-07-25', 'Battle Royale', 8),
    ('Elden Ring', 'PC', 59.99, '2022-02-25', 'RPG', 10),
    ('Among Us', 'Móvil', 4.99, '2018-06-15', 'Multijugador', 7);

Insertar Jugadores

INSERT INTO jugadores (nombre, nickname, email, edad, pais, fecha_registro, puntos)
VALUES 
    ('Carlos Mendoza', 'CarlosGamer', 'carlos@email.com', 16, 'México', '2024-01-15', 1500),
    ('Ana Rodríguez', 'AnaPlay', 'ana@email.com', 17, 'España', '2024-02-20', 2300),
    ('Luis Torres', 'LuisKing', 'luis@email.com', 16, 'Argentina', '2024-03-10', 1800);

🔍Consultar Datos (READ)

Ver Todos los Registros

SELECT * FROM videojuegos;

Ver Solo Algunas Columnas

SELECT titulo, precio, calificacion FROM videojuegos;

Filtrar con WHERE

-- Videojuegos de menos de 30 dólares
SELECT titulo, precio FROM videojuegos WHERE precio < 30;

-- Videojuegos de un género específico
SELECT titulo, plataforma FROM videojuegos WHERE genero = 'Aventura';

-- Videojuegos con calificación perfecta
SELECT titulo, calificacion FROM videojuegos WHERE calificacion = 10;

Operadores de Comparación

-- Mayor o igual que
SELECT titulo, precio FROM videojuegos WHERE precio >= 50;

-- Diferente de
SELECT titulo, plataforma FROM videojuegos WHERE plataforma != 'PC';

-- Entre dos valores
SELECT titulo, precio FROM videojuegos WHERE precio BETWEEN 20 AND 60;

-- Buscar texto parcial
SELECT titulo FROM videojuegos WHERE titulo LIKE '%Zelda%';

Ordenar Resultados

-- Ordenar por precio (menor a mayor)
SELECT titulo, precio FROM videojuegos ORDER BY precio ASC;

-- Ordenar por calificación (mayor a menor)
SELECT titulo, calificacion FROM videojuegos ORDER BY calificacion DESC;

-- Ver solo los 3 mejores videojuegos
SELECT titulo, calificacion FROM videojuegos ORDER BY calificacion DESC LIMIT 3;

Combinar Condiciones

-- Videojuegos baratos Y con buena calificación
SELECT titulo, precio, calificacion 
FROM videojuegos 
WHERE precio < 30 AND calificacion >= 8;

-- Videojuegos de PC O Nintendo Switch
SELECT titulo, plataforma 
FROM videojuegos 
WHERE plataforma = 'PC' OR plataforma = 'Nintendo Switch';

✏️Actualizar Datos (UPDATE)

-- Actualizar el precio de un videojuego
UPDATE videojuegos 
SET precio = 49.99 
WHERE titulo = 'The Legend of Zelda';

-- Actualizar múltiples campos
UPDATE videojuegos 
SET precio = 39.99, calificacion = 9 
WHERE titulo = 'Minecraft';

-- Aumentar puntos de un jugador
UPDATE jugadores 
SET puntos = puntos + 500 
WHERE nickname = 'CarlosGamer';
⚠️ ¡IMPORTANTE! Siempre usa WHERE en tus UPDATE, si no lo haces, ¡modificarás TODOS los registros de la tabla!

🗑️Eliminar Datos (DELETE)

-- Eliminar un videojuego específico
DELETE FROM videojuegos WHERE titulo = 'Among Us';

-- Eliminar videojuegos con baja calificación
DELETE FROM videojuegos WHERE calificacion < 6;

-- Eliminar jugadores inactivos
DELETE FROM jugadores WHERE puntos = 0;
⚠️ ¡CUIDADO! Si no pones WHERE, borrarás TODA la tabla. Mejor prueba primero con un SELECT para ver qué vas a eliminar.

📈Funciones Agregadas

Contar Registros

-- ¿Cuántos videojuegos tenemos?
SELECT COUNT(*) FROM videojuegos;

-- ¿Cuántos videojuegos hay por género?
SELECT genero, COUNT(*) AS cantidad 
FROM videojuegos 
GROUP BY genero;

Calcular Promedios, Máximos y Mínimos

-- Precio promedio de los videojuegos
SELECT AVG(precio) AS precio_promedio FROM videojuegos;

-- Videojuego más caro
SELECT MAX(precio) AS precio_maximo FROM videojuegos;

-- Videojuego más barato
SELECT MIN(precio) AS precio_minimo FROM videojuegos;

-- Suma total de todos los precios
SELECT SUM(precio) AS total FROM videojuegos;

Agrupar Datos

-- Precio promedio por plataforma
SELECT plataforma, AVG(precio) AS precio_promedio 
FROM videojuegos 
GROUP BY plataforma;

-- Calificación promedio por género
SELECT genero, AVG(calificacion) AS calificacion_promedio 
FROM videojuegos 
GROUP BY genero;

🔗Relacionar Tablas (JOINS)

Crear Tabla de Compras

CREATE TABLE compras (
    id INT AUTO_INCREMENT PRIMARY KEY,
    jugador_id INT,
    videojuego_id INT,
    fecha_compra DATE,
    precio_pagado DECIMAL(10, 2),
    FOREIGN KEY (jugador_id) REFERENCES jugadores(id),
    FOREIGN KEY (videojuego_id) REFERENCES videojuegos(id)
);

Insertar Compras

INSERT INTO compras (jugador_id, videojuego_id, fecha_compra, precio_pagado)
VALUES 
    (1, 1, '2024-06-15', 59.99),
    (1, 2, '2024-07-20', 29.99),
    (2, 3, '2024-08-10', 69.99);

INNER JOIN - Ver Información Completa

SELECT 
    jugadores.nombre,
    videojuegos.titulo,
    compras.fecha_compra,
    compras.precio_pagado
FROM compras
INNER JOIN jugadores ON compras.jugador_id = jugadores.id
INNER JOIN videojuegos ON compras.videojuego_id = videojuegos.id;
💡 ¿Qué es un JOIN? Es como unir dos tablas para ver información relacionada. Por ejemplo, en lugar de ver solo números (jugador_id: 1), puedes ver el nombre real del jugador (Carlos Mendoza).

🎓Ejercicios Prácticos

Ejercicio 1: Base de Datos de Música

CREATE DATABASE mi_musica;
USE mi_musica;

CREATE TABLE canciones (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(100),
    artista VARCHAR(100),
    album VARCHAR(100),
    duracion INT,  -- en segundos
    genero VARCHAR(50),
    año INT,
    reproducciones INT DEFAULT 0
);

-- Agrega tus canciones favoritas
INSERT INTO canciones (titulo, artista, album, duracion, genero, año, reproducciones)
VALUES 
    ('Blinding Lights', 'The Weeknd', 'After Hours', 200, 'Pop', 2020, 1000000),
    ('Bohemian Rhapsody', 'Queen', 'A Night at the Opera', 354, 'Rock', 1975, 2000000);

Ejercicio 2: Consultas Útiles

-- ¿Cuál es tu canción más larga?
SELECT titulo, duracion FROM canciones ORDER BY duracion DESC LIMIT 1;

-- ¿Cuántas canciones tienes por género?
SELECT genero, COUNT(*) FROM canciones GROUP BY genero;

-- Canciones de los últimos 5 años
SELECT titulo, artista, año FROM canciones WHERE año >= 2020;

Ejercicio 3: Proyecto Final - Red Social de Gamers

CREATE DATABASE red_gamers;
USE red_gamers;

-- Tabla de usuarios
CREATE TABLE usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100) UNIQUE,
    fecha_registro DATE,
    nivel INT DEFAULT 1,
    biografia TEXT
);

-- Tabla de posts
CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT,
    contenido TEXT,
    fecha_publicacion DATETIME,
    likes INT DEFAULT 0,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);

-- Tabla de amistades
CREATE TABLE amistades (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario1_id INT,
    usuario2_id INT,
    fecha_amistad DATE,
    FOREIGN KEY (usuario1_id) REFERENCES usuarios(id),
    FOREIGN KEY (usuario2_id) REFERENCES usuarios(id)
);

💡Consejos y Buenas Prácticas

1. Usa WHERE

Siempre usa WHERE en UPDATE y DELETE para no afectar toda la tabla

2. Nombres Descriptivos

Nombra las tablas en plural y usa nombres claros para las columnas

3. Primary Keys

Siempre ten una PRIMARY KEY en cada tabla

4. Backups

Guarda copias de seguridad de tu base de datos regularmente

5. Prueba Primero

Prueba tus consultas con SELECT antes de hacer UPDATE o DELETE

6. Comenta tu Código

Usa comentarios (--) para explicar consultas complejas

Comandos Útiles Adicionales

-- Agregar una columna nueva
ALTER TABLE videojuegos ADD COLUMN desarrollador VARCHAR(100);

-- Eliminar una columna
ALTER TABLE videojuegos DROP COLUMN desarrollador;

-- Modificar una columna
ALTER TABLE videojuegos MODIFY COLUMN precio DECIMAL(12, 2);

-- Eliminar una tabla completa
DROP TABLE nombre_tabla;

-- Eliminar una base de datos
DROP DATABASE nombre_base_datos;

📚Recursos para Seguir Aprendiendo

  • Practica en MySQL Workbench (interfaz gráfica oficial)
  • Usa phpMyAdmin para gestionar bases de datos visualmente
  • Crea proyectos pequeños: biblioteca personal, agenda de contactos, inventario
  • Combina MySQL con lenguajes de programación (Python, PHP, JavaScript)
  • Explora tutoriales en YouTube y plataformas de aprendizaje
  • Únete a comunidades de desarrolladores en Discord o Reddit

🎉 ¡Felicidades!

Ahora tienes las bases para trabajar con MySQL. La práctica es clave: crea tus propias bases de datos sobre temas que te gusten (películas, deportes, colecciones, etc.) y experimenta con consultas cada vez más complejas.

⬆️ Volver al Inicio