Tabla de contenidos
-
22.1. Las tablas
INFORMATION_SCHEMA
-
-
22.1.1. La tabla
INFORMATION_SCHEMA SCHEMATA
-
22.1.2. La tabla
INFORMATION_SCHEMA TABLES
-
22.1.3. La tabla
INFORMATION_SCHEMA COLUMNS
-
22.1.4. La tabla
INFORMATION_SCHEMA STATISTICS
-
22.1.5. La tabla
INFORMATION_SCHEMA USER_PRIVILEGES
-
22.1.6. La tabla
INFORMATION_SCHEMA SCHEMA_PRIVILEGES
-
22.1.7. La tabla
INFORMATION_SCHEMA TABLE_PRIVILEGES
-
22.1.8. La tabla
INFORMATION_SCHEMA COLUMN_PRIVILEGES
-
22.1.9. La tabla
INFORMATION_SCHEMA CHARACTER_SETS
-
22.1.10. La tabla
INFORMATION_SCHEMA COLLATIONS
-
22.1.11. La tabla
INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY
-
22.1.12. La tabla
INFORMATION_SCHEMA TABLE_CONSTRAINTS
-
22.1.13. La tabla
INFORMATION_SCHEMA KEY_COLUMN_USAGE
-
22.1.14. La tabla
INFORMATION_SCHEMA ROUTINES
-
22.1.15. La tabla
INFORMATION_SCHEMA VIEWS
-
22.1.16. La tabla
INFORMATION_SCHEMA TRIGGERS
-
22.1.17. Otras tablas
INFORMATION_SCHEMA
-
22.1.1. La tabla
-
22.2. Extensiones a las sentencias
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.
Explicació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 comandoSHOW
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 carácteres (por ejemplo,
TABLES.TABLE_NAME
), generalmente es
VARCHAR(
N
) CHARACTER SET
utf8 donde N
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 esNULL
. -
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
yTABLE_NAME
son campos simples enSHOW
, por ejemploTable_in_db1
. -
TABLE_TYPE
debe serBASE TABLE
oVIEW
. Si la tabla es temporal, entoncesTABLE_TYPE
=TEMPORARY
. (No hay vistas temporales, así que no es ambíguo.) -
La columna
TABLE_ROWS
esNULL
si la tabla está en la base de datosINFORMATION_SCHEMA
. -
No tneemos nada para el conjunto de carácteres por defecto de la tabla.
TABLE_COLLATION
se acerca, ya que los nombres de colación comienzan con el nombre del conjunto de carácteres.
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
, elType
incluye valores de varias columnasCOLUMNS
distintas. -
ORDINAL_POSITION
es necesario ya que puede algún día querer decirORDER BY ORDINAL_POSITION
. Al contrario queSHOW
,SELECT
no tiene ordenación automática. -
CHARACTER_OCTET_LENGTH
debe ser el mismo queCHARACTER_MAXIMUM_LENGTH
, excepto para conjuntos de carácteres de múltiples bytes. -
CHARACTER_SET_NAME
puede derivarse deCollation
. Por ejemplo, si diceSHOW FULL COLUMNS FROM t
, y ve en la columnaCollation
un valor delatin1_swedish_ci
, el conjunto de carácteres 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 nombreQUALIFIER
conCATALOG
yOWNER
conSCHEMA
.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
. EnCOLUMN_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
, entoncesIS_GRANTABLE
debe serYES
. De otro modo,IS_GRANTABLE
debe serNO
. La salida no listaGRANT 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 carácteres 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
yMaxlen
en la salida deSHOW 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 carácteres.
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
, ySortlen
de la salida deSHOW 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 carácteres 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 serUNIQUE
,PRIMARY KEY
, oFOREIGN KEY
. -
La información
UNIQUE
yPRIMARY KEY
es acerca de lo mismo que obtiene del campoKey_name
en la salida deSHOW INDEX
cuando el campoNon_unique
es0
. -
La columna
CONSTRAINT_TYPE
puede contener uno de estos valores:UNIQUE
,PRIMARY KEY
,FOREIGN KEY
,CHECK
. Esta es una columnaCHAR
(noENUM
) . El valorCHECK
no estará disponible hasta que soportemosCHECK
.
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
esNULL
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
yt3
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
, yREFERENCED_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'
, entoncesEXTERNAL_LANGUAGE
esNULL
-
En caso contrario,
EXTERNAL_LANGUAGE
es lo que hay enmysql.proc.language
. Sin embargo, no tenemos idiomas externos de momento, así que siempre esNULL
.
-
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 tablaVIEWS
. -
La columna
VIEW_DEFINITION
tiene la mayoría de lo que ve en el campoCreate Table
que produceSHOW CREATE VIEW
. Ignora las palabras antes deSELECT
y trasWITH 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 deNONE
. -
La columna
IS_UPDATABLE
esYES
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
yTRIGGER_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
yEVENT_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 es0
, porque no es posible tener más de un disparador con el mismoEVENT_MANIPULATION
yACTION_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 columnaStatement
de la salida deSHOW 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
yACTION_REFERENCE_NEW_ROW
contienen el antiguo y nuevo identificador de columna, respectivamente. Esto significa queACTION_REFERENCE_OLD_ROW
siempre contiene el valor'OLD'
yACTION_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
, yCREATED
.
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)