Fundamentos de gestión de bases de datos con MySQL

MySQLBeginner
Practicar Ahora

Introducción

En este laboratorio, exploraremos los conceptos fundamentales de la gestión de bases de datos utilizando MySQL. Cubriremos la creación y eliminación de bases de datos, la selección de bases de datos y la recuperación de metadatos. Estas habilidades son esenciales para cualquier persona que trabaje con bases de datos, desde principiantes hasta desarrolladores experimentados. Al final de este laboratorio, tendrás una base sólida en las operaciones básicas de bases de datos MySQL.

Objetivos de aprendizaje

Al completar este laboratorio, podrás:

  • Crear y eliminar bases de datos utilizando varios métodos
  • Seleccionar y cambiar entre bases de datos
  • Recuperar metadatos importantes sobre tu servidor MySQL y bases de datos
  • Comprender la sensibilidad a mayúsculas y minúsculas de los nombres de bases de datos en MySQL

Creación y listado de bases de datos

En este paso, aprenderemos cómo crear bases de datos y listar las existentes utilizando el cliente de línea de comandos de MySQL. Esta es una habilidad fundamental para cualquier administrador de bases de datos o desarrollador.

Primero, abramos una ventana de terminal. En el entorno LabEx, estarás utilizando un sistema Ubuntu Linux. La terminal ya debería estar abierta, pero si no lo está, puedes abrirla haciendo clic en el icono de la terminal.

Ahora, iniciemos el cliente de MySQL:

sudo mysql -u root

En la máquina virtual (VM) de LabEx, no es necesario ingresar una contraseña para el usuario root.

Captura de pantalla del terminal del cliente de MySQL

Una vez que estés en el cliente de MySQL, verás un indicador que se ve así: MariaDB [(none)]>. Esto indica que estás conectado al servidor MariaDB (que es una bifurcación de MySQL), pero aún no has seleccionado una base de datos específica.

Listado de bases de datos disponibles

Comencemos listando las bases de datos disponibles en tu servidor MySQL:

SHOW DATABASES;

Deberías ver una salida similar a esta:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.000 sec)

Este comando lista todas las bases de datos actualmente disponibles en el servidor. Analicemos qué son estas bases de datos predeterminadas:

  • information_schema: Una base de datos que proporciona acceso a los metadatos de la base de datos.
  • mysql: La base de datos del sistema que contiene información de cuentas de usuario y privilegios.
  • performance_schema: Una base de datos para monitorear la ejecución del servidor MySQL a un nivel bajo.
  • sys: Una base de datos que proporciona un conjunto de objetos para ayudar a interpretar los datos recopilados por el Performance Schema.

Creación de una base de datos

Ahora, creemos una nueva base de datos llamada 'Hello_World'. En MySQL, utilizamos el comando CREATE DATABASE para esto:

CREATE DATABASE Hello_World;

Después de ejecutar este comando, MySQL responderá con:

Query OK, 1 row affected (0.000 sec)

Esto significa que la base de datos se creó correctamente. Para confirmar, listemos las bases de datos nuevamente:

SHOW DATABASES;

Ahora deberías ver 'Hello_World' en la lista:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.000 sec)

¡Genial! Acabas de crear tu primera base de datos.

Sensibilidad a mayúsculas y minúsculas de los nombres de bases de datos

Un concepto importante para entender en MySQL es que los nombres de las bases de datos son sensibles a mayúsculas y minúsculas. Esto significa que 'Hello_World' y 'hello_world' se tratan como dos bases de datos diferentes. Demostremos esto:

CREATE DATABASE hello_world;
SHOW DATABASES;

Ahora deberías ver tanto 'Hello_World' como 'hello_world' en la lista:

MariaDB [(none)]> CREATE DATABASE hello_world;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.000 sec)

Esto demuestra que 'Hello_World' y 'hello_world' se tratan como dos bases de datos distintas. En tus diseños de bases de datos, generalmente es una buena práctica utilizar convenciones de nomenclatura consistentes para evitar confusiones. Muchos desarrolladores prefieren utilizar solo letras minúsculas para los nombres de las bases de datos para evitar posibles problemas de sensibilidad a mayúsculas y minúsculas.

Creación de bases de datos utilizando mysqladmin

En este paso, exploraremos un método alternativo para crear bases de datos utilizando la herramienta mysqladmin. Esta herramienta es una utilidad de línea de comandos que te permite realizar algunas operaciones administrativas sin ingresar al indicador de MySQL.

Primero, salgamos del cliente de MySQL. Puedes hacer esto escribiendo exit o quit y presionando Enter:

exit

Ahora que estamos de vuelta en el indicador de comando normal, usemos mysqladmin para crear una nueva base de datos:

mysqladmin -u root -p create hello_world2

