MySQL 馃惉 : Funciones de Informaci贸n
MySQL provee una serie de funciones de informaci贸n que son esenciales para obtener detalles sobre el servidor y estructuras de bases de datos, tablas, columnas y otros objetos, as铆 como para consultar el estado y rendimiento del servidor. Estas funciones son 煤tiles para conocer el contexto de la bse de datos en uso y del servidor.
CHARSET
La funci贸n CHARSET()
nos devuelve el conjunto de caracteres del argumento de la cadena proporcionada:
1
SELECT CHARSET('abc');
El resultado puede ser algo como lo siguiente:
1
2
3
4
5
+----------------+
| CHARSET('abc') |
+----------------+
| utf8mb4 |
+----------------+
VERSION
La funci贸n VERSION()
nos devuelve una cadena que indica la versi贸n del servidor MySQL:
1
SELECT VERSION();
El resultado puede ser algo como lo siguiente:
1
2
3
4
5
+-----------+
| VERSION() |
+-----------+
| 8.0.27 |
+-----------+
BECHMARK
La funci贸n BECHMARK()
permite medir el tiempo de ejecuci贸n de una expresi贸n, 煤til para medir el rendimiento de ciertas consultas:
1
SELECT BECHMARK(1000, SHA1('test'));
mysql> SELECT BENCHMARK(1000000, SHA1('test'));
+----------------------------------+
| BENCHMARK(1000000, SHA1('test')) |
+----------------------------------+
| 0 |
+----------------------------------+
1 row in set (1.65 sec)
mysql>
mysql> SELECT BENCHMARK(10000000, SHA1('test'));
+-----------------------------------+
| BENCHMARK(10000000, SHA1('test')) |
+-----------------------------------+
| 0 |
+-----------------------------------+
1 row in set (16.63 sec)
Base de Datos Especial (INFORMATION_SCHEMA)
Aunque no es una funci贸n espec铆fica, MySQL tiene una base de datos especial llamada INFORMATION_SCHEMA
, que contiene varias vistas que proporcionan informaci贸n sobre las bases de datos, tablas, columnas y otros objetos del sistema.
Ejemplos de uso
- Obtener las tablas de una base de datos:
1
SELECT table_name FROM information_schema.tables WHERE table_schema = 'mysql';
La consulta anterior nos mostrar铆a un resultado como el siguiente:
Mostrar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
+------------------------------------------------------+
| TABLE_NAME |
+------------------------------------------------------+
| columns_priv |
| component |
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| password_history |
| plugin |
| procs_priv |
| proxies_priv |
| replication_asynchronous_connection_failover |
| replication_asynchronous_connection_failover_managed |
| replication_group_configuration_version |
| replication_group_member_actions |
| role_edges |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+------------------------------------------------------+
- Obtener las columnas de una tabla
1
SELECT column_name FROM information_schema.columns WHERE table_name = '<table_name>';
En la consulta anterior debemos remplazar
<table_name>
por el nombre de la tabla de nuestro inter茅s y esa tabla debe existir en alguna base de datos en el servidor.
Mi lema es