Tabla de contenidos
INFORMATION_SCHEMA
[+/-]INFORMATION_SCHEMA SCHEMATA
INFORMATION_SCHEMA TABLES
INFORMATION_SCHEMA COLUMNS
INFORMATION_SCHEMA STATISTICS
INFORMATION_SCHEMA USER_PRIVILEGES
INFORMATION_SCHEMA SCHEMA_PRIVILEGES
INFORMATION_SCHEMA TABLE_PRIVILEGES
INFORMATION_SCHEMA COLUMN_PRIVILEGES
INFORMATION_SCHEMA CHARACTER_SETS
INFORMATION_SCHEMA COLLATIONS
INFORMATION_SCHEMA
COLLATION_CHARACTER_SET_APPLICABILITY
INFORMATION_SCHEMA TABLE_CONSTRAINTS
INFORMATION_SCHEMA KEY_COLUMN_USAGE
INFORMATION_SCHEMA ROUTINES
INFORMATION_SCHEMA VIEWS
INFORMATION_SCHEMA TRIGGERS
INFORMATION_SCHEMA
SHOW
El soporte para INFORMATION_SCHEMA
está
disponible en MySQL 5.0.2 y posterior. Proporciona acceso a los
metadatos de la base de datos.
Metadatos son datos acerca de los datos, tales como el nombre de la base de datos o tabla, el tipo de datos de una columna, o permisos de acceso. Otros términos que a veces se usan para esta información son diccionario de datos o catálogo del sistema .
Ejemplo:
mysql> SELECT table_name, table_type, engine -> FROM information_schema.tables -> WHERE table_schema = 'db5' -> ORDER BY table_name DESC; +------------+------------+--------+ | table_name | table_type | engine | +------------+------------+--------+ | v56 | VIEW | NULL | | v3 | VIEW | NULL | | v2 | VIEW | NULL | | v | VIEW | NULL | | tables | BASE TABLE | MyISAM | | t7 | BASE TABLE | MyISAM | | t3 | BASE TABLE | MyISAM | | t2 | BASE TABLE | MyISAM | | t | BASE TABLE | MyISAM | | pk | BASE TABLE | InnoDB | | loop | BASE TABLE | MyISAM | | kurs | BASE TABLE | MyISAM | | k | BASE TABLE | MyISAM | | into | BASE TABLE | MyISAM | | goto | BASE TABLE | MyISAM | | fk2 | BASE TABLE | InnoDB | | fk | BASE TABLE | InnoDB | +------------+------------+--------+ 17 rows in set (0.01 sec)
Explicación: El comando pide una lista de todas las tablas en la
base de datos db5
, en orden alfabético inverso,
mostrando tres informaciones: el nombre de la tabla, su tipo y su
motor.
INFORMATION_SCHEMA
es la base de datos de
información, que almacena información acerca de todas las otras
bases de datos que mantiene el servidor MySQL . Dentro del
INFORMATION_SCHEMA
hay varias tablas de sólo
lectura. En realidad son vistas, no tablas, así que no puede ver
ningún fichero asociado con ellas.
Cada usuario MySQL tiene derecho a acceder a estas tablas, pero sólo a los registros que se corresponden a los objetos a los que tiene permiso de acceso.
Ventajas de
SELECT
El comando SELECT ... FROM INFORMATION_SCHEMA
es
una forma más consistente de proporcionar acceso a la información
proporcionada por los comandos SHOW
que soporta
MySQL (SHOW DATABASES
, SHOW
TABLES
, y así). Usar SELECT
tiene las
siguientes ventajas, en comparación a SHOW
:
Cumple las reglas de Codd. Esto es, todo acceso se hace por tabla.
Nadie necesita aprender una nueva sintaxis. Conocen cómo
funciona SELECT
, sólo necesitan aprender
los nombres de los objetos.
El implementador no tiene que preocuparse de palabras clave.
Hay millones de variaciones de la salida, en lugar de sólo una. Esto proporciona flexibilidad a las aplicaciones con requerimientos cambiantes acerca de los metadatos que necesitan
La migración es más fácil ya que todos los otros DBMS funcionan así.
Sin embargo, como SHOW
es popular entre los
empleados y usuarios de MySQL, y como puede ser confuso si
desaparece, las ventajas de una sintaxis convencional no es razón
para eliminar SHOW
. De hecho, hay mejoras a
SHOW
en MySQL 5.0. Se describen en
Sección 22.2, “Extensiones a las sentencias SHOW
”.
Estandars
La implementación de la estructura de tablas para el
INFORMATION_SCHEMA
en MySQL sigue el estándar
ANSI/ISO SQL:2003 Parte 11 Schemata. Nuestra
intención es aproximar el cumplimiento de SQL:2003 característica
básica F021 Basic information schema.
Los usuarios de SQL Server 2000 (que también sigue el estándar)
pueden ver una gran similitud. Sin embargo, MySQL omite varias
columnas no relevantes para nuestra implementación, y añade
columnas que són específicas de MySQL. Una de estas columnas es
engine
en la tabla
INFORMATION_SCHEMA.TABLES
.
Aunque otros DBMS usan una variedad de nombres, como syscat o
system, el nombre estándar es
INFORMATION_SCHEMA
.
En efecto, tenemos una nueva base de datos llamada
INFORMATION_SCHEMA
, aunque no hay necesidad de
hacer un fichero llamado así. Es posible seleccionar
INFORMATION_SCHEMA
como base de datos por defecto
con un comando USE
, pero la única forma de
acceder al contenido de sus tablas es con SELECT
.
No puede insertar, actualizar o borrar su contenido.
Permisos
No hay diferencia entre el requerimiento de permisos para
(SHOW
) y para SELECT
. En cada
caso, debe tener algún permiso de un objeto para consultar
información acerca de el mismo.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.