Cuando se te solicite una contraseña, simplemente presiona Enter (recuerda, en la VM de LabEx, el usuario root de MySQL no tiene una contraseña configurada).

El comando mysqladmin que acabamos de usar se desglosa de la siguiente manera:

  • -u root: Esto especifica que nos estamos conectando como el usuario root.
  • -p: Esto le dice a mysqladmin que solicite una contraseña.
  • create: Esta es la operación que estamos realizando.
  • hello_world2: Este es el nombre de la base de datos que estamos creando.

Ahora, volvamos a iniciar sesión en el cliente de MySQL para verificar que se haya creado nuestra nueva base de datos:

sudo mysql -u root

Una vez que estés en el cliente de MySQL, lista las bases de datos:

SHOW DATABASES;

Deberías ver 'hello_world2' en la lista:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world        |
| hello_world2       |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.000 sec)

La herramienta mysqladmin proporciona una forma rápida de crear bases de datos directamente desde la línea de comandos, lo cual puede ser útil para tareas de scripting y automatización. Es especialmente útil cuando necesitas crear bases de datos como parte de un script más grande o un proceso automatizado.

Eliminación de bases de datos

Ahora que hemos creado varias bases de datos, aprendamos cómo eliminarlas. En la gestión de bases de datos, es tan importante saber cómo eliminar bases de datos como saber cómo crearlas. Mantendremos solo la base de datos 'Hello_World' y eliminaremos las demás.

Eliminación de una base de datos utilizando el cliente de MySQL

Inicia sesión en el cliente de MySQL si aún no lo has hecho:

sudo mysql -u root

Ahora, eliminemos la base de datos 'hello_world':

DROP DATABASE hello_world;
SHOW DATABASES;

Deberías ver que 'hello_world' ya no está en la lista:

MariaDB [(none)]> DROP DATABASE hello_world;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world2       |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.000 sec)

Nota: Ten mucha precaución cuando uses el comando DROP DATABASE. Elimina permanentemente la base de datos y todo su contenido sin pedir confirmación. En un entorno de producción, normalmente tendrías medidas de seguridad y copias de seguridad antes de realizar tales operaciones.

Eliminación de una base de datos utilizando mysqladmin

Ahora, usemos mysqladmin para eliminar la base de datos 'hello_world2'. Este método se considera más seguro porque solicita confirmación antes de eliminar la base de datos.

Sal del cliente de MySQL escribiendo exit o quit, luego ejecuta el siguiente comando en tu terminal:

mysqladmin -u root -p drop hello_world2

Se te pedirá que confirmes la acción:

Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'hello_world2' database [y/N] y
Database "hello_world2" dropped

Escribe 'y' y presiona Enter para confirmar. Este paso adicional de confirmación puede ayudar a prevenir eliminaciones accidentales de bases de datos.

Ahora, vuelve a iniciar sesión en el cliente de MySQL y verifica que 'hello_world2' haya sido eliminada:

SHOW DATABASES;

Deberías ver:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.000 sec)

Hemos eliminado con éxito nuestras bases de datos adicionales, dejando solo las que necesitamos.

Selección y uso de bases de datos

Ahora que hemos creado y eliminado bases de datos, aprendamos cómo seleccionar y usar una base de datos específica. Esta es una habilidad crucial, ya que la mayor parte de tu trabajo en MySQL implicará operar dentro de una base de datos específica.

Selección de una base de datos

Para seleccionar una base de datos con la que trabajar, utiliza el comando USE seguido del nombre de la base de datos:

USE Hello_World;

Deberías ver:

Database changed

Esto indica que ahora estás trabajando dentro de la base de datos 'Hello_World'. Cualquier comando posterior que ejecutes se ejecutará en el contexto de esta base de datos, a menos que especifiques lo contrario.

Listado de tablas en una base de datos

Para ver las tablas en la base de datos actual, utiliza el comando SHOW TABLES;:

SHOW TABLES;

Dado que aún no hemos creado ninguna tabla en nuestra base de datos 'Hello_World', verás:

Empty set (0.00 sec)

Esto es normal para una base de datos nueva. A medida que crees tablas, aparecerán en esta lista.

Cambiemos a una base de datos diferente y listemos sus tablas para ver cómo funciona esto con una base de datos poblada:

USE mysql;
SHOW TABLES;

Verás una lista de tablas en la base de datos del sistema 'mysql':

MariaDB [mysql]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| global_priv               |
| gtid_slave_pos            |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| index_stats               |
| innodb_index_stats        |
| innodb_table_stats        |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| roles_mapping             |
| servers                   |
| slow_log                  |
| table_stats               |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| transaction_registry      |
| user                      |
+---------------------------+
31 rows in set (0.001 sec)

Esto demuestra cómo cambiar entre bases de datos y ver su contenido. La base de datos 'mysql' contiene tablas del sistema que MySQL utiliza para gestionar permisos, cuentas de usuario y otros datos internos. En tus propias aplicaciones, crearás y gestionarás tus propias tablas dentro de tus bases de datos personalizadas.

