🎯 Quedan pocos días este mes Apoya SQLTest.online y ayúdanos a mantener la práctica de SQL gratuita para todos. Dona hoy →
Código SQL copiado al portapapeles

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.

1 Introducción a SQL

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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

  1. 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.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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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

  1. 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.

  2. 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.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.

  4. 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.

  5. 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.

  6. 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

  1. 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).

  2. 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.

  3. 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.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.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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)

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.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

  1. 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.

  2. 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.

  3. 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.

  4. 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)

  1. 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.

  2. 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.

  3. 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.

  4. 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)

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

  1. 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.

  2. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.