Glosario de SQL

122 términos de SQL explicados en español, con ejemplos. Referencia rápida del curso Aprende SQL.

ACID — Transacciones
Las cuatro garantías de una transacción: Atomicidad (todo o nada), Consistencia (nunca deja datos en estado inválido), Aislamiento (una transacción no ve los cambios a medias de otra) y Durabilidad (confirmado, sobrevive a un apagón).

Ver en la lección: Transacciones: BEGIN, COMMIT, ROLLBACK y SAVEPOINT →

Alias (AS) — Consultas
Un nombre temporal para una columna o tabla dentro de una consulta, con la palabra AS — útil para renombrar el resultado de un cálculo o acortar nombres largos en un JOIN.
SELECT precio * 1.18 AS precio_con_igv FROM productos;

Ver en la lección: Columnas calculadas, alias y DISTINCT →

ALTER TABLE — Estructura
Modifica la estructura de una tabla que ya existe: agrega, quita o cambia columnas y restricciones.
ALTER TABLE clientes ADD COLUMN telefono VARCHAR(20);

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

AND — Filtrado
Operador lógico: exige que TODAS las condiciones se cumplan para que la fila pase el filtro.

Ver en la lección: Operadores lógicos: AND, OR, NOT →

ASC — Consultas
Modificador de ORDER BY para orden ascendente (menor a mayor, A a la Z). Es el orden por defecto si no se indica nada.

Ver en la lección: Ordenar y limitar: ORDER BY y LIMIT →

AUTOINCREMENT / AUTO_INCREMENT — Estructura
Hace que el motor asigne un número correlativo automático a una columna (típicamente la clave primaria) en cada INSERT. El nombre exacto cambia por motor.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

AVG — Agregación
Calcula el promedio de una columna numérica, ignorando los NULL.

Ver en la lección: Funciones de agregación: COUNT, SUM, AVG, MIN, MAX →

Base de datos — Concepto
Conjunto de datos organizados para poder guardarlos, consultarlos y modificarlos de forma eficiente y consistente.
Base de datos clave-valor — NoSQL
Motor NoSQL (Redis, DynamoDB) que funciona como un diccionario gigante: una clave de texto apunta a un valor. Sin columnas, sin JOINs, acceso muy rápido por clave exacta.

Ver en la lección: NoSQL: cuando el modelo relacional no es la respuesta →

Base de datos columnar — NoSQL
Motor NoSQL (Cassandra, HBase) optimizado para escribir enormes volúmenes de datos muy rápido — típico en logs, métricas y sensores IoT, donde se escribe mucho más de lo que se consulta.

Ver en la lección: NoSQL: cuando el modelo relacional no es la respuesta →

Base de datos de documentos — NoSQL
Motor NoSQL (MongoDB, CouchDB) que guarda cada registro como un documento tipo JSON, con los datos relacionados embebidos adentro en vez de repartidos en tablas separadas.

Ver en la lección: NoSQL: cuando el modelo relacional no es la respuesta →

Base de datos de grafos — NoSQL
Motor NoSQL (Neo4j, ArangoDB) donde los nodos y sus relaciones son ciudadanos de primera clase, no filas ni JOINs — ideal para recomendaciones, redes sociales y cualquier "amigos de amigos".

Ver en la lección: NoSQL: cuando el modelo relacional no es la respuesta →

Base de datos relacional — Concepto
Base de datos que organiza la información en tablas conectadas entre sí mediante claves, en vez de un solo bloque de datos suelto. Es el modelo sobre el que trabaja SQL.
BEGIN — Transacciones
Abre una transacción manual, agrupando las operaciones siguientes hasta que se confirmen (COMMIT) o se deshagan (ROLLBACK).

Ver en la lección: Transacciones: BEGIN, COMMIT, ROLLBACK y SAVEPOINT →

BETWEEN — Filtrado
Comprueba si un valor cae dentro de un rango, incluyendo ambos extremos.
edad BETWEEN 18 AND 30

Ver en la lección: Rangos y listas: BETWEEN e IN →

Cardinalidad — Concepto
Cómo se relacionan las filas de dos tablas: uno a uno, uno a muchos, o muchos a muchos. Define qué tipo de JOIN y de clave foránea tiene sentido usar.

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

