0% encontró este documento útil (0 votos)
7 vistas3 páginas

Cheatsheet SQL: Comandos Esenciales

Este cheatsheet proporciona una referencia rápida de comandos SQL esenciales, desde manipulaciones básicas de datos hasta técnicas avanzadas como CTEs y funciones de ventana. Incluye ejemplos de DML, filtros, joins, transacciones, y buenas prácticas para optimizar consultas. También ofrece recursos útiles y patrones para operaciones avanzadas y seguridad en bases de datos.

Cargado por

vicente hidalgo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas3 páginas

Cheatsheet SQL: Comandos Esenciales

Este cheatsheet proporciona una referencia rápida de comandos SQL esenciales, desde manipulaciones básicas de datos hasta técnicas avanzadas como CTEs y funciones de ventana. Incluye ejemplos de DML, filtros, joins, transacciones, y buenas prácticas para optimizar consultas. También ofrece recursos útiles y patrones para operaciones avanzadas y seguridad en bases de datos.

Cargado por

vicente hidalgo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Cheatsheet SQL — Básico a Avanzado

Comandos esenciales y patrones prácticos (MySQL / PostgreSQL compatible)


Generado por ChatGPT — GPT-5 Thinking mini

Introducción rápida
Este cheatsheet reúne los comandos SQL más útiles, desde SELECT básico hasta técnicas
avanzadas.
Úsalo como referencia rápida. ¡A romperla con tus consultas! ■
1. Manipulación básica de datos (DML)
SELECT columna1, columna2 FROM tabla WHERE condicion ORDER BY columna LIMIT n;
SELECT * FROM tabla; -- seleccionar todo
INSERT INTO tabla (col1, col2) VALUES (val1, val2);
INSERT INTO tabla SET col1 = val1, col2 = val2; -- MySQL
UPDATE tabla SET col = nuevo_val WHERE condicion;
DELETE FROM tabla WHERE condicion;
TRUNCATE TABLE tabla; -- borra todo (rápido, reseetea auto-increment en MySQL)
2. Filtros y operadores
WHERE: =, <>, !=, <, >, <=, >=, BETWEEN, IN(...), LIKE '%patron%', IS NULL / IS NOT NULL
AND / OR / NOT — prioriza AND sobre OR; usa paréntesis para claridad
COALESCE(col, valor_por_defecto) — reemplaza NULL
NULL-safe comparison (MySQL): <=>
3. Funciones agregadas y GROUP BY
COUNT(col) / COUNT(*)
SUM(col), AVG(col), MIN(col), MAX(col)
GROUP BY col1, col2 HAVING COUNT(*) > 1
Usar agregados y columnas no agregadas requiere incluirlas en GROUP BY (o usar funciones)
4. Joins (unión de tablas)
INNER JOIN: SELECT * FROM a INNER JOIN b ON [Link] = b.a_id;
LEFT JOIN: mantiene filas de la izquierda aunque no haya match en la derecha
RIGHT JOIN: mantiene filas de la derecha (poco usado fuera de MySQL)
FULL OUTER JOIN: no disponible en MySQL (usar UNION de LEFT y RIGHT) — sí en PostgreSQL
CROSS JOIN: producto cartesiano
USING(col) — atajo si la columna tiene mismo nombre en ambas tablas
5. Subconsultas (subqueries)
SELECT * FROM tabla WHERE id IN (SELECT fk FROM otra_tabla WHERE ...);
Subquery en SELECT: SELECT (SELECT MAX(precio) FROM ventas WHERE user_id = [Link]) AS max_venta
FROM users u;
Subqueries correlacionadas: dependen de la fila externa (más lentas)
6. CTEs (WITH) y consultas recursivas
WITH cte AS (SELECT ... FROM ...) SELECT * FROM cte;
CTE recursiva (ej. árbol):
WITH RECURSIVE r AS (SELECT id, padre_id FROM t WHERE padre_id IS NULL UNION ALL SELECT [Link],
t.padre_id FROM t JOIN r ON t.padre_id = [Link]) SELECT * FROM r;
7. Window functions (Funciones de ventana)
ROW_NUMBER() OVER (PARTITION BY col ORDER BY fecha DESC) AS rn
RANK(), DENSE_RANK(), NTILE(n), LAG(col) OVER (...), LEAD(col) OVER (...)
SUM(col) OVER (PARTITION BY categoria ORDER BY fecha ROWS BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW)
8. Índices, claves y performance (básico)
CREATE INDEX idx_nombre ON tabla(col);
CREATE UNIQUE INDEX ux_nombre ON tabla(col);
PRIMARY KEY (id), FOREIGN KEY (fk) REFERENCES otra(id)
EXPLAIN SELECT ... — revisar plan de ejecución (EXPLAIN ANALYZE en PostgreSQL)
Usar índices en columnas filtradas y en JOINs. Evitar funciones sobre columnas indexadas en
WHERE
9. Transacciones y bloqueo
START TRANSACTION; -- BEGIN;
COMMIT; -- confirmar
ROLLBACK; -- deshacer
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; -- niveles: READ UNCOMMITTED, READ COMMITTED,
REPEATABLE READ, SERIALIZABLE
SELECT ... FOR UPDATE; -- bloquea filas para update
10. DDL - Definición de esquemas
CREATE TABLE tabla (id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
ALTER TABLE tabla ADD COLUMN nueva_col VARCHAR(50);
ALTER TABLE tabla MODIFY COLUMN col INT NOT NULL; -- MySQL
DROP TABLE tabla;
CREATE VIEW vista AS SELECT ...;
11. Stored Procedures, Functions y Triggers (ejemplos básicos)
-- MySQL procedure:
DELIMITER $$
CREATE PROCEDURE sp_increment(IN p_id INT) BEGIN UPDATE cuentas SET saldo = saldo + 1 WHERE
id = p_id; END $$
DELIMITER ;
-- Trigger básico (MySQL):
CREATE TRIGGER trg_after_insert AFTER INSERT ON ventas FOR EACH ROW BEGIN INSERT INTO
audit(...) VALUES(...); END;
12. Operaciones avanzadas y patrones
UPSERT / MERGE:
-- MySQL: INSERT INTO t (id, val) VALUES (...) ON DUPLICATE KEY UPDATE val = VALUES(val);
-- PostgreSQL: INSERT ... ON CONFLICT (id) DO UPDATE SET ...;
DELETE con JOIN (MySQL): DELETE t1 FROM t1 JOIN t2 ON [Link] = t2.t1_id WHERE ...;
Bulk load: LOAD DATA INFILE '[Link]' INTO TABLE tabla FIELDS TERMINATED BY ',' LINES
TERMINATED BY '\n' IGNORE 1 LINES;
13. Seguridad y usuarios (rápido)
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'pass';
GRANT SELECT, INSERT ON bd.* TO 'usuario'@'localhost';
REVOKE INSERT ON bd.* FROM 'usuario'@'localhost';
FLUSH PRIVILEGES; -- MySQL
14. Tips de depuración y buenas prácticas
1) Usa EXPLAIN para consultas lentas.
2) Evita SELECT * en producción; lista columnas explícitas.
3) Limita resultados con LIMIT cuando investigues.
4) Normaliza hasta un punto; desnormaliza por performance cuando hay justificación.
5) Mantén backups y usa control de versiones para scripts DDL.
6) Documenta convenciones de nombre (snake_case vs camelCase).
15. Recursos rápidos (comandos útiles)
SHOW DATABASES; SHOW TABLES; SHOW COLUMNS FROM tabla; DESCRIBE tabla;
SHOW PROCESSLIST; -- ver consultas en ejecución
SHOW VARIABLES LIKE '%timeout%'; -- ejemplos
Anexo - Cheatsheet de atajos y ejemplos rápidos
-- Top 5 consultas para empezar:
1) Contar usuarios activos: SELECT COUNT(*) FROM users WHERE active = 1;
2) Ventas por mes: SELECT DATE_FORMAT(fecha, '%Y-%m') AS mes, SUM(total) FROM ventas GROUP BY
mes ORDER BY mes;
3) Clientes sin órdenes: SELECT c.* FROM clientes c LEFT JOIN ordenes o ON [Link] =
o.cliente_id WHERE [Link] IS NULL;
4) Top 10 productos: SELECT producto_id, SUM(cantidad) AS total_vendido FROM items GROUP BY
producto_id ORDER BY total_vendido DESC LIMIT 10;
5) Running total: SELECT fecha, total, SUM(total) OVER (ORDER BY fecha ROWS BETWEEN UNBOUNDED
PRECEDING AND CURRENT ROW) AS acumulado FROM ventas;

Cheatsheet generado: consulta rápida y directa. ¡Ve por ello, Pepe! ■

También podría gustarte