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.
-
“
SHOWname” indica el nombre equivalente al comandoSHOWmá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_NAMEse 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_SCHEMAyTABLE_NAMEson campos simples enSHOW, por ejemploTable_in_db1. -
TABLE_TYPEdebe serBASE TABLEoVIEW. Si la tabla es temporal, entoncesTABLE_TYPE=TEMPORARY. (No hay vistas temporales, así que no es ambíguo.) -
La columna
TABLE_ROWSesNULLsi la tabla está en la base de datosINFORMATION_SCHEMA. -
No tneemos nada para el conjunto de carácteres por defecto de la tabla.
TABLE_COLLATIONse 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, elTypeincluye valores de varias columnasCOLUMNSdistintas. -
ORDINAL_POSITIONes necesario ya que puede algún día querer decirORDER BY ORDINAL_POSITION. Al contrario queSHOW,SELECTno tiene ordenación automática. -
CHARACTER_OCTET_LENGTHdebe ser el mismo queCHARACTER_MAXIMUM_LENGTH, excepto para conjuntos de carácteres de múltiples bytes. -
CHARACTER_SET_NAMEpuede derivarse deCollation. Por ejemplo, si diceSHOW FULL COLUMNS FROM t, y ve en la columnaCollationun 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 nombreQUALIFIERconCATALOGyOWNERconSCHEMA.Claramente, la tabla precedente y la salida de
SHOW INDEXse 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_TYPEpuede contener uno ( y sólo uno ) de estos valores:SELECT,INSERT,UPDATE,REFERENCES. -
Si el usuario tiene el permiso
GRANT OPTION, entoncesIS_GRANTABLEdebe serYES. De otro modo,IS_GRANTABLEdebe serNO. La salida no listaGRANT OPTIONcomo 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
DescriptionyMaxlenen 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, ySortlende 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_TYPEpuede serUNIQUE,PRIMARY KEY, oFOREIGN KEY. -
La información
UNIQUEyPRIMARY KEYes acerca de lo mismo que obtiene del campoKey_nameen la salida deSHOW INDEXcuando el campoNon_uniquees0. -
La columna
CONSTRAINT_TYPEpuede contener uno de estos valores:UNIQUE,PRIMARY KEY,FOREIGN KEY,CHECK. Esta es una columnaCHAR(noENUM) . El valorCHECKno 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_POSITIONes 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_CONSTRAINTesNULLpara 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
t1yt3con 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_USAGEtiene 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_NAMEse 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_LANGUAGEasí:-
Si
mysql.proc.language='SQL', entoncesEXTERNAL_LANGUAGEesNULL -
En caso contrario,
EXTERNAL_LANGUAGEes 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_DEFINITIONtiene la mayoría de lo que ve en el campoCreate Tableque produceSHOW CREATE VIEW. Ignora las palabras antes deSELECTy 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_OPTIONsiempre tiene un valor deNONE. -
La columna
IS_UPDATABLEesYESsi la vista es actualizable,NOsi 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_SCHEMAyTRIGGER_NAMEcontienen el nombre de la base de datos en que se produce el dispardor, y el nombre del disparador, respectivamente. -
La columna
EVENT_MANIPULATIONcontiene 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_SCHEMAyEVENT_OBJECT_TABLEcontienen la base de datos en que ocurre esta tabla, y el nombre de la tabla. -
El comando
ACTION_ORDERcontiene 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_MANIPULATIONyACTION_TIMINGen la misma tabla. -
La columna
ACTION_STATEMENTcontiene el comando a ejecutarse cuando el disparador se invoca. Esto es lo mismo que el texto mostrado en la columnaStatementde la salida deSHOW TRIGGERS. Tenga en cuenta que este texto usa codificación UTF-8 . -
La columna
ACTION_ORIENTATIONsiempre contiene el valor'ROW'. -
La columna
ACTION_TIMINGcontiene uno de los dos valores'BEFORE'o'AFTER'. -
Las columnas
ACTION_REFERENCE_OLD_ROWyACTION_REFERENCE_NEW_ROWcontienen el antiguo y nuevo identificador de columna, respectivamente. Esto significa queACTION_REFERENCE_OLD_ROWsiempre contiene el valor'OLD'yACTION_REFERENCE_NEW_ROWsiempre 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)