CHECK — Estructura
Restricción que valida una condición sobre cada fila antes de aceptarla.
precio DECIMAL(10,2) CHECK (precio >= 0)

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

Cláusula — Concepto
Cada bloque con el que se arma una sentencia SQL — SELECT, FROM, WHERE, GROUP BY, ORDER BY — cada uno con su propia función.

Ver en la lección: Agrupación múltiple y orden de ejecución →

COALESCE — Valores NULL
Devuelve el primer valor no NULL de una lista de argumentos. Sirve para reemplazar un NULL por un valor por defecto.
COALESCE(telefono, 'sin teléfono')

Ver en la lección: Conversión de tipos: CAST, COALESCE y NULLIF →

Columna (campo) — Concepto
Cada atributo vertical de una tabla, con un nombre y un tipo de dato fijo — por ejemplo, la columna "email" es siempre texto.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

COMMIT — Transacciones
Confirma una transacción: guarda de forma permanente todos los cambios hechos desde el BEGIN.

Ver en la lección: Transacciones: BEGIN, COMMIT, ROLLBACK y SAVEPOINT →

Comodín (% y _) — Filtrado
Se usan junto a LIKE: % representa cero o más caracteres cualquiera, _ representa exactamente un carácter.
nombre LIKE 'Ana%'  -- empieza con 'Ana'

Ver en la lección: Búsqueda de texto: LIKE y patrones →

Consulta (query) — Concepto
Una instrucción SQL enviada a la base de datos para leer o modificar datos. La más común es SELECT.

Ver en la lección: Consultas básicas: SELECT y FROM →

COUNT — Agregación
Cuenta filas. COUNT(*) cuenta todas; COUNT(columna) solo las que no son NULL en esa columna.

Ver en la lección: Funciones de agregación: COUNT, SUM, AVG, MIN, MAX →

CREATE TABLE — Estructura
Crea una tabla nueva, definiendo sus columnas, tipos de datos y restricciones.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

CROSS JOIN — Uniones
Combina cada fila de una tabla con TODAS las filas de la otra (producto cartesiano), sin condición de unión. Crece muy rápido: 100 × 100 filas = 10.000.

Ver en la lección: FULL OUTER JOIN y CROSS JOIN →

CTE (Common Table Expression) — Subconsultas
Una subconsulta con nombre, definida con WITH, reutilizable dentro de la consulta principal. Hace legibles las consultas complejas al dividirlas en pasos con nombre.
WITH ventas_2026 AS (SELECT * FROM ventas WHERE anio = 2026)
SELECT cliente, SUM(monto) FROM ventas_2026 GROUP BY cliente;

Ver en la lección: Expresiones de tabla común: WITH →

CTE recursivo (WITH RECURSIVE) — Subconsultas
Una CTE que se referencia a sí misma, repitiéndose hasta que una condición detiene la recursión. Sirve para recorrer jerarquías (organigramas, categorías anidadas, árboles genealógicos).

Ver en la lección: CTEs recursivos →

DDL (Data Definition Language) — Concepto
El subconjunto de SQL que define o cambia la estructura de la base de datos: CREATE, ALTER, DROP. No toca los datos en sí, solo el "molde".

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

DEFAULT — Estructura
Asigna un valor automático a una columna cuando un INSERT no especifica ninguno.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

DELETE — Manipulación
Elimina filas de una tabla. Igual que UPDATE, sin WHERE borra TODA la tabla.

Ver en la lección: Eliminar datos: DELETE →

DENSE_RANK — Ventana
Como RANK, pero sin saltos tras un empate: las posiciones siguen siendo consecutivas (1, 1, 2…).

Ver en la lección: Ranking: ROW_NUMBER, RANK, DENSE_RANK →

DESC — Consultas
Modificador de ORDER BY para orden descendente (mayor a menor, Z a la A).

Ver en la lección: Ordenar y limitar: ORDER BY y LIMIT →

DISTINCT — Consultas
Elimina las filas duplicadas del resultado, dejando solo combinaciones de valores únicas.

Ver en la lección: Columnas calculadas, alias y DISTINCT →

DML (Data Manipulation Language) — Concepto
El subconjunto de SQL que lee y modifica los datos dentro de las tablas: SELECT, INSERT, UPDATE, DELETE.

Ver en la lección: Insertar datos: INSERT →

