Menu
Coddy logo textTech

Hoja de Trucos de SQL

Última actualización

Consultar datos (SELECT)

El núcleo de SQL: leer filas de una o varias tablas.

OperaciónSintaxis
Seleccionar todas las columnasSELECT * FROM users;
Seleccionar columnas específicasSELECT id, name FROM users;
Renombrar una columna (alias)SELECT name AS full_name FROM users;
Valores distintosSELECT DISTINCT country FROM users;
Limitar filasSELECT * FROM users LIMIT 10;
Omitir y luego limitar (paginación)SELECT * FROM users LIMIT 10 OFFSET 20;
Contar filasSELECT COUNT(*) FROM users;

Filtrar filas (WHERE)

Reduce qué filas devuelve una consulta.

OperaciónSintaxis
Igualdad / comparaciónWHERE age >= 18
Varias condicionesWHERE age >= 18 AND country = 'US'
Cualquiera de las condicionesWHERE role = 'admin' OR role = 'owner'
En un conjuntoWHERE country IN ('US', 'CA', 'MX')
Entre un rangoWHERE price BETWEEN 10 AND 50
Coincidencia de patrónWHERE email LIKE '%@gmail.com'
Es / no es nuloWHERE deleted_at IS NULL
NegarWHERE status NOT IN ('archived')

Ordenar y agrupar

OperaciónSintaxis
Orden ascendente (por defecto)ORDER BY created_at
Orden descendenteORDER BY created_at DESC
Ordenar por varias columnasORDER BY country, name DESC
Agrupar filasSELECT country, COUNT(*) FROM users GROUP BY country;
Filtrar gruposGROUP BY country HAVING COUNT(*) > 100

Joins

Combina filas de dos tablas según una columna coincidente.

Tipo de joinDevuelveSintaxis
INNER JOINSolo las filas que coinciden en ambas tablasFROM orders o INNER JOIN users u ON o.user_id = u.id
LEFT JOINTodas las filas de la izquierda + coincidencias (nulos en caso contrario)FROM users u LEFT JOIN orders o ON o.user_id = u.id
RIGHT JOINTodas las filas de la derecha + coincidenciasFROM orders o RIGHT JOIN users u ON o.user_id = u.id
FULL OUTER JOINTodas las filas de ambos ladosFROM a FULL OUTER JOIN b ON a.id = b.a_id
CROSS JOINCada combinación (producto cartesiano)FROM sizes CROSS JOIN colors
Self joinUna tabla unida consigo mismaFROM employees e JOIN employees m ON e.manager_id = m.id

Funciones de agregación

Calcula un solo valor a partir de un grupo de filas.

FunciónQué hace
COUNT(*)Número de filas
COUNT(col)Número de valores no nulos
SUM(col)Total de una columna numérica
AVG(col)Valor promedio
MIN(col) / MAX(col)Valor más pequeño / más grande
STRING_AGG(col, ',')Concatena valores (Postgres; GROUP_CONCAT en MySQL)

Funciones de ventana

Calcula sobre un conjunto de filas sin colapsarlas en una sola.

FunciónSintaxis
Número de filaROW_NUMBER() OVER (ORDER BY score DESC)
Rango (con huecos)RANK() OVER (PARTITION BY country ORDER BY score DESC)
Rango densoDENSE_RANK() OVER (ORDER BY score DESC)
Total acumuladoSUM(amount) OVER (ORDER BY created_at)
Fila anterior / siguienteLAG(score) OVER (ORDER BY date), LEAD(score) OVER (...)

Modificar datos (INSERT, UPDATE, DELETE)

OperaciónSintaxis
Insertar una filaINSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com');
Insertar varias filasINSERT INTO users (name) VALUES ('Ada'), ('Alan');
Actualizar filasUPDATE users SET active = true WHERE id = 1;
Eliminar filasDELETE FROM users WHERE active = false;
Upsert (Postgres/SQLite)INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;

Definir tablas (DDL)

OperaciónSintaxis
Crear una tablaCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
Añadir una columnaALTER TABLE users ADD COLUMN age INTEGER;
Eliminar una columnaALTER TABLE users DROP COLUMN age;
Eliminar una tablaDROP TABLE users;
Crear un índiceCREATE INDEX idx_users_email ON users (email);
Clave foráneaFOREIGN KEY (user_id) REFERENCES users (id)

Cada sentencia, cláusula y join de SQL que necesitas, en una sola página. Esta hoja de trucos de SQL es una referencia rápida para consultar y modificar datos relacionales: las cláusulas SELECT, los cuatro tipos de JOIN, la agregación y el DDL y DML que usas para crear y actualizar tablas.

La sintaxis aquí es SQL ANSI estándar y funciona en PostgreSQL, MySQL, SQLite y SQL Server salvo que se indique lo contrario. Copia lo que necesites o prueba cada consulta en vivo en el playground de SQL, sin instalar ninguna base de datos.

Preguntas frecuentes sobre la hoja de trucos de SQL

¿Esta hoja de trucos de SQL es gratis?
Sí. Esta hoja de trucos de SQL es completamente gratuita, sin necesidad de registrarse. Guárdala en favoritos y vuelve cuando necesites consultar una cláusula, un join o una función.
¿Funciona con MySQL, PostgreSQL y SQLite?
En su mayoría, sí. La sintaxis de SELECT, WHERE, JOIN, GROUP BY y DDL que se muestra aquí es SQL ANSI estándar y se ejecuta igual en MySQL, PostgreSQL, SQLite y SQL Server. Algunas funciones avanzadas difieren según el dialecto (los upserts y la agregación de cadenas son las más comunes) y esas filas indican la diferencia.
¿Cuál es la diferencia entre INNER JOIN y LEFT JOIN?
Un INNER JOIN devuelve solo las filas que tienen coincidencia en ambas tablas. Un LEFT JOIN devuelve cada fila de la tabla izquierda (la primera), rellenando con NULL las columnas de la tabla derecha cuando no hay coincidencia; es útil cuando quieres todos los usuarios aunque algunos no tengan pedidos.
¿Puedo practicar estos comandos SQL en línea?
Sí. Abre el playground de SQL para ejecutar cualquier consulta de esta hoja de trucos contra una base de datos real en tu navegador, sin instalar nada. Cuando quieras estructura, el curso interactivo y gratuito de SQL de Coddy te lleva paso a paso desde SELECT hasta los joins y las funciones de ventana.
¿Esta hoja de trucos es buena para principiantes?
Sí. Está organizada desde las operaciones más comunes (consultar y filtrar) hasta las más avanzadas (funciones de ventana), de modo que puedes usar las secciones de arriba desde el primer día e ir avanzando hacia el resto.
Coddy programming languages illustration

Aprende SQL con Coddy

COMENZAR