Lecciones de SQL: un curso gratuito desde lo básico hasta el análisis de datos
12 capítulos y 74 lecciones te llevan desde el primer SELECT hasta las uniones, las funciones de ventana, la modificación de datos y el rendimiento de las consultas. Cada lección explica un tema con ejemplos de SQL y enlaza con ejercicios prácticos en bases de datos reales.
Busca una lección por tema o palabra clave, o empieza por el capítulo 1.
No se encontraron lecciones. Prueba con otra palabra.
1 Introducción a SQL
-
1.1
Introducción a las Bases de Datos
8 min
Una base de datos es una colección organizada de datos gestionada por un SGBD. Aprende los tipos de bases de datos, las funciones de un SGBD y el papel de SQL.
-
1.2
Tipos de Bases de Datos
15 min
Los principales tipos de bases de datos: relacionales, clave-valor, documentales, de columnas anchas, de grafos, de series temporales y columnares.
-
1.3
Conceptos de Bases de Datos Relacionales
10 min
Los elementos básicos de las bases de datos relacionales: tablas, columnas, filas, claves primarias y foráneas, y las propiedades ACID, con ejemplos.
-
1.4
Tipos de Datos Básicos
8 min
Los tipos de datos SQL definen qué valores admite una columna. Aprende los tipos numéricos, de texto, de fecha y hora, booleanos y otros, y cómo elegirlos.
-
1.5
Tipos de datos complejos
7 min
Un recorrido breve por los tipos SQL que guardan estructura: JSON, XML, arrays, ENUM y SET, BLOB, UUID, tipos espaciales y VECTOR para embeddings de IA.
-
1.6
Entendiendo los Valores NULL en SQL
6 min
Qué significa NULL en una base de datos relacional, en qué se diferencia de 0, de una cadena vacía y de false, y por qué la lógica tiene tres valores.
-
1.7
Descripción general de SQL
8 min
SQL es el lenguaje estándar de las bases de datos relacionales. Aprende cómo se organiza SQL, sus sublenguajes y cómo se construye una consulta básica.
2 Recuperación de Datos Básica - La Sentencia SELECT
-
2.1
Seleccionar Datos de una Tabla
6 min
Aprende lo básico de SELECT en SQL: elegir todas las columnas o solo algunas, controlar su orden en el resultado y usar DISTINCT para quitar duplicados.
-
2.2
Filtrando Datos
6 min
La cláusula WHERE de SQL filtra filas según una condición. Aprende los operadores de comparación, BETWEEN, IN, los patrones LIKE y cómo tratar NULL.
-
2.3
Combinar Múltiples Condiciones
7 min
Aprende los operadores lógicos AND, OR y NOT en WHERE de SQL, la precedencia de operadores, los paréntesis y ejemplos prácticos de NOT IN y NOT LIKE.
-
2.4
IS NULL e IS NOT NULL
6 min
Por qué WHERE column = NULL no encuentra nada, cómo funcionan IS NULL e IS NOT NULL y cómo NULL oculta filas en condiciones con NOT, <> y NOT IN.
-
2.5
Alias de Columnas
5 min
Un alias de columna en SQL da un nombre temporal a una columna del resultado. La palabra clave AS, alias con espacios, alias de cálculos y dónde usarlos.
-
2.6
Ordenando Resultados
6 min
SQL ORDER BY ordena el resultado de una consulta. Orden ascendente y descendente, por varias columnas, por expresiones y alias, y dónde quedan los NULL.
-
2.7
Limitando Resultados con LIMIT y OFFSET
5 min
SQL LIMIT restringe cuántas filas devuelve una consulta y OFFSET omite filas. Consultas top-N, paginación, por qué hace falta ORDER BY, y TOP / FETCH FIRST.
-
2.8
Integrándolo Todo: WHERE, ORDER BY y LIMIT
6 min
Combina WHERE, ORDER BY y LIMIT en una consulta SQL. El orden obligatorio de las cláusulas, el orden lógico de procesamiento, top-N filtrado y paginación.
3 Trabajando con Funciones
-
3.1
Funciones SQL integradas
8 min
Aprende cómo funcionan las funciones SQL integradas en SELECT y WHERE, y aplícalas a casos reales de análisis de datos con la base Sakila.
-
3.2
Funciones Comunes de Cadenas
8 min
Aprende las funciones de cadena básicas de SQL con ejemplos de Sakila: limpiar, combinar y extraer datos de texto en consultas prácticas.
-
3.3
Funciones Matemáticas Básicas
8 min
Aprende las funciones matemáticas básicas de SQL con ejemplos de Sakila: redondeo, módulo, potencias, raíces y casos prácticos de cálculo.
-
3.4
Funciones de Fecha y Hora
8 min
Las funciones de fecha en SQL obtienen la fecha actual, extraen partes, suman intervalos, calculan diferencias y dan formato. Ejemplos con NOW y DATEDIFF.
-
3.5
Operador Condicional
7 min
SQL CASE WHEN agrega lógica si-entonces-si no a una consulta. CASE simple y de búsqueda, categorías en SELECT, orden personalizado y condiciones en WHERE.
-
3.6
Funciones JSON
8 min
Lee valores de columnas JSON por ruta, filtra filas por ellos, cuenta elementos de arrays y construye JSON con JSON_VALUE, ->>, JSON_OBJECT y JSON_ARRAYAGG.
4 Funciones de agregación y agrupamiento
-
4.1
Funciones de Agregación Básicas
8 min
Aprende las funciones de agregación de SQL con ejemplos de Sakila: COUNT, SUM, AVG, MIN, MAX y la diferencia entre COUNT(*), COUNT(column) y COUNT(DISTINCT).
-
4.2
Agrupación de Datos
7 min
Aprende GROUP BY: sintaxis, reglas, agrupación por una o varias columnas y ejemplos prácticos con Sakila.
-
4.3
Filtrado de Datos Agrupados
7 min
Aprende la cláusula HAVING: sintaxis, diferencias entre WHERE y HAVING, filtrado de grupos después de agregar y ejemplos con Sakila.
-
4.4
Agregación Condicional
8 min
La agregación condicional calcula varias métricas en una consulta SQL con SUM, COUNT y AVG sobre CASE WHEN. Patrones, errores comunes y filas a columnas.
-
4.5
Agregación Avanzada
9 min
ROLLUP, CUBE y GROUPING SETS agregan subtotales y un total general a los resultados de GROUP BY. Sus diferencias, WITH ROLLUP en MySQL y la función GROUPING().
5 Trabajando con Múltiples Tablas
-
5.1
Fundamentos de los JOINs en SQL
8 min
Un JOIN en SQL combina filas de dos o más tablas mediante una columna relacionada. Aprende cómo funciona JOIN, la condición ON y los alias, con datos de Sakila.
-
5.2
INNER JOIN - Combinando Filas Coincidentes
6 min
SQL INNER JOIN devuelve solo las filas que tienen coincidencia en ambas tablas. Sintaxis, alias de tablas, unir tres tablas y qué pasa con las filas sin pareja.
-
5.3
LEFT JOIN - Incluyendo Todos los Registros de la Tabla Izquierda
7 min
SQL LEFT JOIN devuelve todas las filas de la tabla izquierda y las coincidentes de la derecha, con NULL donde no hay pareja. Sintaxis, anti-joins y trampas.
-
5.4
RIGHT JOIN - Incluyendo Todos los Registros de la Tabla Derecha
4 min
SQL RIGHT JOIN devuelve todas las filas de la tabla derecha y las coincidentes de la izquierda. La sintaxis, su relación con LEFT JOIN y cuándo usarlo.
-
5.5
FULL OUTER JOIN - Combinando Todo de Ambas Tablas
6 min
SQL FULL OUTER JOIN devuelve todas las filas de ambas tablas, con NULL donde no hay coincidencia. La sintaxis y cómo emularlo en MySQL y MariaDB.
-
5.6
CROSS JOIN - El Producto Cartesiano
5 min
SQL CROSS JOIN devuelve todas las combinaciones de filas de dos tablas. La sintaxis, el tamaño del resultado y cómo armar grillas de informes.
-
5.7
AUTO JOIN - Uniendo una Tabla Consigo Misma
5 min
Un self join en SQL une una tabla consigo misma para comparar filas o recorrer una jerarquía. Por qué los alias son obligatorios y cómo evitar pares repetidos.
-
5.8
Escenarios y Técnicas de JOIN Prácticos
8 min
Ejemplos prácticos de SQL JOIN: unir varias tablas, agregar datos con GROUP BY, encontrar filas faltantes y evitar totales inflados y filas externas perdidas.
-
5.9
Algoritmos de Join
9 min
Cómo ejecutan los joins las bases de datos: nested loop, hash join y merge join. Cómo funciona cada uno, cuándo se elige y cómo verlo en EXPLAIN.
-
5.10
Operaciones con Conjuntos de Datos
8 min
Las operaciones de conjuntos combinan, intersecan y restan resultados de consultas. Aprende UNION, INTERSECT y EXCEPT con ejemplos de Sakila.
6 Subconsultas y Expresiones de Tabla Comunes (CTEs)
-
6.1
Introducción a las Subconsultas
7 min
Una subconsulta es un SELECT dentro de otra consulta. Aprende los tipos de subconsultas, su orden de ejecución y las Inline View con ejemplos de Sakila.
-
6.2
Subconsultas en la cláusula WHERE
8 min
Las subconsultas en WHERE permiten filtrar datos de forma dinámica. Aprende IN, NOT IN, EXISTS, NOT EXISTS, ANY y ALL con ejemplos prácticos de Sakila.
-
6.3
Subconsultas Correlacionadas
6 min
Una subconsulta correlacionada en SQL usa valores de la consulta externa en cada fila. Cómo funciona, comparar con su grupo, EXISTS y rendimiento.
-
6.4
Expresiones de tabla comunes (CTE)
8 min
Un CTE en SQL es un resultado temporal con nombre, definido con WITH. Sintaxis del CTE, CTE vs subconsulta, encadenar varios CTE y ejemplos prácticos.
-
6.5
CTEs Recursivas
9 min
Una CTE recursiva en SQL recorre jerarquías con WITH RECURSIVE. Miembro ancla y recursivo, rutas en un organigrama, límite de profundidad y ciclos.
-
6.6
Aplicando CTEs Recursivas
9 min
Ejemplos prácticos de CTE recursiva en SQL: generar una serie de fechas, totalizar un subárbol, explotar una lista de materiales y hallar rutas en un grafo.
7 Funciones de Ventana
-
7.1
Funciones de Ventana
8 min
Las funciones de ventana en SQL calculan sobre filas relacionadas sin agruparlas: OVER, PARTITION BY, ORDER BY, diferencia con GROUP BY y porcentaje del total.
-
7.2
Uso de ROW_NUMBER, RANK, DENSE_RANK y NTILE
8 min
La diferencia entre ROW_NUMBER, RANK, DENSE_RANK y NTILE en SQL: cómo trata cada una los empates, cuándo usar cada una, más PERCENT_RANK y CUME_DIST.
-
7.3
Marcos de Ventana - Controlando los Límites de la Ventana
8 min
El marco de ventana define qué filas usa una función de ventana: ROWS vs RANGE, BETWEEN, UNBOUNDED, el marco predeterminado, medias móviles y WINDOW.
-
7.4
LAG, LEAD, FIRST_VALUE y LAST_VALUE
9 min
LAG, LEAD, FIRST_VALUE y LAST_VALUE: sintaxis, usos habituales, comparar filas sin self join y el matiz del marco en LAST_VALUE.
8 Lenguaje de Manipulación de Datos (DML)
-
8.1
La sentencia INSERT INTO
7 min
SQL INSERT INTO agrega filas nuevas a una tabla. Sintaxis con lista de columnas, varias filas a la vez, INSERT INTO ... SELECT, NULL, DEFAULT y errores comunes.
-
8.2
La sentencia UPDATE
7 min
SQL UPDATE modifica filas existentes: SET y WHERE, varias columnas, cálculo desde el valor actual, actualización según otra tabla y seguridad.
-
8.3
La sentencia DELETE
6 min
SQL DELETE elimina filas de una tabla. DELETE ... WHERE, eliminar según otra tabla, errores de claves foráneas, revisar antes de borrar y DELETE vs TRUNCATE.
-
8.4
Transacciones SQL
10 min
Una transacción SQL agrupa sentencias en una unidad: se aplican todas o ninguna. Aprende COMMIT, ROLLBACK, SAVEPOINT, autocommit y niveles de aislamiento.
9 Lenguaje de Definición de Datos (DDL)
-
9.1
La sentencia CREATE TABLE
9 min
SQL CREATE TABLE crea una tabla. Tipos de datos, PRIMARY KEY, AUTO_INCREMENT y las restricciones NOT NULL, UNIQUE, DEFAULT, CHECK y FOREIGN KEY.
-
9.2
La sentencia ALTER TABLE
9 min
ALTER TABLE modifica una tabla existente. Aprende a añadir, modificar, renombrar y eliminar columnas y a añadir o eliminar restricciones en MySQL y PostgreSQL.
-
9.3
Las sentencias TRUNCATE y DROP TABLE
6 min
SQL TRUNCATE vacía una tabla y DROP TABLE la elimina. Aprende en qué se diferencian de DELETE: velocidad, rollback, autoincremento y claves foráneas.
-
9.4
Tablas Temporales
7 min
Las tablas temporales en SQL guardan resultados intermedios durante una sesión. CREATE TEMPORARY TABLE, AS SELECT, comparación con CTE y trampas de MySQL.
-
9.5
Vistas
8 min
Aprende las vistas SQL: sintaxis de CREATE VIEW, diferencias con las tablas normales y temporales, vistas actualizables y ejemplos prácticos con Sakila.
-
9.6
Vistas materializadas
9 min
Una vista materializada guarda el resultado de una consulta en disco y se actualiza bajo demanda. CREATE y REFRESH MATERIALIZED VIEW y la alternativa en MySQL.
-
9.7
Normalización de bases de datos
10 min
La normalización reparte los datos en tablas relacionadas para guardar cada hecho una sola vez. Aprende 1FN, 2FN, 3FN, FNBC, anomalías y desnormalización.
10 Rendimiento y Calidad de Consultas
-
10.1
Mejores Prácticas para un Código SQL Legible y Mantenible
8 min
Buenas prácticas de SQL legible: mayúsculas en palabras clave, saltos de línea, nombres en snake_case, alias claros, comentarios y limpieza de consultas.
-
10.2
Escribiendo Consultas SQL Eficientes
10 min
Las consultas SQL eficientes reducen la carga del servidor y aceleran los informes. Aprende técnicas prácticas de filtrado, JOIN, SARGable y LIMIT.
-
10.3
Introducción a los Índices SQL
10 min
Aprende qué son los índices SQL, cómo influyen en el rendimiento de SELECT y qué reglas básicas ayudan a evitar los errores de velocidad más comunes.
-
10.4
Cómo leer EXPLAIN
12 min
Lee EXPLAIN y EXPLAIN ANALYZE paso a paso: tipos de acceso, orden de los joins, cost y rows, estimación frente a realidad y señales de una consulta SQL lenta.
-
10.5
Cómo Funcionan los Índices B-tree
11 min
Entiende cómo se estructuran los índices B-tree en SQL, por qué reducen la búsqueda a una complejidad logarítmica y cómo usarlos en consultas prácticas.
-
10.6
Índices de texto completo
10 min
Un índice full-text encuentra filas por palabras; LIKE '%palabra%' lee toda la tabla. MATCH AGAINST en MySQL y búsqueda full-text en PostgreSQL.
11 Transformación y manipulación de datos para análisis
-
11.1
Procesamiento Práctico de Cadenas en SQL
10 min
Aprende a procesar cadenas en SQL en la práctica: limpiar valores de texto, extraer dominios de email, construir etiquetas y validar la calidad de los datos.
-
11.2
Uso Práctico de Funciones de Fecha y Hora
11 min
Aprende a usar las funciones de fecha y hora de SQL: métricas diarias y mensuales, cálculo de intervalos, estacionalidad e informes analíticos.
12 Análisis de tareas
-
12.1
La opción de vuelo más rápida
6 min
Solución de un ejercicio SQL: encontrar el vuelo más rápido con una escala mediante un self-join de la tabla flights y aritmética de intervalos en PostgreSQL.
-
12.2
Calcular la tasa de ocupación promedio de vuelos
7 min
Solución de un ejercicio SQL: ocupación media de asientos por aeropuerto y clase con LEFT JOIN, COUNT FILTER y dos niveles de agregación en PostgreSQL.
-
12.3
Mapa de Asientos de Aeronaves
5 min
Solución de un ejercicio SQL: mapa de asientos de un avión, separando los números con rtrim y right y juntando las letras en un array JSON con json_agg.
-
12.4
N-ésimo salario más alto
7 min
Encuentra el segundo o el N-ésimo salario más alto en SQL: MAX con subconsulta, LIMIT OFFSET, DENSE_RANK, subconsulta correlacionada, empates, NULL y grupos.
-
12.5
Encontrar y eliminar duplicados
7 min
Cómo encontrar duplicados en SQL con GROUP BY y HAVING, ver cada copia con una función de ventana, eliminar duplicados conservando una fila y evitarlos.
-
12.6
Top N filas por grupo
7 min
Obtén las N primeras filas de cada grupo en SQL: ROW_NUMBER con PARTITION BY, empates con RANK y DENSE_RANK, subconsulta correlacionada y LATERAL en Sakila.
-
12.7
Total acumulado
6 min
Total acumulado en SQL con SUM() OVER (ORDER BY): ingresos acumulados por día, totales que se reinician cada año, la trampa ROWS vs RANGE y otra solución.
-
12.8
Huecos e islas
7 min
Gaps and islands en SQL: agrupa fechas consecutivas con el truco de ROW_NUMBER, encuentra rangos faltantes con LEAD y la racha más larga de cada cliente.
-
12.9
Pivot: filas a columnas
7 min
Pivot en SQL, de filas a columnas: agregación condicional con SUM(CASE ...), pivot por mes, pivot dinámico en MySQL, el operador PIVOT y unpivot.