Gestión Fundamental de Esquemas de Base de Datos en MySQL

Creación de Bases de Datos

La creación de una base de datos es el primer paso en la gestión de datos en MySQL. Se pueden definir diferentes configuraciones, como el juego de caracteres y la colación, en el momento de la creación.

mysql> CREATE DATABASE mi_esquema_simple;
Query OK, 1 row affected (0.01 sec)

mysql> CREATE DATABASE mi_esquema_utf8 CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.01 sec)

mysql> CREATE DATABASE mi_esquema_con_colacion CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.01 sec)

En estos ejemplos, hemos visto cómo crear bases de datos:

  • mi_esquema_simple: Utiliza la configuración de juego de caracteres y colación por defecto del servidor MySQL.
  • mi_esquema_utf8: Especifica utf8mb4 como juego de caracteres, que es recomendado para soportar una amplia gama de caracteres, incluyendo emojis.
  • mi_esquema_con_colacion: Define explícitamente tanto el juego de caracteres (utf8mb4) como la colación (utf8mb4_unicode_ci), que determina las reglas de comparación y ordenamiento de cadenas.

Juegos de Caracteres y Colaciones

Conceptos Clave

  • Juego de Caracteres (Character Set): Es un conjunto de símbolos y codificaciones que define cómo se almacenan los datos de texto en la base de datos. Por ejemplo, utf8mb4 permite almacenar prácticamente cualquier carácter mundial.
  • Colación (Collation): Es un conjunto de reglas para comparar y ordenar cadenas de caracteres dentro de un juego de caracteres específico. Las colaciones pueden ser sensibles o insensibles a mayúsculas/minúsculas, acentos, etc.

Vreificación de Configuraciones

Para entender las configuraciones actuales y disponibles, podemos utilizar las siguientes sentencias:

-- Ver el juego de caracteres y colación del servidor por defecto
mysql> SHOW VARIABLES LIKE 'character_set_server';
mysql> SHOW VARIABLES LIKE 'collation_server';

-- Listar todos los juegos de caracteres soportados por MySQL
mysql> SHOW CHARACTER SET;

-- Listar todas las colaciones disponibles
mysql> SHOW COLLATION;

Para ver la configuración específica de una base de datos ya creada, usamos:

-- Ver la declaración de creación de una base de datos
mysql> SHOW CREATE DATABASE mi_esquema_con_colacion;
+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Database                | Create Database                                                                                                                                          |
+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
| mi_esquema_con_colacion | CREATE DATABASE `mi_esquema_con_colacion` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ |
+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+

Impacto de la Colación en las Consultas

La elección de una colación afecta directamente cómo MySQL realiza las comparaciones de cadenas, influyendo en la sensibilidad a mayúsculas/minúsculas y acentos. A continuación, un ejemplo que ilustra la diferencia:

-- Crear una base de datos con colación binaria (sensible a mayúsculas/minúsculas)
mysql> CREATE DATABASE db_sensible_a_mayusculas CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
mysql> USE db_sensible_a_mayusculas;
mysql> CREATE TABLE productos (id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50));
mysql> INSERT INTO productos (nombre) VALUES ('Manzana'), ('manzana'), ('MANZANA');
mysql> SELECT * FROM productos WHERE nombre = 'manzana';
+----+---------+
| id | nombre  |
+----+---------+
|  2 | manzana |
+----+---------+
1 row in set (0.00 sec)

-- Crear una base de datos con colación insensible a mayúsculas/minúsculas
mysql> CREATE DATABASE db_insensible_a_mayusculas CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
mysql> USE db_insensible_a_mayusculas;
mysql> CREATE TABLE articulos (id INT AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(50));
mysql> INSERT INTO articulos (titulo) VALUES ('Libro'), ('libro'), ('LIBRO');
mysql> SELECT * FROM articulos WHERE titulo = 'libro';
+----+-------+
| id | titulo |
+----+-------+
|  1 | Libro  |
|  2 | libro  |
|  3 | LIBRO  |
+----+-------+
3 rows in set (0.00 sec)

Como se observa, en db_sensible_a_mayusculas, la búsqueda de 'manzana' solo devuelve la fila que coincide exactamente. En contraste, en db_insensible_a_mayusculas, la búsqueda de 'libro' devuelve todas las variaciones de mayúsculas/minúsculas debido a la colación utf8mb4_general_ci.

Administración de Bases de Datos

Visualizacción de Bases de Datos

-- Listar todas las bases de datos en el servidor
mysql> SHOW DATABASES;

-- Ver la base de datos actualmente en uso
mysql> SELECT DATABASE();

Es una buena práctica encerrar los nombres de base de datos y tablas en comillas inversas (nombre_db) para evitar conflictos con palabras clave de SQL.

Modificación de Bases de Datos

Se pueden alterar las propiedades de una base de datos existente, como su juego de caracteres o colación:

mysql> ALTER DATABASE mi_esquema_simple CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 0 rows affected (0.00 sec)

Eliminación de Bases de Datos

Para eliminar una base de datos y todo su contenido, se utiliza la sentencia DROP DATABASE. Esta acción es irreversible y debe usarse con extrema precaución.

mysql> DROP DATABASE mi_esquema_a_borrar;
Query OK, 0 rows affected (0.01 sec)

Copia de Seguridad y Restauración

Copia de Seguridad (Backup) con mysqldump

mysqldump es una utilidad de línea de comandos utilizada para volcar una base de datos MySQL en un archivo SQL. Este comando se ejecuta desde la terminal del sistema operativo, no dentro del cliente MySQL.

# Sintaxis básica para una sola base de datos:
mysqldump -u [usuario] -p [nombre_db] > /ruta/al/archivo_backup.sql

# Ejemplo:
mysqldump -u root -p mi_esquema_utf8 > /home/user/backups/mi_esquema_utf8_backup.sql

# Para hacer copia de seguridad de múltiples bases de datos:
mysqldump -u [usuario] -p --databases [db1] [db2] ... > /ruta/al/archivo_backup_multiple.sql

# Ejemplo:
mysqldump -u root -p --databases mi_esquema_simple mi_esquema_utf8 > /home/user/backups/varias_dbs_backup.sql

El archivo .sql resultante contiene las sentencias CREATE DATABASE, CREATE TABLE, INSERT, etc., necesarias para recrear la base de datos y sus datos.

Restauración de Bases de Datos

Para restaurar una base de datos desde un archivo de copia de seguridad .sql, se puede usar el cliente MySQL directamente desde la línea de comandos o a través del comando SOURCE dentro del cliente MySQL.

# Restauración desde la línea de comandos (se recomienda para restauraciones completas):
mysql -u [usuario] -p < /ruta/al/archivo_backup.sql

# Ejemplo:
mysql -u root -p < /home/user/backups/mi_esquema_utf8_backup.sql

# Restauración desde el cliente MySQL (útil si ya estás conectado y la DB existe):
mysql> USE mi_esquema_existente; -- Si el backup no crea la DB o quieres restaurar en una existente
mysql> SOURCE /ruta/al/archivo_backup.sql;

# Ejemplo:
mysql> SOURCE /home/user/backups/mi_esquema_utf8_backup.sql;

Monitoreo de Conexiones

Para visualizar las conexiones activas al servidor MySQL, incluyendo el usuario, la base de datos utilizada y la consulta en ejecución, se puede usar:

mysql> SHOW PROCESSLIST;

Etiquetas: MySQL SQL BaseDeDatos JuegosDeCaracteres Colaciones

Publicado el 7-23 16:01