Driver (de base de datos) — Seguridad
La librería que traduce entre tu lenguaje de programación y el protocolo de red de un motor de base de datos concreto — por ejemplo, mysql2 para hablar con MySQL/MariaDB desde Node.js.

Ver en la lección: SQL en producción: conectar con Node.js →

DROP TABLE — Estructura
Elimina por completo una tabla, con su estructura y todos sus datos. Irreversible.

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

Embeber (denormalizar) — NoSQL
Guardar datos relacionados juntos, dentro del mismo registro, a propósito duplicando información — lo opuesto a normalizar. Evita JOINs a costa de poder quedar inconsistente si el dato duplicado cambia.

Ver en la lección: NoSQL: cuando el modelo relacional no es la respuesta →

Esquema (schema) — Concepto
La estructura completa de una base de datos: qué tablas hay, sus columnas, tipos y cómo se relacionan. En algunos motores además agrupa tablas bajo un espacio de nombres.
EXCEPT — Conjuntos
Devuelve las filas del primer SELECT que NO aparecen en el segundo. (En MySQL/MariaDB se simula con LEFT JOIN + IS NULL).

Ver en la lección: Operaciones de conjuntos: UNION, INTERSECT, EXCEPT →

EXISTS / NOT EXISTS — Subconsultas
Comprueba si una subconsulta devuelve alguna fila, sin importar cuáles — solo si hay o no resultado. Suele ser más eficiente que IN con subconsultas grandes.

Ver en la lección: Subconsultas correlacionadas y EXISTS →

EXPLAIN / EXPLAIN QUERY PLAN — Motores
Muestra cómo el motor PLANEA ejecutar una consulta (qué índices usa, en qué orden recorre las tablas) sin ejecutarla realmente — la herramienta base para diagnosticar consultas lentas.

Ver en la lección: Optimización (EXPLAIN QUERY PLAN) y motores de bases de datos →

Expresión — Concepto
Cualquier combinación de columnas, valores, operadores y funciones que produce un valor al evaluarse — un cálculo, una concatenación de texto, etc.

Ver en la lección: Columnas calculadas, alias y DISTINCT →

Fila (registro) — Concepto
Cada entrada horizontal de una tabla: un elemento concreto con un valor para cada columna. También se le llama registro.
FOREIGN KEY (clave foránea) — Estructura
Columna que referencia la clave primaria de otra tabla, garantizando que ese valor exista allí. Es lo que conecta tablas relacionadas.

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

FROM — Consultas
Indica de qué tabla (o tablas) vienen los datos. Aunque se escribe después de SELECT, es la primera cláusula que el motor evalúa.

Ver en la lección: Consultas básicas: SELECT y FROM →

FULL OUTER JOIN — Uniones
Conserva todas las filas de ambas tablas, con NULL donde no hay coincidencia del otro lado. (No disponible en MySQL/MariaDB; se simula con LEFT JOIN UNION RIGHT JOIN).

Ver en la lección: FULL OUTER JOIN y CROSS JOIN →

Función de agregación — Agregación
Resume varias filas en un solo valor — COUNT, SUM, AVG, MIN, MAX. Se suele combinar con GROUP BY para calcular un resultado por grupo.

Ver en la lección: Funciones de agregación: COUNT, SUM, AVG, MIN, MAX →

Función de ventana — Ventana
Calcula un valor sobre un conjunto de filas relacionadas (la "ventana") SIN colapsarlas en una sola fila, a diferencia de GROUP BY — cada fila conserva su lugar en el resultado.

Ver en la lección: Funciones de ventana: OVER y PARTITION BY →

GROUP BY — Agregación
Agrupa las filas que comparten el mismo valor en una o más columnas, para aplicarles una función de agregación por grupo en vez de a toda la tabla.
SELECT ciudad, COUNT(*) FROM clientes GROUP BY ciudad;

Ver en la lección: Agrupar datos: GROUP BY →

HAVING — Agregación
Filtra grupos DESPUÉS de agrupar — lo que WHERE es a las filas, HAVING lo es a los grupos. Se usa cuando la condición depende de una función de agregación.
SELECT cliente_id FROM pedidos GROUP BY cliente_id HAVING COUNT(*) > 10;

Ver en la lección: Filtrar grupos: HAVING →

