Comandos para administrar bases de datos mysql desde SSH

Comandos:

Ingresar al monitor: mysql -u [username] -p; (Pedirá la contraseña)
Mostrar todas las bases de datos: show databases;
Ingresar a una base de datos: mysql -u [username] -p [database] (will prompt for password)
Crear una nueva base de datos: create database [database];
Seleccionar una base de datos: use [database];
Ver qué base de datos está en uso: select database();
Mostrar todas las tablas: show tables;
Ver la estructura de la table: describe [table];
	Listar todos los indexes de una tabla: show index from [table];
	Crear una nueva table con columnas: CREATE TABLE [table] ([column] VARCHAR(120), [another-column] DATETIME);
	Añadir una columna: ALTER TABLE [table] ADD COLUMN [column] VARCHAR(120);
Añadir una columna con un unique, auto-incrementing ID: ALTER TABLE [table] ADD COLUMN [column] int NOT NULL AUTO_INCREMENT PRIMARY KEY;
Insertar un registro: INSERT INTO [table] ([column], [column]) VALUES ('[value]', [value]');
	Función de MySQL para la entrada de fecha y hora: NOW()
	Seleccionar un registro: SELECT * FROM [table];
Explicar los registros: EXPLAIN SELECT * FROM [table];
	Seleccionar parte de un registro: SELECT [column], [another-column] FROM [table];
Contar la cantidad de registros: SELECT COUNT([column]) FROM [table];
Contar y seleccionar un grupo de registros: SELECT *, (SELECT COUNT([column]) FROM [table]) AS count FROM [table] GROUP BY [column];
Seleccionar un registro específico: SELECT * FROM [table] WHERE [column] = [value]; (Selectors: <, >, !=; combine	múltiple selectors with AND, OR)
Seleccionar registros que contienen el valor [value]: SELECT * FROM [table] WHERE [column] LIKE '%[value]%';
	Seleccionar registros que comienzan con el valor [value]: SELECT * FROM [table] WHERE [column] LIKE '[value]%';
	Seleccionar registros que comienzan con con "val" y terminan con "ue": SELECT * FROM [table] WHERE [column] LIKE '[val_ue]';
Seleccionar un rango: SELECT * FROM [table] WHERE [column] BETWEEN [value1] and [value2];
Seleccionar con orden personalizado y límite único : SELECT * FROM [table] WHERE [column] ORDER BY [column] ASC LIMIT [value]; (Order: DESC, ASC)
	Actualizar registro: UPDATE [table] SET [column] = '[updated-value]' WHERE [column] = [value];
	Eliminar registros: DELETE FROM [table] WHERE [column] = [value];
	Borrar todos los registros de una tabla (Sin eliminar la table): DELETE FROM [table]; (También pone en cero los incremetales)
Eliminar todos los registros de una tabla: truncate table [table];
Borrar columnas de una tabla: ALTER TABLE [table] DROP COLUMN [column];
Eliminar tablas: DROP TABLE [table];
Eliminar bases de datos: DROP DATABASE [database];
Personalizar los nombres de las columnas de salida: SELECT [column] AS [custom-column] FROM [table];
Exportación de un volcado de la base de datos: mysqldump -u [username] -p [database] > db_backup.sql 
Use --lock-tables=false option for locked tables
Importar un volcado de la base de datos: mysql -u [username] -p -h localhost [database] < db_backup.sql
Salida: exit;

Funciones adicionales

	Seleccionar sin duplicados: SELECT distinct name, email, acception FROM owners WHERE acception = 1 AND date >= 2015-01-01 00:00:00
Calcular el número de registro totales: SELECT SUM([column]) FROM [table];


Contar el número total de columnas [column] y grupo por [category-column]: SELECT [category-column], SUM([column]) FROM [table] GROUP BY [category-column];
Obtener el valor más largo [column]: SELECT MAX([column]) FROM [table];
Obtener el valor más pequeño: SELECT MIN([column]) FROM [table];
Obtener  el valor promedio: SELECT AVG([column]) FROM [table];
Obtener el valor promedio redondeado y grupo po [category-column]: SELECT [category-column], ROUND(AVG([column]), 2) FROM [table] GROUP BY [category-column];

Múltipes tablas

Seleccionar de multiples tablas: SELECT [table1].[column], [table1].[another-column], [table2].[column] FROM [table1], [table2];
Combinar filas de diferentes tablas: SELECT * FROM [table1] INNER JOIN [table2] ON [table1].[column] = [table2].[column];
Combinar filas de tablas diferentes, sin usar la condición join: SELECT * FROM [table1] LEFT OUTER JOIN [table2] ON [table1].[column] = [table2].[column]; (The left table is the first table that appears in the statement.)
Renombrar la columna o tabla usando un alias: SELECT [table1].[column] AS '[value]', [table2].[column] AS '[value]' FROM [table1], [table2];

Funciones de usuario

Listar todos los usuarios: SELECT User,Host FROM mysql.user;
Crear un nuevo usuario: CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
Grant ALL access to user for * tables: GRANT ALL ON database.* TO 'user'@'localhost';
Find out the IP Address of the Mysql Host : SHOW VARIABLES WHERE Variable_name = 'hostname'; (source)

Otros

Cambiar contraseña de una base de datos mysql: set password for 'prefijo_db'@'localhost' = password('aquielpassword');