Artículo Original: MySQL Cheat Sheet
Seleccionar una base de datos:
mysql> USE basededatos;
Mostrar las bases de datos existentes:
mysql> SHOW DATABASES;
Mostrar las tablas de la base de datos seleccionada:
mysql> SHOW TABLES;
Describir el formato de una tabla:
mysql> DESCRIBE tabla;
Crear una base de datos:
mysql> CREATE DATABASE nombre_basededatos;
Crear una tabla:
mysql> CREATE TABLE nombre_tabla (nombre_campo1 TIPO(TAMAÑO), nombre_campo2 TIPO(TAMAÑO), ...);
Por ejemplo:
mysql> CREATE TABLE mascota (nombre VARCHAR(20), sexo CHAR(1), nacimiento DATE);
Cargar un archivo separado por tabs a la base de datos:
mysql> LOAD DATA LOCAL INFILE "archivo.txt" INTO TABLE nombre_tabla;
(Usar \n para representar un valor NULL)
Agregar una fila por vez
mysql> INSERT INTO nombre_tabla VALUES ('Nombre', 'Dueño', '2006-05-23');
(Usar NULL para los valores NULL)
Obtener información:
mysql> SELECT columna1, columna2, ..., columna_n FROM tablas WHERE condiciones;
Toda la tabla: SELECT * FROM tabla;
Algunos valores: SELECT * FROM tabla WHERE nombre_columna = "valor";
Varios filtros: SELECT * FROM tabla WHERE columna1 = "valor1" AND columna2 = "valor2";
Modificar un conjunto de registros (que concuerden con un filtro)
mysql> UPDATE tabla SET nombre_columna = "nuevo_valor" WHERE nombre_columna = "valor_de_filtro";
Seleccionando sólo una columna en especial:
mysql> SELECT nombre_columna FROM tabla;
Obteniendo datos únicos/distintos/sin repetir:
mysql> SELECT DISTINCT nombre_columna FROM tabla;
Ordenar los datos
mysql> SELECT columna1, columna2, .... FROM tabla ORDER BY columna_n;
Orden inverso:
SELECT columna1, columna2, .... FROM tabla ORDER BY columna_n DESC;
Cálculo de fechas
mysql> SELECT CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(columna_de_fecha)) AS diferencia_de_fechas [FROM tabla];
MONTH(una_fecha) extrae el mes de la fecha especificada, DAYOFMONTH(fecha) el día.
Búsqueda de patrones (expresiones):
mysql> SELECT * FROM tabla WHERE columna LIKE 'algo%';
% es el caracter de comodín que significa cualquier cantidad de caracteres
mysql> SELECT * FROM tabla WHERE columna LIKE '_____';
_ es el caracter de comodín que significa cualquier caracter (sólo 1).
Búsqueda avanzada de expresiones regulares:
mysql> SELECT * FROM tabla WHERE columna RLIKE '^b;
. para un caracter
[...] para un conjunto de caracteres
* para 0 o más caracteres
^ para el comienzo
{n} para n repeticiones
$ para el final
Es válido tanto para RLIKE como REGEXP. Sin embargo, para forzar la diferenciación de mayúsculas de minúsculas se recomendaría usar “REGEXP BINARY”.
Contando filas:
mysql> SELECT COUNT(*) FROM tabla;
Agrupar las cuentas
mysql> SELECT columna, COUNT(*) FROM tabla GROUP BY columna;
GROUP BY agrupa todos los registros de cada valor distinto de la columna especificada
Filtrando varias columnas:
mysql> SELECT tabla1.columna1, columna2 FROM tabla1, tabla2 WHERE tabla1.columna1 = tabla2.columna_n;
Se puede comparar una tabla consigo misma utilizando ‘AS’ para darle un nuevo nombre a una columna.
Seleccionar la base de datos actual:
mysql> SELECT DATABASE();
Calcular el máximo
mysql> SELECT MAX(nombre_columna) AS nombre_nueva_columnal FROM tabla;
Columna auto-incrementada
mysql> CREATE TABLE tabla (numero INT NOT NULL AUTO_INCREMENT, nombre CHAR(10) NOT NULL);
mysql> INSERT INTO tabla (nombre) VALUES ("tomas"),("pedro"),("juan");
Agregando una columna a una tabla ya existente:
mysql> ALTER TABLE tabla ADD COLUMN [sintaxis para una nueva columna] AFTER nombre_columna;
Borrando una columna:
mysql> ALTER TABLE tabla DROP COLUMN nombre_columna;
Haciendo una copia de seguridad con mysqldump:
# mysqldump --opt -u usario -p base_de_datos > respaldo.sql
Si se quiere hacer el respaldo de muchas bases de datos, hay que utilizar:
# mysqldump --opt --all-databases > respaldo_todo.sql