Recuperación de metadatos de MySQL

En este último paso, exploraremos cómo recuperar varios tipos de metadatos de MySQL. Los metadatos son "datos sobre datos"; proporcionan información sobre el sistema de base de datos en sí, en lugar de los datos almacenados en él. Esta información puede ser crucial para comprender y gestionar tu entorno de MySQL.

Versión del servidor

Para obtener la versión del servidor de MySQL, utiliza:

SELECT VERSION();

Verás una salida similar a:

MariaDB [mysql]> SELECT VERSION();
+----------------------------------+
| VERSION()                        |
+----------------------------------+
| 10.6.12-MariaDB-0ubuntu0.22.04.1 |
+----------------------------------+
1 row in set (0.000 sec)

Esta información es útil cuando necesitas saber qué características están disponibles en tu versión actual de MySQL o cuando solucionas problemas específicos de la versión.

Base de datos actual

Para ver qué base de datos estás utilizando actualmente:

SELECT DATABASE();

La salida mostrará el nombre de la base de datos actual o NULL si no se ha seleccionado ninguna base de datos:

MariaDB [mysql]> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| mysql      |
+------------+
1 row in set (0.000 sec)

Esto puede ser útil cuando estás trabajando con múltiples bases de datos y necesitas confirmar en cuál estás operando actualmente.

Usuario actual

Para ver el usuario actual:

SELECT USER();

Verás una salida como:

MariaDB [mysql]> SELECT USER();
+----------------+
| USER()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.000 sec)

Esto muestra el usuario de MySQL con el que has iniciado sesión y el host desde el que te estás conectando. Es útil para verificar tus permisos actuales y los detalles de la conexión.

Estado y variables del servidor

Para ver todos los indicadores de estado del servidor:

SHOW STATUS;

Este comando proporciona una gran cantidad de información sobre el estado actual del servidor de MySQL, incluyendo varios contadores y estadísticas.

Para ver todas las variables de configuración del servidor:

SHOW VARIABLES;

Este comando muestra cómo está configurado tu servidor de MySQL, incluyendo ajustes para el uso de memoria, límites de conexión y muchos otros parámetros.

Ambos comandos producirán una salida extensa. Puedes desplazarte por ella en el terminal o filtrar para obtener información específica. Por ejemplo, para ver las variables relacionadas con el grupo de búferes:

SHOW VARIABLES LIKE '%buffer%';

Estos comandos proporcionan información extensa sobre la configuración y el estado actual de tu servidor de MySQL. Comprender estos metadatos puede ser crucial para optimizar el rendimiento, solucionar problemas y asegurarte de que tu servidor esté configurado correctamente para tus necesidades.

Por ejemplo, podrías usar SHOW STATUS para comprobar el número de consultas que se han ejecutado:

SHOW STATUS LIKE 'Questions';

Esto podría darte una salida como:

MariaDB [mysql]> SHOW STATUS LIKE 'Questions';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Questions     | 15    |
+---------------+-------+
1 row in set (0.001 sec)

Esto te dice cuántas declaraciones se han ejecutado por el servidor desde que se inició.

Del mismo modo, podrías usar SHOW VARIABLES para comprobar ajustes de configuración importantes como el tamaño máximo permitido de paquete:

SHOW VARIABLES LIKE 'max_allowed_packet';

Lo que podría dar una salida como:

MariaDB [mysql]> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.001 sec)

Esto muestra el tamaño máximo de un paquete o cualquier cadena generada/intermedia, lo cual puede ser importante cuando se trabaja con grandes cantidades de datos.

Comprender cómo recuperar e interpretar estos metadatos es una habilidad valiosa para cualquier administrador de bases de datos o desarrollador. Te permite obtener información sobre el comportamiento y el rendimiento de tu sistema de base de datos, lo cual puede ser crucial para la optimización y la resolución de problemas.

Resumen

En este laboratorio, hemos cubierto aspectos fundamentales de la gestión de bases de datos en MySQL:

  1. Creación de bases de datos utilizando tanto el cliente de MySQL como la herramienta mysqladmin
  2. Listado de bases de datos existentes y comprensión de sus propósitos
  3. Comprensión de la sensibilidad a mayúsculas y minúsculas de los nombres de bases de datos en MySQL
  4. Eliminación segura de bases de datos y la importancia de tener precaución al hacerlo
  5. Selección y cambio entre bases de datos
  6. Recuperación de metadatos importantes sobre el servidor y las bases de datos de MySQL

Estas habilidades forman la base para trabajar con bases de datos de MySQL. A medida que avances en tu viaje con bases de datos, construirás sobre estos conceptos básicos para realizar operaciones y tareas de gestión de bases de datos más complejas.