Día 0 – Setup del entorno: PostgreSQL + DBeaver
PostgreSQL + DBeaver
Antes de empezar con SQL, necesitamos preparar nuestro entorno de trabajo. Vamos a instalar:
- Docker Desktop (si no lo tienes ya)
- PostgreSQL (mediante Docker)
- DBeaver (cliente gráfico para trabajar con bases de datos)
No te preocupes si no tienes experiencia con Docker. Simplemente sigue los pasos y todo funcionará.
1. Instalar Docker Desktop
Docker nos permite ejecutar PostgreSQL sin ensuciar nuestro sistema operativo. Es una herramienta muy útil que también te servirá para otros proyectos.
Windows
- Ve a https://www.docker.com/products/docker-desktop
- Descarga Docker Desktop para Windows
- Ejecuta el instalador (.exe)
- Sigue las instrucciones (siguiente, siguiente, finalizar)
- Reinicia el ordenador cuando te lo pida
- Abre Docker Desktop y acepta los términos
Nota: Docker Desktop se iniciará automáticamente con Windows. Si no quieres que consuma recursos, puedes pararlo desde la barra de tareas.
Mac
- Ve a https://www.docker.com/products/docker-desktop
- Descarga Docker Desktop para Mac (según tu chip: Intel o Apple Silicon)
- Arrastra Docker.app a la carpeta Aplicaciones
- Abre Docker desde Aplicaciones
- Acepta los permisos y términos
Linux
En Linux puedes instalar Docker Engine directamente sin Docker Desktop. Abre una terminal y ejecuta:
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
Verificar que Docker funciona
Abre una terminal (PowerShell en Windows, Terminal en Mac/Linux) y ejecuta:
docker –version
Deberías ver algo como: Docker version 24.0.6
2. Levantar PostgreSQL con Docker
Ahora vamos a crear un contenedor de PostgreSQL. Es muy sencillo, solo necesitas ejecutar un comando.
Comando para levantar PostgreSQL
Copia y pega este comando en tu terminal:
docker run –name postgres-sql-tutorial \
-e POSTGRES_PASSWORD=tutorial123 \
-e POSTGRES_DB=aprendiendo_sql \
-p 5432:5432 \
-d postgres:16
Nota para Windows: Si estás en PowerShell, usa el carácter ` (acento grave) en lugar de \ para continuar líneas, o simplemente pon todo en una sola línea sin saltos.
docker run --name postgres-sql-tutorial -e POSTGRES_PASSWORD=tutorial123 -e POSTGRES_DB=aprendiendo_sql -p 5432:5432 -d postgres:16
¿Qué hace este comando?
- –name postgres-sql-tutorial → Nombre del contenedor
- -e POSTGRES_PASSWORD=tutorial123 → Contraseña del usuario postgres
- -e POSTGRES_DB=aprendiendo_sql → Nombre de la base de datos que se creará
- -p 5432:5432 → Mapea el puerto 5432 de tu máquina al contenedor
- -d postgres:16 → Ejecuta en segundo plano la versión 16 de PostgreSQL
Apunta estos datos, los necesitarás luego:
- Host: localhost
- Puerto: 5432
- Base de datos: aprendiendo_sql
- Usuario: postgres
- Contraseña: tutorial123
Verificar que PostgreSQL está corriendo:
docker ps
Deberías ver tu contenedor postgres-sql-tutorial en la lista con estado Up.
3. Instalar DBeaver
DBeaver es un cliente gráfico que nos permitirá escribir y ejecutar consultas SQL de forma visual. Es gratuito, multiplataforma y muy potente.
Descargar e instalar
- Ve a https://dbeaver.io/download/
- Descarga la versión Community Edition (es gratis)
- Instala según tu sistema operativo:
Windows: Ejecuta el .exe y sigue el asistente
Mac: Arrastra DBeaver.app a Aplicaciones
Linux: Usa el .deb o .rpm según tu distribución
- Abre DBeaver
La primera vez que abras DBeaver, puede que te pida instalar drivers. Acepta y deja que se descarguen automáticamente.
4. Conectar DBeaver a PostgreSQL
Ahora vamos a configurar la conexión entre DBeaver y nuestra base de datos PostgreSQL.
Paso a paso
- En DBeaver, haz clic en el icono de enchufe (Nueva conexión) o ve a Base de datos > Nueva conexión
- Selecciona PostgreSQL y haz clic en Siguiente
- Rellena los datos de conexión:

Host: localhost
Puerto: 5432
Base de datos: aprendiendo_sql
Usuario: postgres
Contraseña: tutorial123
- Haz clic en Test Connection para verificar que todo funciona
- Si aparece «Connected», ¡perfecto! Haz clic en Finalizar
Nota: Si te pide descargar drivers, acepta y espera a que se descarguen. Es normal la primera vez.
5. Cargar Datos de Ejemplo
Para poder practicar SQL, necesitamos algunas tablas con datos. Vamos a crear un pequeño sistema de ejemplo con usuarios, productos y pedidos.
Script de inicialización
En DBeaver:
- Haz clic derecho sobre tu conexión aprendiendo_sql y selecciona Editor SQL > Nuevo Script SQL
- Copia y pega el siguiente script completo:
Nota:
Usar «Nuevo Script SQL» (no Console) - Seleccionar todo el código (Ctrl+A o Cmd+A)
- Ejecutar el script completo con:
- Ctrl+Alt+X (Windows/Linux)
- Cmd+Option+X (Mac)
- O el botón con el icono de ejecutar script (▶️ con documento)
- Esto es muy importante porque si solo presionas Ctrl+Enter ejecuta línea por línea y puede fallar.
-- ============================================
-- SCRIPT DE INICIALIZACIÓN - MINI TUTORIAL SQL
-- ============================================
-- Este script crea las tablas y datos de ejemplo
-- para el Mini Tutorial de SQL en 7 Días
-- ============================================
-- Tabla de usuarios
CREATE TABLE usuarios (
id SERIAL PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
fecha_registro DATE DEFAULT CURRENT_DATE,
pais VARCHAR(50)
);
-- Insertar usuarios de ejemplo
INSERT INTO usuarios (nombre, email, fecha_registro, pais) VALUES
('Ana Garcia', 'ana.garcia@email.com', '2024-01-15', 'España'),
('Carlos Lopez', 'carlos.lopez@email.com', '2024-02-20', 'Mexico'),
('Maria Rodriguez', 'maria.rodriguez@email.com', '2024-03-10', 'Argentina'),
('Juan Martinez', 'juan.martinez@email.com', '2024-01-05', 'España'),
('Laura Fernandez', 'laura.fernandez@email.com', '2024-04-12', 'Colombia'),
('Pedro Sanchez', 'pedro.sanchez@email.com', '2024-02-25', 'España'),
('Sofia Torres', 'sofia.torres@email.com', '2024-03-30', 'Chile'),
('Diego Ramirez', 'diego.ramirez@email.com', '2024-01-20', 'Peru'),
('Carmen Ruiz', 'carmen.ruiz@email.com', '2024-04-05', 'España'),
('Miguel Angel', 'miguel.angel@email.com', '2024-02-15', 'Mexico');
-- Tabla de productos
CREATE TABLE productos (
id SERIAL PRIMARY KEY,
nombre VARCHAR(200) NOT NULL,
precio DECIMAL(10,2) NOT NULL,
categoria VARCHAR(50),
stock INTEGER DEFAULT 0
);
-- Insertar productos de ejemplo
INSERT INTO productos (nombre, precio, categoria, stock) VALUES
('Laptop Dell XPS 13', 1299.99, 'Electronica', 15),
('iPhone 15 Pro', 1199.00, 'Electronica', 8),
('Auriculares Sony WH-1000XM5', 349.99, 'Electronica', 25),
('Teclado Mecanico Logitech', 129.99, 'Accesorios', 40),
('Raton Gaming Razer', 79.99, 'Accesorios', 50),
('Monitor LG 27 pulgadas', 299.00, 'Electronica', 20),
('Silla Gaming', 249.99, 'Muebles', 12),
('Webcam Logitech C920', 89.99, 'Accesorios', 30),
('Microfono Blue Yeti', 129.00, 'Accesorios', 18),
('Disco SSD 1TB Samsung', 119.99, 'Almacenamiento', 35);
-- Tabla de pedidos
CREATE TABLE pedidos (
id SERIAL PRIMARY KEY,
usuario_id INTEGER REFERENCES usuarios(id),
fecha DATE DEFAULT CURRENT_DATE,
total DECIMAL(10,2)
);
-- Tabla de detalle de pedidos
CREATE TABLE detalle_pedidos (
id SERIAL PRIMARY KEY,
pedido_id INTEGER REFERENCES pedidos(id),
producto_id INTEGER REFERENCES productos(id),
cantidad INTEGER NOT NULL,
precio_unitario DECIMAL(10,2) NOT NULL
);
-- Insertar algunos pedidos de ejemplo
INSERT INTO pedidos (usuario_id, fecha, total) VALUES
(1, '2024-04-10', 1429.98),
(2, '2024-04-11', 1199.00),
(3, '2024-04-12', 479.98),
(1, '2024-04-15', 299.00),
(4, '2024-04-16', 209.98);
-- Insertar detalles de pedidos
INSERT INTO detalle_pedidos (pedido_id, producto_id, cantidad, precio_unitario) VALUES
(1, 1, 1, 1299.99),
(1, 4, 1, 129.99),
(2, 2, 1, 1199.00),
(3, 3, 1, 349.99),
(3, 4, 1, 129.99),
(4, 6, 1, 299.00),
(5, 5, 1, 79.99),
(5, 4, 1, 129.99);
-- ============================================
-- FIN DEL SCRIPT
-- ============================================
-- Para verificar que todo funciona, ejecuta:
-- SELECT * FROM usuarios;
-- ============================================
- Selecciona todo el script (Ctrl+A o Cmd+A)
- Haz clic en el botón Ejecutar Script SQL (o presiona Ctrl+Alt+Shift+X)

¡Listo! Ahora tienes 4 tablas con datos de ejemplo:
- usuarios → 10 usuarios de diferentes países
- productos → 10 productos de tecnología
- pedidos → 5 pedidos de ejemplo
- detalle_pedidos → Detalles de cada pedido
Verificar que todo funciona
Para comprobar que las tablas se crearon correctamente, ejecuta esta consulta simple:
SELECT * FROM usuarios;
Deberías ver los 10 usuarios que insertamos. Si los ves, ¡todo está listo para empezar el Día 1!
Verificación final:
Para asegurarnos de que todo tiene datos, ejecuta:
sql
SELECT COUNT(*) as total_usuarios FROM usuarios;
SELECT COUNT(*) as total_productos FROM productos;
SELECT COUNT(*) as total_pedidos FROM pedidos;
SELECT COUNT(*) as total_detalle FROM detalle_pedidos;
Deberías ver:
- usuarios: 10
- productos: 10
- pedidos: 5
- detalle_pedidos: 8
Comandos Útiles para Docker
Aquí tienes algunos comandos que te serán útiles para gestionar tu contenedor de PostgreSQL:
Parar PostgreSQL
docker stop postgres-sql-tutorial
Iniciar PostgreSQL de nuevo
docker start postgres-sql-tutorial
Ver contenedores activos
docker ps
Ver todos los contenedores (activos e inactivos)
docker ps -a
Eliminar el contenedor (¡cuidado, borrarás los datos!)
docker rm -f postgres-sql-tutorial
¡Siguiente Paso!
Perfecto, ya tienes todo listo. Ahora puedes continuar con el Día 1 – Fundamentos y SELECT básico donde empezaremos a escribir nuestras primeras consultas SQL.
Recuerda:
- Tu PostgreSQL debe estar corriendo (docker ps para verificar)
- DBeaver debe estar conectado a la base de datos
- Las tablas de ejemplo ya están cargadas
¡Nos vemos en el Día 1!
