Spec-Zone .ru
спецификации, руководства, описания, API
|
Table of Contents
INFORMATION_SCHEMA CHARACTER_SETS
TableINFORMATION_SCHEMA COLLATIONS
TableINFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY
TableINFORMATION_SCHEMA
COLUMNS
TableINFORMATION_SCHEMA COLUMN_PRIVILEGES
TableINFORMATION_SCHEMA
ENGINES
TableINFORMATION_SCHEMA
EVENTS
TableINFORMATION_SCHEMA
FILES
TableINFORMATION_SCHEMA
GLOBAL_STATUS
and SESSION_STATUS
TablesINFORMATION_SCHEMA GLOBAL_VARIABLES
and SESSION_VARIABLES
TablesINFORMATION_SCHEMA KEY_COLUMN_USAGE
TableINFORMATION_SCHEMA OPTIMIZER_TRACE
TableINFORMATION_SCHEMA PARAMETERS
TableINFORMATION_SCHEMA PARTITIONS
TableINFORMATION_SCHEMA
PLUGINS
TableINFORMATION_SCHEMA PROCESSLIST
TableINFORMATION_SCHEMA PROFILING
TableINFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS
TableINFORMATION_SCHEMA
ROUTINES
TableINFORMATION_SCHEMA
SCHEMATA
TableINFORMATION_SCHEMA SCHEMA_PRIVILEGES
TableINFORMATION_SCHEMA STATISTICS
TableINFORMATION_SCHEMA
TABLES
TableINFORMATION_SCHEMA TABLESPACES
TableINFORMATION_SCHEMA TABLE_CONSTRAINTS
TableINFORMATION_SCHEMA TABLE_PRIVILEGES
TableINFORMATION_SCHEMA
TRIGGERS
TableINFORMATION_SCHEMA USER_PRIVILEGES
TableINFORMATION_SCHEMA
VIEWS
TableINFORMATION_SCHEMA
Tables for InnoDB
INFORMATION_SCHEMA INNODB_CMP
and INNODB_CMP_RESET
TablesINFORMATION_SCHEMA INNODB_CMP_PER_INDEX
and INNODB_CMP_PER_INDEX_RESET
TablesINFORMATION_SCHEMA INNODB_CMPMEM
and INNODB_CMPMEM_RESET
TablesINFORMATION_SCHEMA INNODB_TRX
TableINFORMATION_SCHEMA INNODB_LOCKS
TableINFORMATION_SCHEMA INNODB_LOCK_WAITS
TableINFORMATION_SCHEMA INNODB_SYS_TABLES
TableINFORMATION_SCHEMA INNODB_SYS_INDEXES
TableINFORMATION_SCHEMA INNODB_SYS_COLUMNS
TableINFORMATION_SCHEMA INNODB_SYS_FIELDS
TableINFORMATION_SCHEMA INNODB_SYS_FOREIGN
TableINFORMATION_SCHEMA INNODB_SYS_FOREIGN_COLS
Table
INFORMATION_SCHEMA INNODB_SYS_TABLESTATS
ViewINFORMATION_SCHEMA INNODB_SYS_DATAFILES
TableINFORMATION_SCHEMA INNODB_SYS_TABLESPACES
TableINFORMATION_SCHEMA INNODB_BUFFER_PAGE
TableINFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU
TableINFORMATION_SCHEMA INNODB_BUFFER_POOL_STATS
Table
INFORMATION_SCHEMA INNODB_METRICS
TableINFORMATION_SCHEMA INNODB_FT_CONFIG
TableINFORMATION_SCHEMA INNODB_FT_DEFAULT_STOPWORD
Table
INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE
TableINFORMATION_SCHEMA INNODB_FT_INDEX_CACHE
TableINFORMATION_SCHEMA INNODB_FT_DELETED
TableINFORMATION_SCHEMA INNODB_FT_BEING_DELETED
Table
INFORMATION_SCHEMA
TablesSHOW
StatementsINFORMATION_SCHEMA
provides access to database metadata,
information about the MySQL server such as the name of a database or table, the data type of a column, or access
privileges. Other terms that are sometimes used for this information are data
dictionary and system catalog.
INFORMATION_SCHEMA
DatabaseINFORMATION_SCHEMA
is a database within each MySQL instance, the place that stores
information about all the other databases that the MySQL server maintains. The INFORMATION_SCHEMA
database contains several read-only tables. They are actually views, not base tables, so there are no files
associated with them, and you cannot set triggers on them. Also, there is no database directory with that name.
Although you can select INFORMATION_SCHEMA
as the default database with a USE
statement, you can only read the contents of tables, not perform INSERT
, UPDATE
,
or DELETE
operations on them.
Here is an example of a statement that retrieves information from INFORMATION_SCHEMA
:
mysql>SELECT table_name, table_type, engine
->FROM information_schema.tables
->WHERE table_schema = 'db5'
->ORDER BY table_name;
+------------+------------+--------+| table_name | table_type | engine |+------------+------------+--------+| fk | BASE TABLE | InnoDB || fk2 | BASE TABLE | InnoDB || goto | BASE TABLE | MyISAM || into | BASE TABLE | MyISAM || k | BASE TABLE | MyISAM || kurs | BASE TABLE | MyISAM || loop | BASE TABLE | MyISAM || pk | BASE TABLE | InnoDB || t | BASE TABLE | MyISAM || t2 | BASE TABLE | MyISAM || t3 | BASE TABLE | MyISAM || t7 | BASE TABLE | MyISAM || tables | BASE TABLE | MyISAM || v | VIEW | NULL || v2 | VIEW | NULL || v3 | VIEW | NULL || v56 | VIEW | NULL |+------------+------------+--------+17 rows in set (0.01 sec)
Explanation: The statement requests a list of all the tables in database db5
,
showing just three pieces of information: the name of the table, its type, and its storage engine.
The definition for character columns (for example, TABLES.TABLE_NAME
) is generally
VARCHAR(
where N
) CHARACTER SET utf8N
is at least 64. MySQL uses the default collation for this
character set (utf8_general_ci
) for all searches, sorts, comparisons, and other
string operations on such columns.
Because some MySQL objects are represented as files, searches in INFORMATION_SCHEMA
string columns can be affected by file system case sensitivity. For more information, see Section
10.1.7.9, "Collation and INFORMATION_SCHEMA
Searches".
INFORMATION_SCHEMA
as Alternative to SHOW
Statements The SELECT ... FROM INFORMATION_SCHEMA
statement is intended as a more consistent
way to provide access to the information provided by the various SHOW
statements that MySQL supports (SHOW DATABASES
, SHOW TABLES
, and so forth). Using SELECT
has these advantages, compared to SHOW
:
It conforms to Codd's rules, because all access is done on tables.
You can use the familiar syntax of the SELECT
statement, and only need to learn some table and column names.
The implementor need not worry about adding keywords.
You can filter, sort, concatenate, and transform the results from INFORMATION_SCHEMA
queries into whatever format your application needs, such
as a data structure or a text representation to parse.
This technique is more interoperable with other database systems. For example, Oracle Database users are familiar with querying tables in the Oracle data dictionary.
Because SHOW
is familiar and widely used, the SHOW
statements remain as an alternative. In fact, along with the implementation
of INFORMATION_SCHEMA
, there are enhancements to SHOW
as described in Section
20.32, "Extensions to SHOW
Statements".
Each MySQL user has the right to access these tables, but can see only the rows in the tables that correspond to
objects for which the user has the proper access privileges. In some cases (for example, the ROUTINE_DEFINITION
column in the INFORMATION_SCHEMA.ROUTINES
table), users who have insufficient privileges
see NULL
. These restrictions do not apply for InnoDB
tables; you can see them with only the PROCESS
privilege.
The same privileges apply to selecting information from INFORMATION_SCHEMA
and
viewing the same information through SHOW
statements. In either case, you must have some privilege on an object to see information about it.
INFORMATION_SCHEMA
queries that search for information from more than one database
might take a long time and impact performance. To check the efficiency of a query, you can use EXPLAIN
. For information about using EXPLAIN
output to tune INFORMATION_SCHEMA
queries, see Section 8.2.4, "Optimizing INFORMATION_SCHEMA
Queries".
The implementation for the INFORMATION_SCHEMA
table structures in MySQL follows the
ANSI/ISO SQL:2003 standard Part 11 Schemata. Our intent is approximate compliance
with SQL:2003 core feature F021 Basic information schema.
Users of SQL Server 2000 (which also follows the standard) may notice a strong similarity. However, MySQL has
omitted many columns that are not relevant for our implementation, and added columns that are MySQL-specific.
One such column is the ENGINE
column in the INFORMATION_SCHEMA.TABLES
table.
Although other DBMSs use a variety of names, like syscat
or system
,
the standard name is INFORMATION_SCHEMA
.
To avoid using any name that is reserved in the standard or in DB2, SQL Server, or Oracle, we changed the names
of some columns marked "MySQL extension". (For example, we
changed COLLATION
to TABLE_COLLATION
in the TABLES
table.) See
the list of reserved words near the end of this article:
INFORMATION_SCHEMA
Reference
Sections The following sections describe each of the tables and columns in INFORMATION_SCHEMA
. For each column, there are three pieces of information:
"INFORMATION_SCHEMA
Name" indicates the name for the column in
the INFORMATION_SCHEMA
table. This corresponds to the standard SQL name
unless the "Remarks" field says "MySQL extension."
"SHOW
Name" indicates the equivalent field name in the
closest SHOW
statement, if there is one.
"Remarks" provides additional
information where applicable. If this field is NULL
, it means that the
value of the column is always NULL
. If this field says "MySQL extension," the column is a MySQL extension to standard SQL.
Many sections indicate what SHOW
statement is equivalent to a SELECT
that retrieves information from INFORMATION_SCHEMA
. For SHOW
statements that display information for the default database if you omit a
FROM
clause, you can often select
information for the default database by adding an db_name
AND TABLE_SCHEMA = SCHEMA()
condition to the WHERE
clause of a query that retrieves information from an INFORMATION_SCHEMA
table.
For information about INFORMATION_SCHEMA
tables specific to the InnoDB
storage engine, see Section
20.30, "INFORMATION_SCHEMA
Tables for InnoDB
". For
information about INFORMATION_SCHEMA
tables specific to the thread pool plugin, see
Section 20.31, "Thread Pool INFORMATION_SCHEMA
Tables".
For answers to questions that are often asked concerning the INFORMATION_SCHEMA
database, see Section B.7, "MySQL 5.6 FAQ: INFORMATION_SCHEMA
".