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 las mismas 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 finalizar 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, serás capaz de:

  • 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 tus bases de datos.
  • Comprender la sensibilidad a mayúsculas y minúsculas de los nombres de las 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 de LabEx, utilizarás un sistema Ubuntu Linux. La terminal debería estar abierta, pero si no es así, 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 de LabEx, no necesitas introducir una contraseña para el usuario root.

Captura de pantalla de la terminal del cliente MySQL

Una vez dentro del cliente de MySQL, verás un prompt que se ve así: MariaDB [(none)]>. Esto indica que estás conectado al servidor MariaDB (que es una bifurcación o fork 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 disponibles actualmente 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 sobre cuentas de usuario y privilegios.
  • performance_schema: Una base de datos para monitorear la ejecución del servidor MySQL a bajo nivel.
  • 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 en los nombres de bases de datos

Un concepto importante que debes entender en MySQL es que los nombres de las bases de datos distinguen entre 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 usar todas las letras en minúsculas para los nombres de las bases de datos a fin de evitar posibles problemas de sensibilidad a mayúsculas y minúsculas.

Creación de bases de datos usando 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 entrar en el prompt de MySQL.

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

exit

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

sudo mysqladmin -u root create hello_world2

En esta máquina virtual de LabEx, usa sudo con mysqladmin porque la cuenta de base de datos root utiliza autenticación de socket local.

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

  • sudo: Ejecuta el comando con los privilegios del sistema necesarios.
  • -u root: Especifica que nos estamos conectando como el usuario root de la base de datos.
  • create: Es la operación que estamos realizando.
  • hello_world2: Es el nombre de la base de datos que estamos creando.

Ahora, volvamos a entrar al cliente de MySQL para verificar que nuestra nueva base de datos se haya creado:

sudo mysql -u root

Una vez dentro del 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 particularmente ú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 crearlas. Mantendremos solo la base de datos 'Hello_World' y eliminaremos las demás.

Eliminación de una base de datos usando 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: Sé extremadamente cauteloso al usar el comando DROP DATABASE. Este elimina permanentemente la base de datos y todo su contenido sin pedir confirmación. En un entorno de producción, normalmente tendrías salvaguardas y copias de seguridad antes de realizar tales operaciones.

Eliminación de una base de datos usando 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:

sudo mysqladmin -u root drop hello_world2

Se te pedirá que confirmes la acción:

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 de confirmación adicional puede ayudar a prevenir eliminaciones accidentales de bases de datos.

Ahora, vuelve a entrar al 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 limpiado 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 realizará 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;

Como 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 paso final, exploraremos cómo recuperar varios tipos de metadatos de MySQL. Los metadatos son "datos sobre los datos": proporcionan información sobre el propio sistema de base de datos, en lugar de los datos almacenados en él. Esta información puede ser crucial para comprender y gestionar tu entorno MySQL.

Versión del servidor

Para obtener la versión del servidor 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 al solucionar 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 hay ninguna base de datos seleccionada:

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

Esto puede ser útil cuando trabajas 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 del servidor y variables

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 MySQL, incluidos varios contadores y estadísticas.

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

SHOW VARIABLES;

Este comando te muestra cómo está configurado tu servidor MySQL, incluidos los 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 la terminal o filtrar información específica. Por ejemplo, para ver las variables relacionadas con el buffer pool:

SHOW VARIABLES LIKE '%buffer%';

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

Por ejemplo, podrías usar SHOW STATUS para verificar la cantidad 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 indica cuántas sentencias ha ejecutado el servidor desde que se inició.

De manera similar, podrías usar SHOW VARIABLES para verificar configuraciones importantes como el tamaño máximo permitido de paquete:

SHOW VARIABLES LIKE 'max_allowed_packet';

Lo cual podría darte 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 las bases de datos en MySQL.
  4. Eliminación segura de bases de datos y la importancia de la precaución al hacerlo.
  5. Selección y cambio entre bases de datos.
  6. Recuperación de metadatos importantes sobre el servidor MySQL y las bases de datos.

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