IF EXISTS — Estructura
Cláusula opcional (ej: DROP TABLE IF EXISTS) que evita un error si el objeto sobre el que se actúa no existe.

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

IN — Filtrado
Comprueba si un valor coincide con alguno de una lista, o con el resultado de una subconsulta. Equivale a varios OR encadenados.

Ver en la lección: Rangos y listas: BETWEEN e IN →

Índice (INDEX) — Estructura
Estructura auxiliar que el motor mantiene para encontrar filas rápido sin recorrer toda la tabla — como el índice de un libro. Acelera lecturas, cuesta espacio y algo de velocidad al escribir.

Ver en la lección: Índices: CREATE INDEX →

INNER JOIN — Uniones
Devuelve solo las filas que tienen coincidencia en AMBAS tablas. Es lo que se aplica por defecto al escribir solo JOIN.

Ver en la lección: Combinar tablas: INNER JOIN →

INSERT INTO — Manipulación
Agrega una o más filas nuevas a una tabla.
INSERT INTO clientes (nombre, email) VALUES ('Ana', 'ana@x.com');

Ver en la lección: Insertar datos: INSERT →

Integridad referencial — Estructura
Garantía de que una clave foránea siempre apunta a una fila que realmente existe en la tabla referenciada — nunca a un "huérfano".

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

INTERSECT — Conjuntos
Devuelve solo las filas presentes en AMBOS resultados.

Ver en la lección: Operaciones de conjuntos: UNION, INTERSECT, EXCEPT →

Inyección SQL — Seguridad
Vulnerabilidad donde un atacante mete código SQL a través de un campo de entrada porque la app concatenó ese texto directo en la consulta en vez de usar prepared statements. Puede exponer o borrar datos ajenos.

Ver en la lección: SQL en producción: conectar con Node.js →

IS NULL / IS NOT NULL — Valores NULL
La única forma correcta de comprobar si un valor es (o no) NULL — una comparación normal con = siempre da "desconocido" frente a NULL.

Ver en la lección: Lógica condicional: CASE y manejo de NULL →

JOIN — Uniones
Combina filas de dos o más tablas relacionadas, usando una condición de unión (normalmente clave foránea = clave primaria).

Ver en la lección: Combinar tablas: INNER JOIN →

LAG — Ventana
Trae el valor de una fila ANTERIOR dentro de la partición — útil para comparar cada fila con la que la precede (ej: variación mes contra mes).

Ver en la lección: Acceso entre filas: LAG y LEAD →

LEAD — Ventana
Trae el valor de una fila POSTERIOR dentro de la partición — el espejo de LAG.

Ver en la lección: Acceso entre filas: LAG y LEAD →

LEFT JOIN — Uniones
Conserva TODAS las filas de la tabla izquierda, tengan o no coincidencia en la derecha — sin coincidencia, las columnas de la derecha llegan en NULL.

Ver en la lección: Conservar filas: LEFT y RIGHT JOIN →

LIKE — Filtrado
Busca coincidencias de texto usando comodines, en vez de una igualdad exacta.

Ver en la lección: Búsqueda de texto: LIKE y patrones →

LIMIT / OFFSET — Consultas
LIMIT recorta cuántas filas devuelve la consulta; OFFSET salta las primeras N. Juntos arman la paginación.
SELECT * FROM productos ORDER BY id LIMIT 20 OFFSET 40; -- página 3

Ver en la lección: Ordenar y limitar: ORDER BY y LIMIT →

MariaDB — Motores
Fork de MySQL creado por sus desarrolladores originales tras la compra de Oracle, con el que mantiene amplia compatibilidad. Enfoque más comunitario y abierto.

Ver en la lección: Optimización (EXPLAIN QUERY PLAN) y motores de bases de datos →

MAX — Agregación
Devuelve el valor más grande de una columna dentro del grupo.

Ver en la lección: Funciones de agregación: COUNT, SUM, AVG, MIN, MAX →

MIN — Agregación
Devuelve el valor más pequeño de una columna dentro del grupo.

Ver en la lección: Funciones de agregación: COUNT, SUM, AVG, MIN, MAX →

MongoDB — NoSQL
El motor de documentos más usado. Guarda colecciones de documentos JSON con esquema flexible — dos documentos de la misma colección pueden tener campos distintos.

