Tabla de contenidos
INFORMATION_SCHEMA [+/-]INFORMATION_SCHEMA SCHEMATAINFORMATION_SCHEMA TABLESINFORMATION_SCHEMA COLUMNSINFORMATION_SCHEMA STATISTICSINFORMATION_SCHEMA USER_PRIVILEGESINFORMATION_SCHEMA SCHEMA_PRIVILEGESINFORMATION_SCHEMA TABLE_PRIVILEGESINFORMATION_SCHEMA COLUMN_PRIVILEGESINFORMATION_SCHEMA CHARACTER_SETSINFORMATION_SCHEMA COLLATIONSINFORMATION_SCHEMA
COLLATION_CHARACTER_SET_APPLICABILITYINFORMATION_SCHEMA TABLE_CONSTRAINTSINFORMATION_SCHEMA KEY_COLUMN_USAGEINFORMATION_SCHEMA ROUTINESINFORMATION_SCHEMA VIEWSINFORMATION_SCHEMA TRIGGERSINFORMATION_SCHEMASHOW
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.
