Operaciones con Bases de Datos en MySQL

  1. Creación de Bases de Datos

Sintaxis:


CREATE DATABASE [IF NOT EXISTS] nombre_db [especificacion_creacion [, 
especificacion_creacion] ...]
especificacion_creacion:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

Notas:

  • Las palabras en mayúscula son palabras clave
  • Los corchetes [] indican elementos opcionales
  • CHARACTER SET: Especifica el conjunto de caracteres que utilizará la base de datos
  • COLLATE: Define las reglas de comparación para el conjunto de caracteres
  1. Ejemplos de Creación de Bases de Datos

Crear una base de datos llamada bd_ejemplo:


create database bd_ejemplo;

Nota: Al no especificar conjunto de caracteres y reglas de comparación, el sistema utiliza el conjunto de caracteres predeterminado utf8 con reglas de comparación utf8_general_ci.

Crear una base de datos llamada bd_texto utilizando el conjunto de caracteres utf8:


create database bd_texto charset=utf8;

Crear una base de datos llamada bd_completa con conjunto de caracteres utf8 y reglas de comparación específicas:


create database bd_completa charset=utf8 collate utf8_general_ci;
  1. Conjuntos de Caracteres y Reglas de Comparación

3.1 Verificar el conjunto de caracteres y reglas de comparación predeterminadas del sistema


show variables like 'character_set_database';
show variables like 'collation_database';

3.2 Verificar los conjuntos de caracteres soportados por la base de datos


show charset;

Los conjuntos de caracteres controlan qué idiomas pueden ser utilizados. Por ejemplo, utf8 permite el uso de caracteres chinos.

3.3 Verificar las reglas de comparación soportadas por la base de datos


show collation;

3.4 Impacto de las reglas de comparación en la base de datos

Comparación que no distingue entre mayúsculas y minúsculas:


create database bd_sensible collate utf8_general_ci;
use bd_sensible;
create table personas(nombre varchar(20));
insert into personas values('a');
insert into personas values('A');
insert into personas values('b');
insert into personas values('B');

Comparación que distingue entre mayúsculas y minúsculas:


create database bd_binaria collate utf8_bin;
use bd_binaria
create table personas(nombre varchar(20));
insert into personas values('a');
insert into personas values('A');
insert into personas values('b');
insert into personas values('B');

Consultas:

Consulta sin distinguir mayúsculas/minúsculas y resultados:


mysql> use bd_sensible;
mysql> select * from personas where nombre='a';
+--------+
| nombre |
+--------+
| a      |
| A      |
+--------+
2 filas en el conjunto (0.01 sec)

Consulta distinguiendo mayúsculas/minúsculas y resultados:


mysql> use bd_binaria;
mysql> select * from personas where nombre='a';
+--------+
| nombre |
+--------+
| a      |
+--------+
2 filas en el conjunto (0.01 sec)

Ordenamiento de resultados:

Ordenamiento sin distinguir mayúsculas/minúsculas:


mysql> use bd_sensible;
mysql> select * from personas order by nombre;
+--------+
| nombre |
+--------+
| a      |
| A      |
| b      |
| B      |
+--------+

Ordenamiento distinguiendo mayúsculas/minúsculas:


mysql> use bd_binaria;
mysql> select * from personas order by nombre;
+--------+
| nombre |
+--------+
| A      |
| B      |
| a      |
| b      |
+--------+
  1. Manipulación de Bases de Datos

4.1 Verificar bases de datos existentes


show databases;

4.2 Mostrar sentencia de creación


show create database nombre_base_datos;

Ejemplo:


mysql> show create database mi_prueba;
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| mi_prueba| CREATE DATABASE `mi_prueba` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+

Notas:

  • MySQL recomienda usar palabras clave en mayúsculas, aunque no es obligatorio.
  • Las comillas invertidas `` alrededor del nombre de la base de datos evitan conflictos si el nombre coincide con una palabra clave.
  • /*!40100 default… */ no es un comentario, indica que si la versión de MySQL es superior a 4.01, se ejecuta esta sentencia.

4.3 Modificar una base de datos

Sintaxis:


ALTER DATABASE nombre_db
[especificacion_modificacion [,especificacion_modificacion]...]
especificacion_modificacion:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

Nota: La modificación de bases de datos se refiere principalmente al cambio de conjunto de caracteres y reglas de comparación.

Ejemplo: Cambiar el conjunto de caracteres de mi_prueba a gbk


mysql> alter database mi_prueba charset=gbk;
Query OK, 1 fila afectada (0.00 sec)
mysql> show create database mi_prueba;
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| mi_prueba| CREATE DATABASE `mi_prueba` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+----------------------------------------------------------------+

4.4 Eliminar una base de datos


DROP DATABASE [IF EXISTS] nombre_db;

Consecuencias después de la eliminación:

  • La base de datos ya no es visible internamente
  • La carpeta correspondiente de la base de datos se elimina, eliminación en cascada de todas las tablas internas

Advertencia: No elimine bases de datos arbitraraimente.

4.5 Respaldo y Recuperación

4.5.1 Respaldo

Sintaxis:


# mysqldump -P3306 -u usuario -p contraseña -B nombre_base_datos > ruta_archivo_respaldo

Ejemplo: Respaldo de la base de datos mi_prueba a un archivo (salir de la conexión)


# mysqldump -P3306 -u root -p123456 -B mi_prueba > D:/mi_prueba.sql

El archivo mi_prueba.sql contendrá las sentencias para crear la base de datos, tablas e importar datos.

4.5.2 Recuperación


mysql> source D:/mi_prueba.sql;

4.5.3 Consideraciones

Si se respalda una tabla específica en lugar de toda la base de datos:


# mysqldump -u usuario -p nombre_base_datos tabla1 tabla2 > D:/respaldo_tablas.sql

Respaldo de múltiples bases de datos simultáneamente:


# mysqldump -u usuario -p -B bd1 bd2 ... > ruta_respaldo

Si se realiza un respaldo sin el parámetro -B, al recuperar es necesario crear primero una base de datos vacía, seleccionarla y luego usar source para la recuperación.

4.6 Verificar Conexiones Activas

Sintaxis:


show processlist

Ejemplo:


mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
| 2  | root | localhost | test | Sleep   | 1386 |       | NULL             |
| 3  | root | localhost | NULL | Query   | 0    | NULL  | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+

Esta instrucción muestra los usuarios conectados actualmente a MySQL. Si se detecta un usuario desconocido, podría indicar un acceso no autorizado a la base de datos. Cuando el rendimiento de la base de datos disminuya, esta herramienta puede ayudar a identificar problemas de conexión.

Etiquetas: MySQL bases de datos SQL caracteres collation

Publicado el 6-5 00:12