A continuación dejo algunos de los comandos que más utilizo en MySQL, tanto para el uso del lector del blog como para quien esté buscando comandos utiles para MySQL y acabe en este blog.
Listado de comandos utiles de MySQL
Mostrar las Bases de datos visibles con nuestro usuario
Para mostrar las bases de datos que hay en el servidor MySQL (y a las que tenemos acceso), escribiremos
mysql> show databases;
Utilizar una base de datos de MySQL
Para cambiar a utilizar una base de datos concreta de las disponibles, utilizaremos el comando:
mysql> use nombreBaseDeDatos;
Saber cuanto espacio ocupa una base de datos MySQL en disco
Este comando es especialmente util y nos servirá para tener una idea de cuanto espacio consume en disco nuestra base de datos:
mysql> SELECT table_schema "Nombre BBDD",Round(SUM( data_length + index_length )/1024/1024,1) "Tamaño de BBDD en MB", round(SUM(data_free )/1024/1024,1) "Espacio libre en MB" FROM information_schema.TABLES GROUP BY table_schema; +--------------------+-----------------------+---------------------+ | Nombre BBDD | Tamaño de BBDD en MB | Espacio libre en MB | +--------------------+-----------------------+---------------------+ |nombreBBDD | 1.9 | 0.0 | |nombreBBDD | 0.3 | 0.0 | |nombreBBDD | 0.2 | 330.0 | |nombreBBDD | 0.0 | 0.0 | |nombreBBDD | 93.1 | 2869.3 | |nombreBBDD | 0.7 | 0.0 | |nombreBBDD | 301.9 | 0.0 | |nombreBBDD | 0.0 | 0.0 | |nombreBBDD | 11.2 | 4290.0 | |nombreBBDD | 962.2 | 5060.0 | |nombreBBDD | 0.1 | 110.0 | |nombreBBDD | 459.2 | 330.0 | |nombreBBDD | 20.3 | 4730.0 | |nombreBBDD | 27.4 | 552.5 | |nombreBBDD | 414.5 | 11880.0 | +--------------------+-----------------------+---------------------+ 15 rows in set (0.07 sec)
Saber cuanto espacio en disco ocupa una tabla en MySQL
Otro de los comandos utiles de MySQL que siempre tengo que buscar debido a que no lo uso con frecuendia. Sirve para saber es el espacio que ocupa en disco una tabla concreta de nuestra base de datos MySQL.
mysql> SELECT TABLE_NAME AS "Nombre Tabla",round(((data_length + index_length) / 1024 / 1024), 4) "Tamaño en MB" FROM information_schema.TABLES WHERE table_schema = "ofertas"; +--------------+---------------+ | Nombre Tabla | Tamaño en MB | +--------------+---------------+ | nombreTabla | 264.0125 | | nombreTabla | 10.2553 | | nombreTabla | 0.6593 | | nombreTabla | 4.4163 | | nombreTabla | 0.6598 | | nombreTabla | 21.8818 | +--------------+---------------+ 6 rows in set (0.00 sec)
Contar el número de líneas que tiene una tabla de MySQL
El primero de los comandos utiles de MySQL es el que nos servirá para contar el número de líneas o filas que tenemos en una tabla de MySQL. Es importante que tengamos presente no introducir un espacio entre el count y el (*) o nuestra consulta fallará.
mysql> select count(*) from nombreTabla; +----------+ | count(*) | +----------+ | 734592 | +----------+ 1 row in set (0.00 sec)
Contar el número de veces que hay un valor determinado en una tabla MySQL
El segundo de los comandos utiles de MySQL lo podemos utilizar para ver lo común que es un valor determinado que nosotros introducimos, dentro del ámbito de una tabla / columna de MySQL. En el ejemplo, queremos saber cuantos artículos hay en la tabla con precio 9.99.
mysql> select count(*) from nombreTabla where precioActual=9.99; +----------+ | count(*) | +----------+ | 65948 | +----------+ 1 row in set (0.22 sec)
Encontrar cuantos valores diferentes hay en una columna de una tabla MySQL
Otro de los comandos utiles de MySQL puede ser el que haríamos para buscar que valores diferentes tenemos dentro de una columna, incluyendo condiciones. En el ejemplo, buscamos dentro de la tabla los precios diferentes que habría mayores a 17000 euros.
mysql> select distinct precioActual from nombreTabla where precioActual > 17000; +--------------+ | precioActual | +--------------+ | 22879.12 | | 18506.00 | | 20000.00 | | 17235.00 | +--------------+ 4 rows in set (0.22 sec)
Una variante de este último, es la que buscaría dentro de una tabla los valores que estén entre dos parámetros que pasemos, como por ejemplo:
mysql> select distinct precioActual from nombreTabla where precioActual > 5000 and precioActual <5050; +--------------+ | precioActual | +--------------+ | 5027.95 | | 5014.99 | | 5040.79 | | 5042.24 | | 5043.23 | | 5040.68 | | 5034.99 | | 5025.00 | | 5029.99 | | 5034.10 | | 5039.17 | +--------------+ 11 rows in set (0.22 sec)
Contar cuantas filas con un valor diferente hay en una tabla de MySQL
Otro de los comandos utiles de MySQL. En este caso, queremos saber la misma información que en el caso anterior, pero sólamente nos interesa el número de precios diferentes que hay. Esto puede ser util como en el caso del ejemplo, que queremos ver cuantos precios diferentes hay en nuestra tabla entre 10€ y 50€
mysql> select count(distinct precioActual) from nombreTabla where precioActual > 10 and precioActual < 50; +------------------------------+ | count(distinct precioActual) | +------------------------------+ | 3997 | +------------------------------+ 1 row in set (0.31 sec)
Buscar los valores diferentes que tenemos dentro de una columna y ver cuantas veces aparecen
Este es uno de los comandos utiles de MySQL que más me gusta utilizar por la versatilidad que ofrece. En el ejemplo vamos a buscar cuantos precios diferentes hay en la tabla entre 1000 y 1500 euros, contando las veces que aparecen. Para ello utilizaremos una variable auxiliar llamada apariciones, que almacenará una cuenta de las veces que aparece el valor. Apariciones no se almacena en la base de datos, es temporal durante el tiempo de ejecución de la consulta MySQL.
mysql> select precioActual, COUNT(precioActual) as apariciones from nombreTabla where precioActual > 1000 and precioActual < 1500 GROUP BY precioActual HAVING apariciones > 1; +--------------+-------------+ | precioActual | apariciones | +--------------+-------------+ | 1034.64 | 3 | | 1054.08 | 2 | | 1076.34 | 14 | | 1086.02 | 2 | | 1089.72 | 2 | | 1166.40 | 2 | | 1298.92 | 2 | | 1347.31 | 2 | | 1412.64 | 2 | +--------------+-------------+ 9 rows in set (0.00 sec)
Insertar una columna despues de otra en una tabla ya existente
Si queremos insertar una nueva columna en nuestra tabla MySQL por un nuevo requerimiento, y no queremos hacerlo desordenado al final del todo, podemos utilizar la siguiente consulta:
mysql> ALTER TABLE nombreTabla ADD COLUMN nuevaColumna DATE NOT NULL DEFAULT '2000-01-01' AFTER columnaAnterior; Query OK, 743836 rows affected (7.59 sec) Records: 743836 Duplicates: 0 Warnings: 0