Ver en la lección: NoSQL: cuando el modelo relacional no es la respuesta →

Motor de base de datos — Motores
El software concreto que implementa un RDBMS y ejecuta las consultas — SQLite, PostgreSQL, MySQL, MariaDB. Cada uno tiene sus propias variaciones de sintaxis sobre el estándar SQL.

Ver en la lección: Optimización (EXPLAIN QUERY PLAN) y motores de bases de datos →

MySQL — Motores
Uno de los motores cliente-servidor de código abierto más usados en aplicaciones web, hoy propiedad de Oracle.

Ver en la lección: Optimización (EXPLAIN QUERY PLAN) y motores de bases de datos →

Normalización — Concepto
Diseñar las tablas para no repetir el mismo dato en varias filas, dividiéndolo en tablas relacionadas por clave foránea. Reduce inconsistencias, a costa de necesitar más JOINs para leer.

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

NoSQL — NoSQL
"Not Only SQL" — familia de motores que abandonan o relajan el modelo de tablas relacionadas. No es "anti-SQL": coexiste con las bases relacionales, y se usa cuando un problema concreto (escritura masiva, escalado extremo, datos sin forma tabular) lo justifica.

Ver en la lección: NoSQL: cuando el modelo relacional no es la respuesta →

NOT — Filtrado
Operador lógico que invierte una condición: selecciona las filas donde esa condición es falsa.

Ver en la lección: Operadores lógicos: AND, OR, NOT →

NOT NULL — Estructura
Restricción que obliga a que una columna siempre tenga un valor — impide guardar NULL ahí.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

NTILE — Ventana
Reparte las filas de una partición en N grupos de tamaño lo más parejo posible — por ejemplo, NTILE(4) arma cuartiles.

Ver en la lección: Distribución: NTILE y percentiles →

NULL — Valores NULL
Representa la AUSENCIA de un valor — no es lo mismo que 0, texto vacío o falso. Por eso nunca se compara con = NULL; se usa IS NULL / IS NOT NULL.

Ver en la lección: Lógica condicional: CASE y manejo de NULL →

NULLIF — Valores NULL
Devuelve NULL si dos valores son iguales, o el primero si son distintos. Útil para evitar división por cero: NULLIF(divisor, 0).

Ver en la lección: Conversión de tipos: CAST, COALESCE y NULLIF →

ON DELETE CASCADE — Estructura
Opción de una clave foránea: al borrar la fila referenciada, borra automáticamente también las filas relacionadas que dependen de ella.

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

OR — Filtrado
Operador lógico: basta con que UNA de las condiciones se cumpla para que la fila pase.

Ver en la lección: Operadores lógicos: AND, OR, NOT →

Orden de ejecución — Concepto
El orden REAL en que el motor procesa las cláusulas — FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT — que no coincide con el orden en que se escriben. Por eso HAVING puede filtrar por algo que WHERE todavía no "conoce".

Ver en la lección: Agrupación múltiple y orden de ejecución →

ORDER BY — Consultas
Ordena las filas del resultado según una o más columnas.
SELECT * FROM productos ORDER BY precio DESC;

Ver en la lección: Ordenar y limitar: ORDER BY y LIMIT →

OVER — Ventana
La cláusula que convierte una función normal en función de ventana, definiendo su partición y su orden.

Ver en la lección: Funciones de ventana: OVER y PARTITION BY →

PARTITION BY — Ventana
Dentro de OVER, divide las filas en grupos (particiones) sobre los que la función de ventana calcula de forma independiente — como un GROUP BY que no colapsa filas.

Ver en la lección: Funciones de ventana: OVER y PARTITION BY →

Pool de conexiones — Seguridad
Conjunto de conexiones a la base de datos que un servidor abre por adelantado y reutiliza entre peticiones, en vez de abrir y cerrar una conexión nueva por cada request. Evita saturar la base de datos bajo tráfico.

Ver en la lección: SQL en producción: conectar con Node.js →

PostgreSQL — Motores
Motor cliente-servidor de código abierto, muy fiel al estándar SQL, con tipos de datos avanzados y gran extensibilidad. Hoy el más valorado por developers en encuestas como Stack Overflow.

Ver en la lección: Optimización (EXPLAIN QUERY PLAN) y motores de bases de datos →

