Teoría: SQL Práctico

📌 Contexto: Usaremos una base de datos escolar con las tablas estudiantes, cursos y matriculas para todos los ejemplos.

1. SELECT básico

Consulta datos de una tabla. Es la instrucción más usada en SQL.

-- Todos los campos
SELECT * FROM estudiantes;

-- Campos específicos
SELECT nombre, edad
FROM estudiantes;

-- Con alias
SELECT nombre AS Estudiante,
       edad   AS Años
FROM estudiantes;

-- Eliminar duplicados
SELECT DISTINCT ciudad
FROM estudiantes;

2. WHERE — Filtrar filas

Filtra las filas según una o varias condiciones.

-- Condición simple
SELECT * FROM estudiantes
WHERE edad > 15;

-- Múltiples condiciones
SELECT * FROM estudiantes
WHERE edad >= 15 AND ciudad = 'Medellín';

-- Rango de valores
SELECT * FROM estudiantes
WHERE edad BETWEEN 14 AND 17;

-- Búsqueda por patrón
SELECT * FROM estudiantes
WHERE nombre LIKE 'An%';  -- empieza con An

-- Lista de valores
SELECT * FROM estudiantes
WHERE ciudad IN ('Bogotá', 'Medellín');

3. ORDER BY y LIMIT

Ordena resultados y limita la cantidad de filas devueltas.

-- Orden ascendente (default)
SELECT nombre, nota
FROM estudiantes
ORDER BY nota ASC;

-- Orden descendente
SELECT nombre, nota
FROM estudiantes
ORDER BY nota DESC;

-- Top 5 mejores notas
SELECT nombre, nota
FROM estudiantes
ORDER BY nota DESC
LIMIT 5;

4. GROUP BY y Agregaciones

Agrupa filas y calcula resúmenes por grupo.

-- Contar estudiantes por ciudad
SELECT ciudad, COUNT(*) AS total
FROM estudiantes
GROUP BY ciudad;

-- Promedio de nota por curso
SELECT id_curso,
       AVG(nota)  AS promedio,
       MAX(nota)  AS mayor,
       MIN(nota)  AS menor
FROM matriculas
GROUP BY id_curso;

-- Filtrar grupos con HAVING
SELECT ciudad, COUNT(*) AS total
FROM estudiantes
GROUP BY ciudad
HAVING COUNT(*) > 5;

5. JOIN — Unir Tablas

Combina datos de dos o más tablas relacionadas.

-- INNER JOIN: solo coincidencias
SELECT e.nombre, c.nombre_curso, m.nota
FROM matriculas m
INNER JOIN estudiantes e ON m.id_est  = e.id
INNER JOIN cursos      c ON m.id_curso = c.id;

-- LEFT JOIN: todos los estudiantes
-- aunque no tengan matrícula
SELECT e.nombre, m.nota
FROM estudiantes e
LEFT JOIN matriculas m ON e.id = m.id_est;

-- RIGHT JOIN: todos los cursos
SELECT e.nombre, c.nombre_curso
FROM matriculas m
RIGHT JOIN cursos c ON m.id_curso = c.id;

6. INSERT, UPDATE y DELETE

Manipulación de datos: insertar, modificar y eliminar registros.

-- INSERT: agregar un registro
INSERT INTO estudiantes
    (nombre, edad, ciudad)
VALUES
    ('Valentina', 16, 'Bogotá');

-- UPDATE: modificar registros
UPDATE estudiantes
SET ciudad = 'Medellín',
    edad   = 17
WHERE id = 3;

-- DELETE: eliminar registros
DELETE FROM estudiantes
WHERE id = 3;

-- ⚠️ Sin WHERE elimina TODO
-- DELETE FROM estudiantes; ← peligroso

⚠️ Siempre usa WHERE con UPDATE y DELETE para no afectar toda la tabla.

Simulador SQL

Selecciona una consulta y observa el resultado en la tabla virtual.


                
                

Diccionario SQL

SQL
Structured Query Language — lenguaje estándar para gestionar bases de datos relacionales.
SELECT
Comando para consultar/leer datos de una tabla.
FROM
Indica la tabla de donde se obtienen los datos.
WHERE
Filtra filas que cumplen una condición específica.
ORDER BY
Ordena los resultados ASC (ascendente) o DESC (descendente).
LIMIT
Restringe el número de filas devueltas.
GROUP BY
Agrupa filas con el mismo valor en una columna.
HAVING
Filtra grupos (equivalente a WHERE pero para GROUP BY).
JOIN
Combina filas de dos o más tablas relacionadas.
INNER JOIN
Solo devuelve filas con coincidencia en ambas tablas.
LEFT JOIN
Devuelve todas las filas de la tabla izquierda, con o sin coincidencia.
INSERT INTO
Agrega un nuevo registro a una tabla.
UPDATE
Modifica valores en uno o varios registros existentes.
DELETE
Elimina filas de una tabla. Siempre usar con WHERE.
PRIMARY KEY
Campo único que identifica cada fila de la tabla.
FOREIGN KEY
Campo que referencia la clave primaria de otra tabla.
COUNT()
Cuenta el número de filas o valores no nulos.
SUM()
Suma los valores de una columna numérica.
AVG()
Calcula el promedio de una columna numérica.
LIKE
Filtra cadenas con patrones: % (varios chars) y _ (un char).
IN
Filtra filas cuyo valor esté en una lista dada.
BETWEEN
Filtra valores dentro de un rango inclusivo.
DISTINCT
Elimina filas duplicadas en el resultado.
AS (alias)
Asigna un nombre temporal a una columna o tabla.

Videos en Español

Introducción a SQL — SELECT y WHERE

JOINs en SQL explicados paso a paso

INSERT, UPDATE y DELETE en MySQL

Curso completo de SQL

Cuestionario

10 preguntas aleatorias del banco de 50. Calificación de 0 a 100.