En este nuevo tutorial sobre MariaDB comenzaremos a interactuar con este sistema de bases de datos. Para esto aprenderemos sobre los comandos más básicos. La distinción entre lo básico, medio y avanzado muchas veces puede ser algo relativo y difícil de representar, así que intentaré hacer mi mejor esfuerzo.
Vamos a asumir que el lector está familiarizado con el contenido de nuestra anterior entrega en esta serie donde abordamos la instalación y configuración de MariaDB.
Son realmente necesarios estos comandos?
En mi opinión, sí. Todos conocemos herramientas de pago como Navicat for MariaDB, una aplicación multiplataforma que nos permite conectarnos de manera remota y desde la comodidad de nuestro entorno gráfico, logrando en la mayoría de los casos que seamos mucho más productivos.
Todo esto está muy bien y es un escenario que recomiendo, pero hay ocasiones (muy frecuentes) en ambientes profesionales donde ante situaciones inesperadas tendremos que interactuar directamente con el terminal de MariaDB y en algunos casos bajo bastante presión, momentos donde nuestro dominio de este sistema de bases de datos y sus comandos harán la diferencia.
Conectarnos a MariaDB desde la terminal de macOS
Veamos como podemos conectarnos a nuestro servidor, abrimos la terminal:
root@ubuntu:/home/weiseratel# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 59
Server version: 10.3.29-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
el parámetro -u nos permite especificar el usuario con el cual nos conectaremos a nuestra base de datos. En un inicio tendrá que ser el usuario root, pero luego ya deberíamos, teniendo en cuenta la seguridad, acceder con un usuario cuyos privilegios sean solamente los necesarios para las tareas a realizar.
Visualizar las bases de datos en nuestro servidor
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)
MariaDB [(none)]>
aquí podemos observar las bases de datos por defecto que crea MariaDB al instalarse, y en nuestro caso, luego de haber ejecutado el script de seguridad, son las necesarias para su funcionamiento.
¿Cómo crear una base de datos?
MariaDB [(none)]> CREATE DATABASE empresa CHARACTER SET utf8 COLLATE utf8_spanish_ci;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]>
en el ejemplo creamos la base de datos «empresa» especificando que el juego de caracteres será «utf8«, específicamente la variación «utf8_spanish_ci«. Tener en cuenta la variación o collate de nuestro juego de caracteres es sumamente importante y sobre todo fundamental tenerlo en cuenta en la etapa de diseño, créanme que les evitará muchos dolores de cabeza.
La variación «utf8_spanish_ci» hace referencia directa a las reglas que conformarían el llamado «español moderno», el cual contempla la ñ como una letra más del alfabeto, ubicada entre las letras «n» y «o», la «ch» se considera la unión de la letra «c» y «h» al igual que la «ll» que está conformada por la unión de la letra «l».
En mi opinión esta variación es mucho más natural, coherente y lógica que la versión «utf8_spanish2_ci«, esta última hace referencia al «español tradicional» y no cuenta con las bondades u optimizaciones de la opción que hemos escogido. Les pregunto: ¿Han visto alguna vez un teclado de ordenador o una máquina de escribir con teclas «ll» o «ch»?
Creación de un usuario con privilegios
MariaDB [(none)]> CREATE USER "paco"@"localhost" IDENTIFIED BY "P@ssw0rd*";
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
acabamos de crear el usuario «paco» identificado por «P@ssw0rd*» como contraseña. Evidentemente esta contraseña ha sido establecida en pos de hacer el ejemplo más gráfico, pero en la vida real por favor elija alternativas cuya palabra/s no sean tan evidentes.
Luego de esto hemos seleccionado la base de datos sobre la que deseamos trabajar, en este caso «empresa», y acto seguido:
MariaDB [(none)]> GRANT ALL ON empresa.* TO "paco"@"localhost";
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
le otorgamos todos los permisos al usuario «paco» sobre la misma.
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]>
Continuamos ejecutando un «FLUSH» para recargar todos los privilegios
MariaDB [(none)]> SELECT User,Host FROM mysql.user;
+------+-----------+
| User | Host |
+------+-----------+
| paco | localhost |
| root | localhost |
+------+-----------+
2 rows in set (0.000 sec)
MariaDB [(none)]>
y terminamos listando los usuarios y sus respectivos host asociados.
Cómo listar y eliminar los privilegios de un usuario
Primero listaremos los privilegios de nuestro usuario «paco»:
MariaDB [(none)]> SHOW GRANTS FOR "paco"@"localhost";
+-------------------------------------------------------------------------------------------------------------+
| Grants for paco@localhost |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `paco`@`localhost` IDENTIFIED BY PASSWORD '*AD30B1F0F423A0FD49174DDF2AA8E5249F95B801' |
+-------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)
MariaDB [(none)]>
ahora eliminaremos los privilegios:
MariaDB [(none)]> REVOKE ALL PRIVILEGES ON empresa.* FROM "paco"@"localhost";
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]>
Crear una tabla y añadirle contenido
A favor de que se pueda copia mejor el siguiente comando lo mostraré por separado:
CREATE TABLE trabajadores (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(20) NOT NULL, cedula INT UNSIGNED NOT NULL UNIQUE, RUC BIGINT(13) UNSIGNED NOT NULL UNIQUE, fecha_de_nacimiento DATE NOT NULL, salario_mensual DECIMAL(7, 2) UNSIGNED NOT NULL);
vayamos a la terminal, y por comodidad lo primero que haremos es cambiarnos a la base de datos donde queremos crear la tabla:
MariaDB [(none)]> USE empresa;
Database changed
MariaDB [empresa]>
en este punto es donde ejecutamos el comando de creación de tabla y sus columna:
MariaDB [empresa]> CREATE TABLE trabajadores (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(20) NOT NULL, cedula INT UNSIGNED NOT NULL UNIQUE, RUC BIGINT(13) UNSIGNED NOT NULL UNIQUE, fecha_de_nacimiento DATE NOT NULL, salario_mensual DECIMAL(7, 2) UNSIGNED NOT NULL);
Query OK, 0 rows affected (0.013 sec)
MariaDB [empresa]>
mostremos ahora los detalles de la tabla que acabamos de crear:
MariaDB [empresa]> DESCRIBE trabajadores;
+---------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+-----------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| nombre | varchar(20) | NO | | NULL | |
| cedula | int(10) unsigned | NO | UNI | NULL | |
| RUC | bigint(13) unsigned | NO | UNI | NULL | |
| fecha_de_nacimiento | date | NO | | NULL | |
| salario_mensual | decimal(7,2) unsigned | NO | | NULL | |
+---------------------+-----------------------+------+-----+---------+----------------+
6 rows in set (0.001 sec)
MariaDB [empresa]>
continuamos agregando unos datos de ejemplo con el siguiente comando:
INSERT INTO trabajadores (id, nombre, cedula, RUC, fecha_de_nacimiento, salario_mensual) VALUES (NULL, "David", 1753664866, 1753664866001, "1983-01-01", 5316.50);
pasando a la terminal:
MariaDB [empresa]> INSERT INTO trabajadores (id, nombre, cedula, RUC, fecha_de_nacimiento, salario_mensual) VALUES (NULL, "David", 1753664866, 1753664866001, "1983-01-01", 5316.50);
Query OK, 1 row affected (0.004 sec)
MariaDB [empresa]>
por último mostramos los datos que hemos agregado:
MariaDB [empresa]> SELECT * FROM trabajadores;
+----+--------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+--------+------------+---------------+---------------------+-----------------+
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
+----+--------+------------+---------------+---------------------+-----------------+
1 row in set (0.001 sec)
MariaDB [empresa]>
antes que nada especificamos la base de datos a usar, proseguimos creando la tabla «trabajadores» con las columnas «id, nombre, cedula, RUC, fecha_de_nacimiento, salario_mensual». En la declaración de los campos establecemos los tipos de datos requeridos para estos al igual que los atributos necesarios para lograr ciertos comportamientos específicos.
En nuestro ejemplo hemos usado atributos como UNSIGNED para aquellos datos numéricos donde los valores no contemplarán signos (negativos o positivos) y NOT NULL para todos los campos ya que son requeridos (ninguno de estos puede dejarse en blanco), AUTO_INCREMENT por su parte incrementa automáticamente el valor de esa columna en una unidad por cada fila de la tabla, UNIQUE restringe la columna a que no acepte valores duplicados y por último PRIMARY KEY establece la llave primaria.
Continuamos añadiendo una fila / tupla a nuestra tabla «trabajadores». Al campo «id» le asignamos NULL ya que el mismo cuenta con el atributo AUTO_INCREMENT, esto nos permite despreocuparnos de incrementar de manera manual este campo, MariaDB sustituye el valor NULL por valor siguiente en la secuencia del campo «id». Cabe aclarar que los campos con el atributo PRIMARY KEY no pueden contener valores NULL, evidentemente esta es una excepción que MariaDB logra solver al sustituir este valor en tiempo de ejecución.
Finalizamos mostrando los datos introducidos usando la orden SELECT que nos permite ejecutar consultas, en este caso todos los datos contenidos en la tabla «trabajadores».
Renombrar tabla
MariaDB [empresa]> RENAME TABLE trabajadores TO workers;
Query OK, 0 rows affected (0.006 sec)
MariaDB [empresa]>
Ordenar los resultados de una consulta
MariaDB [empresa]> select * from trabajadores;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
+----+---------+------------+---------------+---------------------+-----------------+
5 rows in set (0.00 sec)
MariaDB [empresa]> SELECT * FROM trabajadores ORDER BY nombre ASC;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
+----+---------+------------+---------------+---------------------+-----------------+
5 rows in set (0.00 sec)
MariaDB [empresa]> SELECT * FROM trabajadores ORDER BY nombre DESC;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
+----+---------+------------+---------------+---------------------+-----------------+
5 rows in set (0.00 sec)
MariaDB [empresa]> SELECT * FROM trabajadores ORDER BY cedula ASC;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
+----+---------+------------+---------------+---------------------+-----------------+
5 rows in set (0.00 sec)
MariaDB [empresa]> SELECT * FROM trabajadores ORDER BY cedula DESC;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
+----+---------+------------+---------------+---------------------+-----------------+
5 rows in set (0.00 sec)
MariaDB [empresa]> SELECT * FROM trabajadores ORDER BY fecha_de_nacimiento ASC;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
+----+---------+------------+---------------+---------------------+-----------------+
5 rows in set (0.00 sec)
MariaDB [empresa]> SELECT * FROM trabajadores ORDER BY fecha_de_nacimiento DESC;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
+----+---------+------------+---------------+---------------------+-----------------+
5 rows in set (0.00 sec)
MariaDB [empresa]>
en este ejemplo hemos ordenado columnas de tipo varchar, int y date, de manera ascendente y descendente mediante las ordenes «ASC» y «DESC» respectivamente.
Expresiones regulares
Las expresiones regulares son secuencia de caracteres que forman patrones de búsqueda, que en base a nuestra necesidad, brindan una solución bien flexible.
Patrón | Búsqueda |
---|---|
^ | Inicio de cadena de texto. |
$ | Fin de cadena de texto. |
. | Cualquier caracter. |
[…] | Cualquier caracter listado dentro de los corchetes. |
[^…] | Cualquier caracter menos los listado dentro de los corchetes. |
p1 | p2 | p3 | Alternar cualquiera de los tres patrones. |
* | Cero o más instancias a partir del elemento. |
+ | Uno o más instancias a partir del elemento. |
{ n } | n instancias a partir del elemento. |
{ m, n } | De m hasta n instancias a partir del elemento. |
Proseguimos con algunos ejemplos sobre su uso:
MariaDB [empresa]> SELECT * FROM trabajadores WHERE nombre REGEXP "^O";
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
+----+---------+------------+---------------+---------------------+-----------------+
2 rows in set (0.01 sec)
MariaDB [empresa]> SELECT * FROM trabajadores WHERE nombre REGEXP "[aeiou]$";
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
+----+---------+------------+---------------+---------------------+-----------------+
2 rows in set (0.01 sec)
MariaDB [empresa]> SELECT * FROM trabajadores WHERE nombre REGEXP "[yl]$";
+----+--------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+--------+------------+---------------+---------------------+-----------------+
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
+----+--------+------------+---------------+---------------------+-----------------+
2 rows in set (0.00 sec)
MariaDB [empresa]> SELECT * FROM trabajadores WHERE cedula REGEXP "^175";
+----+--------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+--------+------------+---------------+---------------------+-----------------+
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
+----+--------+------------+---------------+---------------------+-----------------+
3 rows in set (0.00 sec)
MariaDB [empresa]> SELECT * FROM trabajadores WHERE cedula REGEXP "^175|(66$|5$)";
+----+--------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+--------+------------+---------------+---------------------+-----------------+
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
+----+--------+------------+---------------+---------------------+-----------------+
4 rows in set (0.00 sec)
MariaDB [empresa]>
en la línea 13 mostramos las filas cuyo texto en la columna «nombre» comienzan con la letra «O», continuamos en la línea 22 mostrando las filas cuyo texto en la columna «nombre» finaliza con una vocal, en la línea 31 filtramos aquellos nombres que terminan en la letra «y» o «l», ejecutamos otra consulta en la linea 40, esta vez sobre una columna de tipo numérico, donde filtramos en la columna «cédula » todas aquellas cédulas que comienzan con los caracteres «175», finalizamos en la línea 50 mostrando todas aquellas cédulas que cumplen el patrón de comenzar con «175» o finalizar con «66» o «5».
Borrar contenido de una tabla sin modificar su estructura
Mediante el comando TRUNCATE podemos conformar una consulta en pos de borrar todos los registros de una tabla sin necesidad de eliminar la tabla o de modificar su estructura. Una consulta tipo sería la siguiente:
MariaDB [empresa]> TRUNCATE TABLE trabajadores;
Eliminar fila de una tabla
En caso de que necesitemos eliminar una fila específica de una tabla, el comando DELETE nos va a ayudar:
MariaDB [empresa]> SELECT * FROM trabajadores;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 1 | David | 1753664866 | 1753664866001 | 1983-01-01 | 5316.50 |
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
+----+---------+------------+---------------+---------------------+-----------------+
5 rows in set (0.00 sec)
MariaDB [empresa]> DELETE FROM trabajadores WHERE id = 1;
Query OK, 1 row affected (0.01 sec)
MariaDB [empresa]> SELECT * FROM trabajadores;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
+----+---------+------------+---------------+---------------------+-----------------+
4 rows in set (0.00 sec)
MariaDB [empresa]>
Eliminar columna de una tabla
MariaDB [empresa]> SELECT * FROM trabajadores;
+----+---------+------------+---------------+---------------------+-----------------+
| id | nombre | cedula | RUC | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------+---------------------+-----------------+
| 2 | Nery | 1753667366 | 1753667366001 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1353667345001 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1453667238001 | 1975-07-12 | 8615.00 |
| 5 | Gisel | 1753687292 | 1753687292001 | 1976-10-28 | 5700.00 |
+----+---------+------------+---------------+---------------------+-----------------+
4 rows in set (0.00 sec)
MariaDB [empresa]> ALTER TABLE trabajadores DROP ruc;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [empresa]> SELECT * FROM trabajadores;
+----+---------+------------+---------------------+-----------------+
| id | nombre | cedula | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------------+-----------------+
| 2 | Nery | 1753667366 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1975-07-12 | 8615.00 |
| 5 | Gisel | 1753687292 | 1976-10-28 | 5700.00 |
+----+---------+------------+---------------------+-----------------+
4 rows in set (0.01 sec)
MariaDB [empresa]>
usando el mismo comando podremos añadir una columna a una tabla ya creada:
MariaDB [empresa]> SELECT * FROM trabajadores;
+----+---------+------------+---------------------+-----------------+
| id | nombre | cedula | fecha_de_nacimiento | salario_mensual |
+----+---------+------------+---------------------+-----------------+
| 2 | Nery | 1753667366 | 1966-09-15 | 7326.00 |
| 3 | Olga | 1353667345 | 1954-01-26 | 4916.00 |
| 4 | Orlando | 1453667238 | 1975-07-12 | 8615.00 |
| 5 | Gisel | 1753687292 | 1976-10-28 | 5700.00 |
+----+---------+------------+---------------------+-----------------+
4 rows in set (0.00 sec)
MariaDB [empresa]> ALTER TABLE trabajadores ADD telefono VARCHAR(15) AFTER fecha_de_nacimiento;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [empresa]> SELECT * FROM trabajadores;
+----+---------+------------+---------------------+----------+-----------------+
| id | nombre | cedula | fecha_de_nacimiento | telefono | salario_mensual |
+----+---------+------------+---------------------+----------+-----------------+
| 2 | Nery | 1753667366 | 1966-09-15 | NULL | 7326.00 |
| 3 | Olga | 1353667345 | 1954-01-26 | NULL | 4916.00 |
| 4 | Orlando | 1453667238 | 1975-07-12 | NULL | 8615.00 |
| 5 | Gisel | 1753687292 | 1976-10-28 | NULL | 5700.00 |
+----+---------+------------+---------------------+----------+-----------------+
4 rows in set (0.00 sec)
MariaDB [empresa]>
ya en este punto solamente habría que insertarle datos a la nueva columna.
Eliminar una tabla
MariaDB [empresa]> DROP TABLE trabajadores;
Eliminar una base de datos
MariaDB [(none)]> DROP DATABASE trabajadores;
Comprobar integridad de una base de datos
root@ubuntu:/home/weiseratel# mysqlcheck -u root -p empresa
Enter password:
empresa.trabajadores OK
root@ubuntu:/home/weiseratel#
también podemos comprobar la integridad de todas las bases de datos de nuestro servidor, usando el mismo comando, con la siguiente modificación:
root@ubuntu:/home/weiseratel# mysqlcheck -u root -p --all-databases
Enter password:
empresa.trabajadores OK
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.gtid_slave_pos OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.index_stats OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.roles_mapping OK
mysql.servers OK
mysql.table_stats OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.transaction_registry OK
mysql.user OK
root@ubuntu:/home/weiseratel#
Realizar copia de seguridad de una base de datos o de todas
Las copias de seguridad o Backups, las vamos a realizar con el comando mysqldump. Este comando se instala con MariaDB, es parte de esta pero no de su terminal, es decir que se accede a él como un comando cualquiera del sistema. La sintaxis del mismo es la siguiente:
root@ubuntu:/home/weiseratel# mysqldump [opciones] nombre_base_de_datos [nombre_tabla]
root@ubuntu:/home/weiseratel# mysqldump [opciones] --databases nombre_base_de_datos
root@ubuntu:/home/weiseratel# mysqldump [opciones] --all-databases
siguiendo estas especificaciones:
root@ubuntu:/home/weiseratel# mysqldump -u root -p empresa > empresa.sql
Enter password:
root@ubuntu:/home/weiseratel# ls -lh
total 4.0K
-rw-r--r-- 1 root root 2.3K Jul 2 18:41 empresa.sql
root@ubuntu:/home/weiseratel#
hemos hecho una copia de seguridad de nuestra base de datos empresa, en la línea:
-rw-r--r-- 1 root root 2.3K Jul 2 18:41 empresa.sql
podemos observar el fichero que contiene toda la información de nuestra base de datos, este es nuestro backup. ¿Qué tal si necesitamos todo la información (todas las bases de datos) de nuestro servidor?
root@ubuntu:/home/weiseratel# mysqldump -u root -p --all-databases > server.sql
Enter password:
root@ubuntu:/home/weiseratel# ls -lh
total 472K
-rw-r--r-- 1 root root 2.3K Jul 2 18:41 empresa.sql
-rw-r--r-- 1 root root 468K Jul 2 18:45 server.sql
root@ubuntu:/home/weiseratel#
en la línea:
-rw-r--r-- 1 root root 468K Jul 2 18:45 server.sql
tenemos el fichero con todas las bases de datos.
Cuando se tienen grandes bases de datos muchas veces se hace necesario comprimir las copias de seguridad, esto lo podemos lograr con una sencilla modificación al comando usado en el ejemplo anterior:
root@ubuntu:/home/weiseratel# mysqldump -u root -p --all-databases | gzip -9 > server.sql.gz
Enter password:
root@ubuntu:/home/weiseratel# ls -lh
total 608K
-rw-r--r-- 1 root root 2.3K Jul 2 18:41 empresa.sql
-rw-r--r-- 1 root root 468K Jul 2 18:51 server.sql
-rw-r--r-- 1 root root 134K Jul 2 18:51 server.sql.gz
root@ubuntu:/home/weiseratel#
ya se habrán dado cuenta al comparar los archivos «server.sql.gz» con el anterior «server.sql«, hemos reducido la copia de seguridad de 511K a 137K, esto en el orden de los megas o gigas puede significar un ahorro significativo.
Podemos restaurar nuestras copias de seguridad de manera tan fácil como las creamos:
mysqldump -u root -p empresa < empresa.sql
en el caso de las copias de seguridad comprimidas, podemos o bien descomprimir el archivo con el comando gunzip o reducir estos pasos en uno solo:
gunzip < server.sql.gz | mysqldump -u root -p --all-databases
de esta forma descomprimimos el archivo cuyo flujo es direccionado a través de un «pipe» hacia el comando mysqldump.
Falta aún mucho por aprender en nuestro camino a convertirnos en iOS Developer. Suscríbete a nuestra lista de correo y síguenos en nuestras redes sociales. Mantente al tanto de todas nuestras publicaciones.
Espero que todo cuanto se ha dicho aquí, de una forma u otra le haya servido de aprendizaje, de referencia, que haya valido su preciado tiempo.
Este artículo, al igual que el resto, será revisado con cierta frecuencia en pos de mantener un contenido de calidad y actualizado.
¡Cualquier duda o sugerencia, ya sea errores a corregir o ejemplos a añadir, será más que bienvenida, necesaria!
Hola. Primero quiero agradecerte el tiempo que te tomaste para el presente articulo, fue de gran ayuda-
Segundo Podrías incluir por favor los comandos para re indexar las bases de datos.