Cheatsheets

Chuletas de comandos y sintaxis que uso a diario a primer vistazo.

Mysql

🔌 Conexión

mysql -u usuario -p                      # Conectar pidiendo contraseña
mysql -u usuario -p -h host              # Conectar a host remoto
mysql -u usuario -p -P 3307              # Conectar a puerto específico
mysql -u usuario -p nombre_bd            # Conectar y seleccionar BD
exit                                     # Salir de la consola (o \q)

🗄️ Bases de datos

SHOW DATABASES;                          # Listar bases de datos
CREATE DATABASE mi_bd;                   # Crear base de datos
CREATE DATABASE IF NOT EXISTS mi_bd;     # Crear si no existe
USE mi_bd;                               # Seleccionar base de datos
DROP DATABASE mi_bd;                     # Eliminar base de datos ⚠️
SELECT DATABASE();                       # Ver BD actual

📋 Tablas

SHOW TABLES;                             # Listar tablas
DESCRIBE mi_tabla;                       # Ver estructura de tabla
DESC mi_tabla;                           # Igual que DESCRIBE (abreviado)
SHOW CREATE TABLE mi_tabla;              # Ver sentencia CREATE completa
DROP TABLE mi_tabla;                     # Eliminar tabla ⚠️
DROP TABLE IF EXISTS mi_tabla;           # Eliminar si existe
RENAME TABLE vieja TO nueva;             # Renombrar tabla
TRUNCATE TABLE mi_tabla;                 # Vaciar tabla (sin borrar estructura)
CREATE TABLE usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  email VARCHAR(100) UNIQUE,
  edad INT DEFAULT 18,
  creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

🛠️ Modificar estructura (ALTER)

ALTER TABLE usuarios ADD telefono VARCHAR(20);        # Añadir columna
ALTER TABLE usuarios DROP COLUMN telefono;            # Eliminar columna
ALTER TABLE usuarios MODIFY nombre VARCHAR(150);      # Modificar tipo de columna
ALTER TABLE usuarios CHANGE nombre nombre_completo VARCHAR(150); # Renombrar columna
ALTER TABLE usuarios ADD PRIMARY KEY (id);            # Añadir clave primaria
ALTER TABLE usuarios AUTO_INCREMENT = 1; ALTER TABLE usuarios ADD INDEX idx_email (email); # Añadir índice



➕ Insertar datos

INSERT INTO usuarios (nombre, email) VALUES ('Ana', 'ana@mail.com');   # Insertar una fila
INSERT INTO usuarios (nombre, email) VALUES                            # Insertar varias filas
  ('Luis', 'luis@mail.com'),
  ('Marta', 'marta@mail.com');

🔎 Consultar datos (SELECT)

SELECT * FROM usuarios;                       # Todas las columnas y filas
SELECT nombre, email FROM usuarios;           # Columnas específicas
SELECT * FROM usuarios WHERE edad > 18;       # Filtrar con WHERE
SELECT * FROM usuarios ORDER BY nombre ASC;   # Ordenar ascendente
SELECT * FROM usuarios ORDER BY edad DESC;    # Ordenar descendente
SELECT * FROM usuarios LIMIT 10;              # Limitar resultados
SELECT * FROM usuarios LIMIT 10 OFFSET 20;    # Paginación
SELECT DISTINCT edad FROM usuarios;           # Valores únicos
SELECT COUNT(*) FROM usuarios;                # Contar filas
SELECT * FROM usuarios WHERE nombre LIKE 'A%';# Buscar por patrón

✏️ Actualizar y eliminar datos

UPDATE usuarios SET edad = 21 WHERE id = 1;       # Actualizar fila(s)
UPDATE usuarios SET edad = edad + 1;              # Actualizar todas las filas ⚠️
DELETE FROM usuarios WHERE id = 1;                # Eliminar fila(s)
DELETE FROM usuarios;                             # Eliminar todas las filas ⚠️

🔗 Combinar tablas (JOIN)

SELECT * FROM pedidos
INNER JOIN usuarios ON pedidos.usuario_id = usuarios.id;   # Solo coincidencias

SELECT * FROM usuarios
LEFT JOIN pedidos ON usuarios.id = pedidos.usuario_id;     # Todo de la izquierda

SELECT * FROM usuarios
RIGHT JOIN pedidos ON usuarios.id = pedidos.usuario_id;    # Todo de la derecha

📊 Funciones de agregación y agrupación

SELECT COUNT(*) FROM usuarios;                         # Contar registros
SELECT AVG(edad) FROM usuarios;                        # Promedio
SELECT SUM(total) FROM pedidos;                        # Suma
SELECT MIN(edad), MAX(edad) FROM usuarios;             # Mínimo y máximo
SELECT edad, COUNT(*) FROM usuarios GROUP BY edad;     # Agrupar
SELECT edad, COUNT(*) FROM usuarios GROUP BY edad HAVING COUNT(*) > 1; # Filtrar grupos

👤 Usuarios y permisos

CREATE USER 'nuevo'@'localhost' IDENTIFIED BY 'clave';       # Crear usuario
ALTER USER 'nuevo'@'localhost' IDENTIFIED BY 'clave'; # Modificar clave GRANT ALL PRIVILEGES ON mi_bd.* TO 'nuevo'@'localhost'; # Dar todos los permisos GRANT SELECT, INSERT ON mi_bd.* TO 'nuevo'@'localhost'; # Dar permisos específicos FLUSH PRIVILEGES; # Aplicar cambios de permisos REVOKE INSERT ON mi_bd.* FROM 'nuevo'@'localhost'; # Quitar permiso DROP USER 'nuevo'@'localhost'; # Eliminar usuario SHOW GRANTS FOR 'nuevo'@'localhost'; # Ver permisos de un usuario

💾 Backup y restauración

mysqldump -u usuario -p mi_bd > backup.sql          # Exportar base de datos
mysqldump -u usuario -p --all-databases > all.sql   # Exportar todas las BD
mysql -u usuario -p mi_bd < backup.sql              # Importar/restaurar backup

🧩 Índices y claves

SHOW INDEX FROM usuarios;                       # Ver índices de una tabla
CREATE INDEX idx_nombre ON usuarios (nombre);   # Crear índice
DROP INDEX idx_nombre ON usuarios;              # Eliminar índice

ℹ️ Otros

STATUS;                          # Estado del servidor y conexión
# Reescribir IDs correlativos
SET @count = 0;
UPDATE crm_usuarios SET id_crm_usuarios = @count := @count + 1;

Tip: Todas las sentencias SQL deben terminar en ;. Usa \G en vez de ; al final de un SELECT para ver el resultado en formato vertical (útil con muchas columnas).