Tabla de contenidos
INFORMATION_SCHEMAINFORMATION_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.
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_SCHEMAExplicación de las siguientes secciones
En las siguientes secciones, tomamos tablas y columnas del
INFORMATION_SCHEMA. Para cada columna, hay tres
informaciones:
“Standard Name” indica el nombre SQL estándar para la columna.
“SHOW name” indica el nombre
equivalente al comando SHOW más parecido,
si lo hay.
“Remarks” proporciona información adicional donde sea aplicable.
Para evitar usar nombres reservados del estándar o de DB2, SQL
Server, o Oracle, hemos cambiado los nombres de las columnas
marcados como extensión MySQL. (Por ejemplo,
cambiamos COLLATION a
TABLE_COLLATION en la tabla
TABLES .) Consulte la lista de palabras
reservadas al final del artículo:
http://www.dbazine.com/gulutzan5.shtml.
La definición para columnas de caracteres (por ejemplo,
TABLES.TABLE_NAME), generalmente es
VARCHAR( donde N) CHARACTER SET
utf8N es como mínimo
64.
Cada sección indica qué comando SHOW es
equivalente al SELECT que proporciona
información de INFORMATION_SCHEMA, o si no hay
tal equivalente.
Nota: Por ahora, hay algunas columnas no presentes y algunas que no funcionan. Estamos trabajando en ello y tratamos de actualizar la documentación tal y como se producen los cambios.
Un esquema es una base de datos, así que la tabla
SCHEMATA proporciona información acerca de
bases de datos.
| Standard Name | SHOW name | Remarks |
CATALOG_NAME | - | NULL |
SCHEMA_NAME | base de datos | |
DEFAULT_CHARACTER_SET_NAME | ||
DEFAULT_COLLATION_NAME | ||
SQL_PATH | NULL |
Notas:
Para SQL_PATH, podemos soportar
eventualmente algo en MySQL 5.x. De momento siempre es
NULL.
DEFAULT_COLLATION_NAME se añadió en
MySQL 5.0.6.
Los siguientes comandos son equivalentes:
SELECT SCHEMA_NAME AS `Database` FROM INFORMATION_SCHEMA.SCHEMATA [WHERE SCHEMA_NAME LIKE 'wild'] SHOW DATABASES [LIKE 'wild']
La tabla TABLES proporciona información
acerca de las tablas en las bases de datos.
| Standard Name | SHOW name | Remarks |
TABLE_CATALOG | NULL | |
TABLE_SCHEMA | Table_... | |
TABLE_NAME | Table_... | |
TABLE_TYPE | ||
ENGINE | Engine | Extensión MySQL |
VERSION | Version | Extensión MySQL |
ROW_FORMAT | Row_format | Extensión MySQL |
TABLE_ROWS | Rows | Extensión MySQL |
AVG_ROW_LENGTH | Avg_row_length | Extensión MySQL |
DATA_LENGTH | Data_length | Extensión MySQL |
MAX_DATA_LENGTH | Max_data_length | Extensión MySQL |
INDEX_LENGTH | Index_length | Extensión MySQL |
DATA_FREE | Data_free | Extensión MySQL |
AUTO_INCREMENT | Auto_increment | Extensión MySQL |
CREATE_TIME | Create_time | Extensión MySQL |
UPDATE_TIME | Update_time | Extensión MySQL |
CHECK_TIME | Check_time | Extensión MySQL |
TABLE_COLLATION | Collation | Extensión MySQL |
CHECKSUM | Checksum | Extensión MySQL |
CREATE_OPTIONS | Create_options | Extensión MySQL |
TABLE_COMMENT | Comment | Extensión MySQL |
Notas:
TABLE_SCHEMA y
TABLE_NAME son campos simples en
SHOW , por ejemplo
Table_in_db1.
TABLE_TYPE debe ser BASE
TABLE o VIEW. Si la tabla es
temporal, entonces TABLE_TYPE =
TEMPORARY. (No hay vistas temporales,
así que no es ambíguo.)
La columna TABLE_ROWS es
NULL si la tabla está en la base de
datos INFORMATION_SCHEMA .
No tneemos nada para el conjunto de caracteres por defecto
de la tabla. TABLE_COLLATION se acerca,
ya que los nombres de colación comienzan con el nombre del
conjunto de caracteres.
Los siguientes comandos son equivalentes:
SELECT table_name FROM INFORMATION_SCHEMA.TABLES [WHERE table_schema = 'db_name'] [WHERE|AND table_name LIKE 'wild'] SHOW TABLES [FROM db_name] [LIKE 'wild']
La tabla COLUMNS proporciona información
acerca de columnas en tablas.
| Standard Name | SHOW name | Remarks |
TABLE_CATALOG | NULL | |
TABLE_SCHEMA | ||
TABLE_NAME | ||
COLUMN_NAME | Field | |
ORDINAL_POSITION | vea las notas | |
COLUMN_DEFAULT | Default | |
IS_NULLABLE | Null | |
DATA_TYPE | Type | |
CHARACTER_MAXIMUM_LENGTH | Type | |
CHARACTER_OCTET_LENGTH | ||
NUMERIC_PRECISION | Type | |
NUMERIC_SCALE | Type | |
CHARACTER_SET_NAME | ||
COLLATION_NAME | Collation | |
COLUMN_KEY | Key | Extensión MySQL |
EXTRA | Extra | Extensión MySQL |
COLUMN_COMMENT | Comment | Extensión MySQL |
Notas:
En SHOW, el Type
incluye valores de varias columnas
COLUMNS distintas.
ORDINAL_POSITION es necesario ya que
puede algún día querer decir ORDER BY
ORDINAL_POSITION. Al contrario que
SHOW, SELECT no tiene
ordenación automática.
CHARACTER_OCTET_LENGTH debe ser el mismo
que CHARACTER_MAXIMUM_LENGTH, excepto
para conjuntos de caracteres de múltiples bytes.
CHARACTER_SET_NAME puede derivarse de
Collation. Por ejemplo, si dice
SHOW FULL COLUMNS FROM t, y ve en la
columna Collation un valor de
latin1_swedish_ci, el conjunto de
caracteres es lo que hay antes del primer subrayado:
latin1.
Los siguientes comandos son casi equivalentes:
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_name' [AND table_schema = 'db_name'] [AND column_name LIKE 'wild'] SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]
La tabla STATISTICS proporciona información
acerca de los índices de las tablas.
| Standard Name | SHOW name | Remarks |
TABLE_CATALOG | NULL | |
TABLE_SCHEMA | = Base de datos | |
TABLE_NAME | Table | |
NON_UNIQUE | Non_unique | |
INDEX_SCHEMA | = Base de datos | |
INDEX_NAME | Key_name | |
SEQ_IN_INDEX | Seq_in_index | |
COLUMN_NAME | Column_name | |
COLLATION | Collation | |
CARDINALITY | Cardinality | |
SUB_PART | Sub_part | Extensión MySQL |
PACKED | Packed | Extensión MySQL |
NULLABLE | Null | Extensión MySQL |
INDEX_TYPE | Index_type | Extensión MySQL |
COMMENT | Comment | Extensión MySQL |
Notas:
No hay una tabla estándar para índices. La lista
precedente es similar a lo que retorna SQL Server 2000 para
sp_statistics, excepto que hemos cambiado
el nombre QUALIFIER con
CATALOG y OWNER con
SCHEMA.
Claramente, la tabla precedente y la salida de SHOW
INDEX se derivan del mismo padre. Así que la
correlación está cercana.
Los siguientes comandos son equivalentes:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name = 'tbl_name' [AND table_schema = 'db_name'] SHOW INDEX FROM tbl_name [FROM db_name]
La tabla USER_PRIVILEGES proporciona
información acerca de permisos globales. Esta información
viene de la tabla de permisos mysql.user .
| Standard Name | SHOW name | Remarks |
GRANTEE | e.g. 'user'@'host' | |
TABLE_CATALOG | NULL | |
PRIVILEGE_TYPE | ||
IS_GRANTABLE |
Notas:
Esta tabla no es estándar. Toma sus valores de la tabla
mysql.user .
La tabla SCHEMA_PRIVILEGES proporciona
información acerca del esquema de permisos (base de datos).
Esta información viene de la tabla de permisos
mysql.db .
| Standard Name | SHOW name | Remarks |
GRANTEE | e.g. 'user'@'host' | |
TABLE_CATALOG | NULL | |
TABLE_SCHEMA | ||
PRIVILEGE_TYPE | ||
IS_GRANTABLE |
Notas:
Esta tabla no es estándar. Toma sus valores de la tabla
mysql.db .
La tabla TABLE_PRIVILEGES proporciona
información de permisos de tablas. Esta información viene de
la tabla de permisos mysql.tables_priv .
| Standard Name | SHOW name | Remarks |
GRANTEE | e.g. 'user'@'host' | |
TABLE_CATALOG | NULL | |
TABLE_SCHEMA | ||
TABLE_NAME | ||
PRIVILEGE_TYPE | ||
IS_GRANTABLE |
Los siguientes comandos no son equivalentes:
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES SHOW GRANTS ...
PRIVILEGE_TYPE puede contener uno ( y sólo
uno ) de estos valores: SELECT,
INSERT, UPDATE,
REFERENCES, ALTER,
INDEX, DROP,
CREATE VIEW.
La tabla COLUMN_PRIVILEGES proporciona
información acerca de permisos de columnas. Esta información
viene de la tabla de permisos
mysql.columns_priv .
| Standard Name | SHOW name | Remarks |
GRANTEE | e.g. 'user'@'host' | |
TABLE_CATALOG | NULL | |
TABLE_SCHEMA | ||
TABLE_NAME | ||
COLUMN_NAME | ||
PRIVILEGE_TYPE | ||
IS_GRANTABLE |
Notas:
En la salida de SHOW FULL COLUMNS, los
permisos están todos en un campo y en minúsculas, por
ejemplo, select,insert,update,references.
En COLUMN_PRIVILEGES, hay un registro por
permiso, y en mayúsculas.
PRIVILEGE_TYPE puede contener uno ( y
sólo uno ) de estos valores: SELECT,
INSERT, UPDATE,
REFERENCES.
Si el usuario tiene el permiso GRANT
OPTION , entonces IS_GRANTABLE
debe ser YES. De otro modo,
IS_GRANTABLE debe ser
NO. La salida no lista GRANT
OPTION como permisos separado.
Los siguientes comandos no son equivalentes:
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES SHOW GRANTS ...
La tabla CHARACTER_SETS proporciona
información acerca de los conjuntos de caracteres disponibles.
| Standard Name | SHOW name | Remarks |
CHARACTER_SET_NAME | Charset | |
DEFAULT_COLLATE_NAME | Default collation | |
DESCRIPION | Description | Extensión MySQL |
MAXLEN | Maxlen | Extensión MySQL |
Notas:
Hemos añadido dos columnas no estándar que se corresponden
a Description y Maxlen
en la salida de SHOW CHARACTER SET.
Los siguientes comandos son equivalentes:
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS [WHERE name LIKE 'wild'] SHOW CHARACTER SET [LIKE 'wild']
La tabla COLLATIONS proporciona información
acerca de colaciones para cada conjunto de caracteres.
| Standard Name | SHOW name | Remarks |
COLLATION_NAME | Collation |
Notas:
Hemos añadido cinco columnas no estándar que se
corresponden a Charset,
Id, Default,
Compiled, y Sortlen de
la salida de SHOW COLLATION.
Los siguientes comandos son equivalentes:
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS [WHERE collation_name LIKE 'wild'] SHOW COLLATION [LIKE 'wild']
La tabla
COLLATION_CHARACTER_SET_APPLICABILITY indica
qué conjunto de caracteres es aplicable a cada colación. Las
columnas son equivalentes a los dos primeros campos mostrados
por SHOW COLLATION.
| Standard Name | SHOW name | Remarks |
COLLATION_NAME | Collation | |
CHARACTER_SET_NAME | Charset |
La tabla TABLE_CONSTRAINTS describe qué
tablas tienen restricciones.
| Standard Name | SHOW name | Remarks |
CONSTRAINT_CATALOG | NULL | |
CONSTRAINT_SCHEMA | ||
CONSTRAINT_NAME | ||
TABLE_SCHEMA | ||
TABLE_NAME | ||
CONSTRAINT_TYPE |
Notas:
El valor CONSTRAINT_TYPE puede ser
UNIQUE, PRIMARY KEY, o
FOREIGN KEY.
La información UNIQUE y PRIMARY
KEY es acerca de lo mismo que obtiene del campo
Key_name en la salida de SHOW
INDEX cuando el campo
Non_unique es 0.
La columna CONSTRAINT_TYPE puede contener
uno de estos valores: UNIQUE,
PRIMARY KEY, FOREIGN
KEY, CHECK. Esta es una columna
CHAR (no ENUM) . El
valor CHECK no estará disponible hasta
que soportemos CHECK.
La tabla KEY_COLUMN_USAGE describe qué
columnas clave tienen restricciones.
| Standard Name | SHOW name | Remarks |
CONSTRAINT_CATALOG | NULL | |
CONSTRAINT_SCHEMA | ||
CONSTRAINT_NAME | ||
TABLE_CATALOG | ||
TABLE_SCHEMA | ||
TABLE_NAME | ||
COLUMN_NAME | ||
ORDINAL_POSITION | ||
POSITION_IN_UNIQUE_CONSTRAINT | ||
REFERENCED_TABLE_SCHEMA | ||
REFERENCED_TABLE_NAME | ||
REFERENCED_COLUMN_NAME |
Notas:
Si la restricción es una clave foránea, entonces esta es la columna de la clave foránea, no la columna a la que la clave foránea hace referencia.
El valor de ORDINAL_POSITION es la
posición de la columna en la restricción, no la posición
de la columna en la tabla. Las posiciones de columnas se
numeran comenzando por 1.
El valor de POSITION_IN_UNIQUE_CONSTRAINT
es NULL para restricciones de claves
primárias y únicas. Para restricciones de claves
foráneas, es la posición ordinal en la clave de la tabla a
la que se referencia.
Por ejemplo, suponga que hay dos tablas llamadas
t1 y t3 con las
siguientes definiciones:
CREATE TABLE t1
(
s1 INT,
s2 INT,
s3 INT,
PRIMARY KEY(s3)
) ENGINE=InnoDB;
CREATE TABLE t3
(
s1 INT,
s2 INT,
s3 INT,
KEY(s1),
CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)
) ENGINE=InnoDB;
Para estas dos tablas, la tabla
KEY_COLUMN_USAGE tiene dos registros:
Un registro con
CONSTRAINT_NAME='PRIMARY',
TABLE_NAME='t1',
COLUMN_NAME='s3',
ORDINAL_POSITION=1,
POSITION_IN_UNIQUE_CONSTRAINT=NULL.
Un registro con CONSTRAINT_NAME='CO',
TABLE_NAME='t3',
COLUMN_NAME='s2',
ORDINAL_POSITION=1,
POSITION_IN_UNIQUE_CONSTRAINT=1.
REFERENCED_TABLE_SCHEMA,
REFERENCED_TABLE_NAME, y
REFERENCED_COLUMN_NAME se añadieron en
MySQL 5.0.6.
La tabla ROUTINES proporciona información
acerca de rutinas almacenadas (procedimientos y funciones). La
tabla ROUTINES no incluye funciones definidas
por el usuario (UDFs) de momento.
La columna llamada “mysql.proc
name” indica la columna de la tabla
mysql.proc que se corresponde a la columna de
la tabla INFORMATION_SCHEMA.ROUTINES, si hay
alguna.
| Standard Name | mysql.proc name | Remarks |
SPECIFIC_NAME | specific_name | |
ROUTINE_CATALOG | NULL | |
ROUTINE_SCHEMA | db | |
ROUTINE_NAME | name | |
ROUTINE_TYPE | type | {PROCEDURE|FUNCTION} |
DTD_IDENTIFIER | (descriptor del tipo de datos) | |
ROUTINE_BODY | SQL | |
ROUTINE_DEFINITION | body | |
EXTERNAL_NAME | NULL | |
EXTERNAL_LANGUAGE | language | NULL |
PARAMETER_STYLE | SQL | |
IS_DETERMINISTIC | is_deterministic | |
SQL_DATA_ACCESS | sql_data_access | |
SQL_PATH | NULL | |
SECURITY_TYPE | security_type | |
CREATED | created | |
LAST_ALTERED | modified | |
SQL_MODE | sql_mode | Extensión MySQL |
ROUTINE_COMMENT | comment | Extensión MySQL |
DEFINER | definer | Extensión MySQL |
Notas:
MySQL calcula EXTERNAL_LANGUAGE así:
Si mysql.proc.language='SQL',
entonces EXTERNAL_LANGUAGE es
NULL
En caso contrario, EXTERNAL_LANGUAGE
es lo que hay en mysql.proc.language.
Sin embargo, no tenemos idiomas externos de momento,
así que siempre es NULL.
La tabla VIEWS proporciona información
acerca de las vistas en las bases de datos.
| Standard Name | SHOW name | Remarks |
TABLE_CATALOG | NULL | |
TABLE_SCHEMA | ||
TABLE_NAME | ||
VIEW_DEFINITION | ||
CHECK_OPTION | ||
IS_UPDATABLE |
Notas:
Hay un nuevo permiso, SHOW VIEW, sin el
cual no puede ver la tabla VIEWS.
La columna VIEW_DEFINITION tiene la
mayoría de lo que ve en el campo Create
Table que produce SHOW CREATE
VIEW . Ignora las palabras antes de
SELECT y tras WITH CHECK
OPTION. Por ejemplo, si el comando original era:
CREATE VIEW v AS SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION;
entonces la definición de la vista es:
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
La columna CHECK_OPTION siempre tiene un
valor de NONE.
La columna IS_UPDATABLE es
YES si la vista es actualizable,
NO si la vista no es actualizable.
La tabla TRIGGERS proporciona información
acerca de disparadores.
Esta tabla se implementó inicialmente en MySQL 5.0.10.
Debe tener el permiso SUPER para ver esta
tabla.
| Standard Name | SHOW name | Remarks |
TRIGGER_CATALOG | NULL | |
TRIGGER_SCHEMA | ||
TRIGGER_NAME | Trigger | |
EVENT_MANIPULATION | Event | |
EVENT_OBJECT_CATALOG | NULL | |
EVENT_OBJECT_SCHEMA | ||
EVENT_OBJECT_TABLE | Table | |
ACTION_ORDER | 0 | |
ACTION_CONDITION | NULL | |
ACTION_STATEMENT | Statement | |
ACTION_ORIENTATION | ROW | |
ACTION_TIMING | Timing | |
ACTION_REFERENCE_OLD_TABLE | NULL | |
ACTION_REFERENCE_NEW_TABLE | NULL | |
ACTION_REFERENCE_OLD_ROW | OLD | |
ACTION_REFERENCE_NEW_ROW | NEW | |
CREATED | NULL (0) |
Notas:
Las columnas TRIGGER_SCHEMA y
TRIGGER_NAME contienen el nombre de la
base de datos en que se produce el dispardor, y el nombre
del disparador, respectivamente.
La columna EVENT_MANIPULATION contiene
uno de los valores 'INSERT',
'DELETE', o
'UPDATE'.
Como se explica en Capítulo 20, Disparadores (triggers), cada
disparador se asocia exactamente con una tabla. Las
columnas EVENT_OBJECT_SCHEMA y
EVENT_OBJECT_TABLE contienen la base de
datos en que ocurre esta tabla, y el nombre de la tabla.
El comando ACTION_ORDER contiene la
posición ordinal de la acción del disparador en la lista
de todos los disparadores similares en la misma tabla.
Actualmente, este valor siempre es 0,
porque no es posible tener más de un disparador con el
mismo EVENT_MANIPULATION y
ACTION_TIMING en la misma tabla.
La columna ACTION_STATEMENT contiene el
comando a ejecutarse cuando el disparador se invoca. Esto
es lo mismo que el texto mostrado en la columna
Statement de la salida de SHOW
TRIGGERS. Tenga en cuenta que este texto usa
codificación UTF-8 .
La columna ACTION_ORIENTATION siempre
contiene el valor 'ROW'.
La columna ACTION_TIMING contiene uno
de los dos valores 'BEFORE' o
'AFTER'.
Las columnas ACTION_REFERENCE_OLD_ROW y
ACTION_REFERENCE_NEW_ROW contienen el
antiguo y nuevo identificador de columna, respectivamente.
Esto significa que
ACTION_REFERENCE_OLD_ROW siempre
contiene el valor 'OLD' y
ACTION_REFERENCE_NEW_ROW siempre
contiene el valor 'NEW'.
Las siguientes columnas actualmente siempre contiene
NULL:
TRIGGER_CATALOG,
EVENT_OBJECT_CATALOG,
ACTION_CONDITION,
ACTION_REFERENCE_OLD_TABLE,
ACTION_REFERENCE_NEW_TABLE, y
CREATED.
Ejemplo, usando el disparador ins_sum
definido en Sección 20.3, “Utilización de disparadores”:
mysql> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS\G
*************************** 1. row ***************************
TRIGGER_CATALOG: NULL
TRIGGER_SCHEMA: test
TRIGGER_NAME: ins_sum
EVENT_MANIPULATION: INSERT
EVENT_OBJECT_CATALOG: NULL
EVENT_OBJECT_SCHEMA: test
EVENT_OBJECT_TABLE: account
ACTION_ORDER: 0
ACTION_CONDITION: NULL
ACTION_STATEMENT: SET @sum = @sum + NEW.amount
ACTION_ORIENTATION: ROW
ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
ACTION_REFERENCE_OLD_ROW: OLD
ACTION_REFERENCE_NEW_ROW: NEW
CREATED: NULL
1 row in set (1.54 sec)
Algunas extensiones de comandos SHOW acompañan
la implementación de INFORMATION_SCHEMA:
SHOW puede usarse para obtener información
acerca de la estructura de
INFORMATION_SCHEMA mismo.
Varios comandos SHOW aceptan una cláusula
WHERE que proporciona más flexibilidad al
especificar qué registros mostrar.
Estas extensiones están disponibles desde MySQL 5.0.3.
INFORMATION_SCHEMA es una base de datos de
información, así que su nombre se incluye en la salida de
SHOW DATABASES. Similarmente, SHOW
TABLES puede usarse con
INFORMATION_SCHEMA para obtener una lista de
sus tablas:
mysql> SHOW TABLES FROM INFORMATION_SCHEMA; +---------------------------------------+ | Tables_in_information_schema | +---------------------------------------+ | SCHEMATA | | TABLES | | COLUMNS | | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | ROUTINES | | STATISTICS | | VIEWS | | TRIGGERS | | USER_PRIVILEGES | | SCHEMA_PRIVILEGES | | TABLE_PRIVILEGES | | COLUMN_PRIVILEGES | | TABLE_CONSTRAINTS | | KEY_COLUMN_USAGE | +---------------------------------------+
SHOW COLUMNS y DESCRIBE
pueden mostrar información acerca de las columns en tablas
INFORMATION_SCHEMA individuales.
Varios comandos SHOW se han extendido para
permitir cláusulas WHERE :
SHOW CHARACTER SET SHOW COLLATION SHOW COLUMNS SHOW DATABASES SHOW FUNCTION STATUS SHOW KEYS SHOW OPEN TABLES SHOW PROCEDURE STATUS SHOW STATUS SHOW TABLE STATUS SHOW TABLES SHOW VARIABLES
La cláusula WHERE , si está presente, se
evalúa contra los nombres de columna mostrados por el comando
SHOW. Por ejemplo, el comando SHOW
COLLATION produce estas columnas de salida:
Por ejemplo, el comando SHOW CHARACTER SET
produce estas columnas de salida:
mysql> SHOW CHARACTER SET; +----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+-----------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | ISO 8859-1 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | ...
Para usar una cláusula WHERE con SHOW
CHARACTER SET, se referiría a esos nombres de columna.
Como ejemplo, el siguiente comando muestra información acerca de
conjuntos de caracteres para los que la colación por defecto
contiene la cadena "japanese":
mysql> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%'; +---------+---------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +---------+---------------------------+---------------------+--------+ | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | +---------+---------------------------+---------------------+--------+
Este comando muestra los conjuntos de caracteres de múltiples bytes:
mysql> SHOW CHARACTER SET WHERE Maxlen > 1; +---------+---------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +---------+---------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | +---------+---------------------------+---------------------+--------+
É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.