Chuleta de MySQL
Una referencia de MySQL buscable e imprimible: consultas, joins, índices, funciones, tipos de datos y comandos de administración. Gratis.
Consultas
10SELECT * FROM users;
Selecciona todas las columnas y filas
SELECT id, name FROM users;
Selecciona columnas específicas
SELECT DISTINCT city FROM users;
Solo valores únicos
WHERE age > 18 AND active = 1
Filtra filas por condiciones
WHERE name LIKE 'A%'
Coincidencia de patrón (% = cualquier carácter)
WHERE id IN (1, 2, 3)
Coincide con cualquier valor de un conjunto
WHERE age BETWEEN 18 AND 30
Filtro de rango inclusivo
ORDER BY created_at DESC
Ordena descendente
LIMIT 10 OFFSET 20
Pagina resultados
WHERE email IS NULL
Coincide con valores null
Joins
8INNER JOIN orders ON orders.user_id = users.id
Filas que coinciden en ambas tablas
LEFT JOIN orders ON ...
Todas las filas izquierdas + coincidencias
RIGHT JOIN orders ON ...
Todas las filas derechas + coincidencias
CROSS JOIN colors
Producto cartesiano
SELF JOIN: FROM emp e JOIN emp m ON e.mgr = m.id
Une una tabla consigo misma
USING (user_id)
Une por columna del mismo nombre
UNION / UNION ALL
Combina conjuntos de resultados
SELECT u.*, o.total FROM users u JOIN orders o
Alias de tablas para mayor claridad
Agregación
9COUNT(*)
Cuenta filas
SUM(amount)
Total de una columna numérica
AVG(price)
Valor promedio
MIN(price), MAX(price)
El menor y el mayor
GROUP BY country
Agrupa filas para agregar
HAVING COUNT(*) > 5
Filtra grupos agregados
GROUP_CONCAT(name)
Concatena valores agrupados
COUNT(DISTINCT city)
Cuenta valores únicos
ROW_NUMBER() OVER (ORDER BY id)
Ranking con función de ventana
Modificación de datos
8INSERT INTO users (name) VALUES ('Sam');
Inserta una sola fila
INSERT INTO users (name) VALUES ('A'),('B');
Inserta varias filas
UPDATE users SET active = 1 WHERE id = 5;
Actualiza las filas que coinciden
DELETE FROM users WHERE id = 5;
Elimina las filas que coinciden
TRUNCATE TABLE logs;
Elimina todas las filas rápidamente
INSERT ... ON DUPLICATE KEY UPDATE
Upsert sobre una clave única
REPLACE INTO users ...
Elimina + inserta en conflicto
INSERT IGNORE INTO ...
Omite filas que darían error
Esquema / DDL
9CREATE TABLE users (id INT PRIMARY KEY);
Crea una tabla nueva
AUTO_INCREMENT
Columna autonumerada
ALTER TABLE users ADD COLUMN age INT;
Agrega una columna
ALTER TABLE users DROP COLUMN age;
Elimina una columna
ALTER TABLE users MODIFY name VARCHAR(100);
Cambia el tipo de una columna
DROP TABLE IF EXISTS users;
Elimina una tabla
FOREIGN KEY (user_id) REFERENCES users(id)
Referencia otra tabla
ON DELETE CASCADE
Elimina en cascada a los hijos
CREATE TABLE t2 LIKE t1;
Copia la estructura de una tabla
Índices y claves
8PRIMARY KEY (id)
Identificador único de fila
UNIQUE (email)
Impone valores únicos
CREATE INDEX idx_name ON users (name);
Acelera búsquedas en una columna
CREATE INDEX idx_ab ON t (a, b);
Índice compuesto (varias columnas)
DROP INDEX idx_name ON users;
Elimina un índice
FULLTEXT (body)
Índice de búsqueda de texto completo
EXPLAIN SELECT ...;
Muestra el plan de la consulta
SHOW INDEX FROM users;
Lista los índices de una tabla
Tipos de datos
9INT, BIGINT, TINYINT
Tipos enteros por tamaño
DECIMAL(10, 2)
Números exactos de punto fijo
VARCHAR(255)
String de longitud variable
TEXT, LONGTEXT
Grandes bloques de texto
DATE, DATETIME, TIMESTAMP
Tipos de fecha y hora
BOOLEAN (TINYINT(1))
true/false almacenado como 0/1
JSON
Columna nativa de documento JSON
ENUM('a', 'b')
Uno de un conjunto fijo de valores
UNSIGNED
Modificador numérico no negativo
Type sizes & limits
20TINYINT
1 byte: -128..127 (0..255 UNSIGNED)
SMALLINT
2 bytes: -32,768..32,767 (0..65,535)
MEDIUMINT
3 bytes: -8.39M..8.39M (0..16.78M)
INT
4 bytes: -2.15B..2.15B (0..4.29B)
BIGINT
8 bytes: ±9.22×10^18 (0..1.84×10^19)
DECIMAL(M, D)
Exact: M up to 65 digits, D up to 30
FLOAT / DOUBLE
4 / 8 bytes approximate floating point
CHAR(M)
Fixed length, 0..255 characters
VARCHAR(M)
0..65,535 bytes (shared 64KB row limit)
TINYTEXT
Up to 255 bytes (~255 chars)
TEXT
Up to 65,535 bytes (64 KB)
MEDIUMTEXT
Up to 16,777,215 bytes (16 MB)
LONGTEXT
Up to 4,294,967,295 bytes (4 GB)
BLOB types
TINY/—/MEDIUM/LONG: 255B..4GB (binary)
JSON
Stored as LONGBLOB, up to ~4 GB
ENUM / SET
ENUM: 65,535 members; SET: 64 members
DATE
1000-01-01 to 9999-12-31 (3 bytes)
DATETIME
1000 to 9999, microseconds (5–8 bytes)
TIMESTAMP
1970-01-01 to 2038-01-19 UTC (4 bytes)
TIME / YEAR
±838:59:59 / 1901..2155
Funciones
9NOW(), CURDATE()
Fecha y hora / fecha actual
DATE_FORMAT(d, '%Y-%m-%d')
Formatea una fecha
DATEDIFF(a, b)
Días entre dos fechas
CONCAT(a, ' ', b)
Une strings
COALESCE(a, b, 'n/a')
Primer valor no null
IFNULL(x, 0)
Reemplaza null con un valor por defecto
CASE WHEN x > 0 THEN '+' ELSE '-' END
Expresión condicional
CAST(x AS CHAR)
Convierte el tipo de un valor
ROUND(x, 2)
Redondea a decimales
Transacciones y administración
9START TRANSACTION;
Inicia una transacción
COMMIT;
Confirma la transacción
ROLLBACK;
Deshace la transacción
SAVEPOINT sp1;
Establece un punto de rollback
SHOW TABLES;
Lista las tablas de la base de datos
DESCRIBE users;
Muestra la estructura de una tabla
SHOW PROCESSLIST;
Lista las conexiones activas
GRANT ALL ON db.* TO 'u'@'%';
Otorga privilegios a un usuario
mysqldump -u root db > db.sql
Respalda una base de datos (CLI)
Ninguna entrada coincide con “:q”.
¿Necesitas ayuda?
¿Encontraste un problema con esta herramienta? Avísanos.