MySQL Metadatos
Los metadatos de MySQL son información sobre la base de datos y sus objetos (como tablas, columnas, índices, etc.).
Los metadatos se almacenan en tablas del sistema, que se encuentran en la base de datos information_schema de MySQL. Consultando estas tablas del sistema, puedes obtener información detallada sobre la estructura de la base de datos, los objetos y otra información relacionada.
Es posible que desees conocer los siguientes tres tipos de información de MySQL:
- Información de resultados de consultas:El número de registros afectados por sentencias SELECT, UPDATE o DELETE.
- Información de bases de datos y tablas:Contiene información estructural de la base de datos y sus tablas.
- Información del servidor MySQL:Contiene el estado actual del servidor de base de datos, número de versión, etc.
En el prompt de comandos de MySQL, podemos obtener fácilmente la información del servidor anterior, pero si usas lenguajes de script como Perl o PHP, necesitas llamar a funciones de interfaz específicas para obtenerla; a continuación lo detallaremos.
A continuación se presentan algunas consultas comunes de metadatos de MySQL:
Ver todas las bases de datos:
SHOW DATABASES;
Seleccionar base de datos:
USE database_name;
Ver todas las tablas de una base de datos:
SHOW TABLES;
Ver la estructura de una tabla:
DESC table_name;
Ver los índices de una tabla:
SHOW INDEX FROM table_name;
Ver la sentencia de creación de una tabla:
SHOW CREATE TABLE table_name;
Ver el número de filas de una tabla:
SELECT COUNT(*) FROM table_name;
Ver información de las columnas:
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
En las sentencias SQL anteriores, 'your_database_name' y 'your_table_name' son el nombre de tu base de datos y el nombre de tu tabla, respectivamente.
Ver información de claves foráneas:
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name'
AND REFERENCED_TABLE_NAME IS NOT NULL;Reemplaza 'your_database_name' y 'your_table_name' en las sentencias SQL anteriores por el nombre real de la base de datos y de la tabla.
Base de datos information_schema
information_schema es una base de datos del sistema dentro de MySQL. Contiene información de metadatos sobre el servidor de base de datos, almacenada en forma de tablas en la base de datos information_schema.
Tabla SCHEMATA
Almacena información sobre las bases de datos, como nombre de la base de datos, conjunto de caracteres, reglas de ordenamiento, etc.
SELECT * FROM information_schema.SCHEMATA;
Tabla TABLES
Contiene información sobre todas las tablas de la base de datos, como nombre de la tabla, nombre de la base de datos, motor, número de filas, etc.
SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name';
Tabla COLUMNS
Contiene información sobre las columnas de las tablas, como nombre de la columna, tipo de datos, si permite NULL, etc.
SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
Tabla STATISTICS
Proporciona información estadística sobre los índices de las tablas, como nombre del índice, nombre de la columna, unicidad, etc.
SELECT * FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
Tabla KEY_COLUMN_USAGE
Contiene información sobre las claves foráneas en las tablas, como nombre de la clave foránea, nombre de la columna, tabla relacionada, etc.
SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
Tabla REFERENTIAL_CONSTRAINTS
Almacena información sobre las restricciones de clave foránea, como nombre de la restricción, tabla relacionada, etc.
SELECT * FROM information_schema.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
Estas tablas ofrecen abundante información de metadatos que puede utilizarse para consultar la estructura de la base de datos, información de tablas, de columnas, de índices, etc.
Ten en cuenta que debes reemplazar 'your_database_name' y 'your_table_name' en las consultas por el nombre real de la base de datos y de la tabla.
Obtener el número de registros afectados por una consulta
Ejemplo en PERL
En un script DBI, el número de registros afectados por una sentencia se devuelve mediante las funciones do( ) o execute( ):
# 方法 1 # 使用do( ) 执行 $query my $count = $dbh->do ($query); # 如果发生错误会输出 0 printf "%d 条数据被影响\n", (defined ($count) ? $count : 0); # 方法 2 # 使用prepare( ) 及 execute( ) 执行 $query my $sth = $dbh->prepare ($query); my $count = $sth->execute ( ); printf "%d 条数据被影响\n", (defined ($count) ? $count : 0);
Ejemplo en PHP
En PHP, puedes usar la función mysqli_affected_rows( ) para obtener el número de registros afectados por una consulta.
$result_id = mysqli_query ($conn_id, $query);
# 如果查询失败返回
$count = ($result_id ? mysqli_affected_rows ($conn_id) : 0);
print ("$count 条数据被影响\n");
Lista de bases de datos y tablas
Puedes obtener fácilmente la lista de bases de datos y tablas en el servidor MySQL. Si no tienes permisos suficientes, el resultado devolverá null.
También puedes usar las sentencias SHOW TABLES o SHOW DATABASES para obtener la lista de bases de datos y tablas.
Ejemplo en PERL
# 获取当前数据库中所有可用的表。
my @tables = $dbh->tables ( );
foreach $table (@tables ){
print "表名 $table\n";
}
Ejemplo en PHP
El siguiente ejemplo muestra todas las bases de datos del servidor MySQL:
Ver todas las bases de datos
Obtener metadatos del servidor
Los siguientes comandos se pueden usar en el prompt de comandos de MySQL y también en scripts, como por ejemplo scripts PHP.
| Comando | Descripción |
|---|---|
| SELECT VERSION( ) | Información de versión del servidor |
| SELECT DATABASE( ) | Nombre de la base de datos actual (o devuelve vacío) |
| SELECT USER( ) | Nombre de usuario actual |
| SHOW STATUS | Estado del servidor |
| SHOW VARIABLES | Variables de configuración del servidor |