Predicado — Filtrado
Una condición lógica que se evalúa como verdadera, falsa o desconocida (por un NULL de por medio) — lo que va dentro de un WHERE o un HAVING.

Ver en la lección: Filtrar filas: WHERE →

Prepared statement (consulta parametrizada) — Seguridad
Una consulta con marcadores (? o :nombre) donde los valores viajan por separado del texto SQL, en vez de concatenarse directo. Es la defensa estándar contra inyección SQL.
-- en vez de concatenar texto:
SELECT * FROM users WHERE email = ?;

Ver en la lección: SQL en producción: conectar con Node.js →

PRIMARY KEY (clave primaria) — Estructura
La columna (o combinación) que identifica de forma única cada fila. No se repite ni admite NULL, y solo puede haber una por tabla.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

RANK — Ventana
Asigna una posición según el orden; las filas empatadas comparten puesto, y el siguiente puesto salta (1, 1, 3…).

Ver en la lección: Ranking: ROW_NUMBER, RANK, DENSE_RANK →

RDBMS (SGBD) — Concepto
Relational Database Management System — el software que administra una base de datos relacional (crea tablas, ejecuta consultas, controla accesos). SQLite, PostgreSQL, MySQL y MariaDB son RDBMS distintos.
Redis — NoSQL
Motor clave-valor en memoria, muy usado como capa de caché delante de una base relacional — guarda ahí lo que se lee muchísimo y cambia poco (sesiones, contadores, resultados frecuentes).

Ver en la lección: NoSQL: cuando el modelo relacional no es la respuesta →

Relación — Concepto
El vínculo lógico entre dos tablas, normalmente por clave primaria/foránea. En el modelo relacional formal, "relación" es también el término técnico para "tabla".

Ver en la lección: Modificar y borrar estructuras: ALTER, DROP y claves foráneas →

Restricción (constraint) — Estructura
Regla que limita qué valores acepta una columna o tabla, para proteger la integridad de los datos: PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE, CHECK, DEFAULT.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

RIGHT JOIN — Uniones
Como LEFT JOIN pero al revés: conserva todas las filas de la tabla derecha.

Ver en la lección: Conservar filas: LEFT y RIGHT JOIN →

ROLLBACK — Transacciones
Deshace una transacción, revirtiendo todos los cambios como si nunca hubieran pasado.

Ver en la lección: Transacciones: BEGIN, COMMIT, ROLLBACK y SAVEPOINT →

ROW_NUMBER — Ventana
Asigna un número correlativo único a cada fila según el orden indicado, sin empates — 1, 2, 3, 4… aunque haya valores repetidos.

Ver en la lección: Ranking: ROW_NUMBER, RANK, DENSE_RANK →

SAVEPOINT — Transacciones
Un punto de control dentro de una transacción larga, al que se puede volver con ROLLBACK TO sin deshacer TODA la transacción — solo lo hecho después de ese punto.

Ver en la lección: Transacciones: BEGIN, COMMIT, ROLLBACK y SAVEPOINT →

SELECT — Consultas
La sentencia para leer datos: elige qué columnas traer, de qué tabla, con qué filtro y en qué orden.
SELECT nombre, email FROM clientes;

Ver en la lección: Consultas básicas: SELECT y FROM →

SELECT * — Consultas
El asterisco pide "todas las columnas" sin nombrarlas una por una. Cómodo para explorar datos, pero mala práctica en código de producción — mejor nombrar las columnas explícitamente.

Ver en la lección: Consultas básicas: SELECT y FROM →

SELF JOIN — Uniones
Una tabla unida consigo misma, usando dos alias distintos — útil para comparar filas de la misma tabla entre sí (ej: un empleado y su jefe, ambos en la tabla "empleados").

Ver en la lección: Auto-relaciones: SELF JOIN →

SET — Manipulación
Dentro de un UPDATE, indica qué columnas cambian y con qué valores.

Ver en la lección: Actualizar datos: UPDATE →

SQL — Concepto
Structured Query Language: el lenguaje estándar para definir, consultar y modificar datos en una base de datos relacional. Se lee "ese-cu-ele" o "síquel".
SQLite — Motores
Motor embebido, sin servidor: toda la base de datos vive en un solo archivo. El más usado del mundo — va integrado en navegadores, móviles y apps de escritorio. Es el que corre este curso en tu navegador.

