📚¿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.
🎮 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.
Comandos Disponibles:
CREATE DATABASE nombre- Crear una base de datosUSE nombre- Seleccionar una base de datosCREATE TABLE nombre (columnas)- Crear una tablaINSERT INTO tabla VALUES (valores)- Insertar datosSELECT * FROM tabla- Consultar datosUPDATE tabla SET columna=valor WHERE condicion- Actualizar datosDELETE FROM tabla WHERE condicion- Eliminar datosSHOW DATABASES- Ver todas las bases de datosSHOW TABLES- Ver todas las tablasDESCRIBE tabla- Ver estructura de una tabla
Ejercicio Práctico
Prueba crear tu primera base de datos siguiendo estos pasos:
- Crea una base de datos llamada
mi_tienda - Selecciónala con
USE mi_tienda - Crea una tabla de productos con columnas: id, nombre, precio
- Inserta 3 productos diferentes
- 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;
📊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';
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;
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;
🎓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.