Ver en la lección: Optimización (EXPLAIN QUERY PLAN) y motores de bases de datos →

Subconsulta — Subconsultas
Un SELECT anidado dentro de otra consulta. Puede ir en el WHERE, el FROM o el SELECT.
SELECT nombre FROM clientes WHERE id IN (SELECT cliente_id FROM pedidos WHERE monto > 1000);

Ver en la lección: Subconsultas escalares →

Subconsulta correlacionada — Subconsultas
Una subconsulta que usa una columna de la consulta externa, así que se vuelve a ejecutar para cada fila externa (a diferencia de una subconsulta normal, que corre una sola vez).

Ver en la lección: Subconsultas correlacionadas y EXISTS →

SUM — Agregación
Suma los valores numéricos de una columna dentro del grupo.

Ver en la lección: Funciones de agregación: COUNT, SUM, AVG, MIN, MAX →

Tabla — Concepto
Estructura que guarda datos de un mismo tipo de entidad (por ejemplo, "clientes") organizados en filas y columnas.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

Tipo de dato — Estructura
Define qué clase de valor acepta una columna (entero, texto, fecha, booleano…). Los nombres varían por motor — un texto es TEXT en SQLite/PostgreSQL pero VARCHAR(n) en MySQL.

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

Transacción — Transacciones
Un grupo de operaciones que se ejecutan como una sola unidad: o se aplican todas, o ninguna. Evita estados intermedios inconsistentes.

Ver en la lección: Transacciones: BEGIN, COMMIT, ROLLBACK y SAVEPOINT →

Trigger — Motores
Código que el motor ejecuta automáticamente cuando ocurre un evento (INSERT, UPDATE, DELETE) sobre una tabla — por ejemplo, actualizar un stock cada vez que se registra una venta.

Ver en la lección: Triggers y automatización →

TRUNCATE — Manipulación
Borra todas las filas de una tabla de golpe, sin evaluarlas una por una como DELETE — más rápido, pero sin condiciones posibles y sin poder deshacerse en algunos motores.

Ver en la lección: Eliminar datos: DELETE →

Tupla — Concepto
Nombre formal (del modelo relacional) para una fila: una lista ordenada de valores, uno por columna.
UNION — Conjuntos
Combina el resultado de dos SELECT (con las mismas columnas) en uno solo, eliminando filas duplicadas.

Ver en la lección: Operaciones de conjuntos: UNION, INTERSECT, EXCEPT →

UNION ALL — Conjuntos
Igual que UNION, pero conserva los duplicados. Más rápido porque no tiene que comparar filas para descartarlos.

Ver en la lección: Operaciones de conjuntos: UNION, INTERSECT, EXCEPT →

UNIQUE — Estructura
Restricción que impide que se repita un valor en esa columna entre distintas filas (a diferencia de PRIMARY KEY, puede haber varias UNIQUE por tabla y sí admite un NULL).

Ver en la lección: Crear tablas y restricciones: CREATE TABLE →

UPDATE — Manipulación
Modifica filas ya existentes. Sin un WHERE, actualiza TODA la tabla — uno de los errores más comunes y peligrosos en SQL.
UPDATE productos SET precio = precio * 1.10 WHERE categoria = 'electronica';

Ver en la lección: Actualizar datos: UPDATE →

UPSERT — Manipulación
Un INSERT que se convierte en UPDATE si la fila ya existe según una clave. La sintaxis cambia por motor: ON CONFLICT ... DO UPDATE (PostgreSQL/SQLite) vs ON DUPLICATE KEY UPDATE (MySQL/MariaDB).
Vista (VIEW) — Estructura
Un SELECT guardado con nombre que se usa como si fuera una tabla. No duplica datos: cada consulta a la vista ejecuta el SELECT original por debajo.

Ver en la lección: Vistas: CREATE VIEW →

WHERE — Filtrado
Filtra qué filas entran al resultado, evaluando una condición fila por fila antes de cualquier agrupación.
SELECT * FROM pedidos WHERE estado = 'pendiente';

Ver en la lección: Filtrar filas: WHERE →

WITH — Subconsultas
La palabra clave que introduce una o varias CTE antes de la consulta principal que las usa.

Ver en la lección: Expresiones de tabla común: WITH →