| |
INFORMATION_SCHEMA
INFORMATION_SCHEMA
обеспечивает доступ к
метаданным базы данных.
Метаданные представляют собой данные относительно данных, имени базы данных или таблицы, тип данных столбца или привилегии доступа. Другие термины, которые иногда используются для этой информации: каталог системы и словарь данных.
INFORMATION_SCHEMA
информационная база данных, место, которое
сохраняет информацию относительно всех других баз данных, которые
поддерживает сервер MySQL. Внутри INFORMATION_SCHEMA
имеется несколько таблиц только для чтения. Они фактически view, а не
обычные таблицы, так как не имеется никаких файлов, связанных с ними.
В действительности мы имеем базу данных INFORMATION_SCHEMA
,
хотя сервер не создает каталог баз данных с таким именем. Возможно выбрать
INFORMATION_SCHEMA
как заданную по умолчанию базу данных
инструкцией USE
, но это возможно только, чтобы читать содержание
таблиц. Вы не можете вставлять в них, модифицировать их или удалять из них.
Имеется пример инструкции, которая получает информацию
из INFORMATION_SCHEMA
:
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)
Объяснение: инструкция запрашивает список всех таблиц в базе данных
db5
в обратном алфавитном порядке, показывая только три части
информации: имя таблицы, тип таблицы и тип памяти.
Каждый пользователь MySQL имеет право обратиться к этим таблицам, но может
видеть только строки в таблицах, которые соответствуют объектам, для которых
пользователь имеет соответствующие привилегии доступа. В некоторых случаях
(например, столбец ROUTINE_DEFINITION
в таблице
INFORMATION_SCHEMA.ROUTINES
), пользователи, которые имеют
недостаточные привилегии, будут видеть NULL
.
Инструкция SELECT ... FROM INFORMATION_SCHEMA
предназначена
как более непротиворечивый способ обеспечить доступ к информации,
обеспеченной различными инструкциями SHOW
, которые MySQL
поддерживает (SHOW DATABASES
, SHOW TABLES
и им
подобные). Использование SELECT
имеет эти
преимущества перед SHOW
:
Это соответствует правилам Кодда. То есть, весь доступ выполнен на таблицах.
Никто не должен узнавать новый операторный синтаксис. Потому что они
уже знают, как работает SELECT
, они должны узнать
только объектные имена.
Реализаторы не должны волноваться относительно добавления ключевых слов.
Имеются миллионы возможных изменений вывода вместо одного. Это обеспечивает большее количество гибкости для прикладных программ, которые имеют изменяющиеся требования относительно метаданных, в которых они нуждаются.
Миграция проще, потому что каждая другая СУБД понимает этот способ.
Однако, потому что команды SHOW
популярна у пользователей
MySQL, никто их убирать не собирается. Фактически, наряду с реализацией
INFORMATION_SCHEMA
, имеются расширения для SHOW
.
Не имеется никакого различия между привилегиями, требуемыми для инструкций
SHOW
и нужными, чтобы выбрать информацию из
INFORMATION_SCHEMA
. В любом случае Вы должны иметь некоторую
привилегию на объекте, чтобы видеть информацию относительно этого объекта.
Реализация структур таблицы INFORMATION_SCHEMA
в MySQL
следует ANSI/ISO SQL:2003 Part 11 Schemata и в
основном отвечает стандарту SQL:2003 core feature F021
Basic information schema.
Пользователи SQL Server 2000 (который также следует стандарту) могут
обратить внимание на сильное сходство. Однако, MySQL опустил много столбцов,
которые нерелевантными для этой реализации, и добавил столбцы, которые
являются MySQL-специфическими. Один такой столбец: ENGINE
в
таблице INFORMATION_SCHEMA.TABLES
.
Следующие разделы описывают каждую из таблиц и столбцов, которые находятся
в INFORMATION_SCHEMA
. Для каждого столбца имеются
три блока информации:
INFORMATION_SCHEMA
Name указывает имя для столбца в таблице
INFORMATION_SCHEMA
. Это не соответствует стандартному имени
SQL, если в поле Remarks значится
MySQL extension.
SHOW
Name указывает
эквивалентное имя поля в самой близкой инструкции SHOW
,
если она имеется.
Remarks обеспечивает дополнительную
информацию. Если это поле NULL
, это означает, что значение
столбца всегда NULL
. Если это поле
MySQL extension, столбец является расширением
MySQL стандарта SQL.
Чтобы избегать использовать любое имя, которое зарезервировано в стандарте
SQL, DB2 или Oracle, имена некоторых столбцов, отмеченных как
MySQL extension переделаны. Например,
COLLATION
на TABLE_COLLATION
в таблице
TABLES
. Ссписок зарезервированных слов изложен в конце статьи на
http://www.dbazine.com/gulutzan5.shtml.
Определение для символьных столбцов (например,
TABLES.TABLE_NAME
) вообще
VARCHAR(
, где
N
) CHARACTER SET utf8N
по крайней мере 64.
Каждый раздел указывает то, какая инструкция SHOW
является
эквивалентной SELECT
, который собирает информацию из
INFORMATION_SCHEMA
, если имеется такая инструкция.
Обратите внимание: в настоящее время, имеются некоторые столбцы, расставленные не по порядку, а кое-какие еще вообще отсутствуют.
INFORMATION_SCHEMA SCHEMATA
Схема является базой данных, так что таблица SCHEMATA
обеспечивает информацию относительно баз данных.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
CATALOG_NAME | NULL
| |
SCHEMA_NAME | База данных | |
DEFAULT_CHARACTER_SET_NAME | ||
DEFAULT_COLLATION_NAME | ||
SQL_PATH | NULL |
Следующие инструкции эквивалентны:
SELECT SCHEMA_NAME AS `Database` FROM INFORMATION_SCHEMA.SCHEMATA [WHERE SCHEMA_NAME LIKE 'wild
'] SHOW DATABASES [LIKE 'wild
']
INFORMATION_SCHEMA TABLES
Таблица TABLES
обеспечивает информацию относительно
таблиц в базах данных.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
TABLE_CATALOG | NULL
| |
TABLE_SCHEMA | Table_ ... |
|
TABLE_NAME | Table_
... | |
TABLE_TYPE | ||
ENGINE | Тип памяти |
MySQL extension |
VERSION | Version |
MySQL extension |
ROW_FORMAT | Row_format |
MySQL extension |
TABLE_ROWS | Rows |
MySQL extension |
AVG_ROW_LENGTH | Avg_row_length |
MySQL extension |
DATA_LENGTH | Data_length |
MySQL extension |
MAX_DATA_LENGTH | Max_data_length
| MySQL extension |
INDEX_LENGTH | Index_length |
MySQL extension |
DATA_FREE | Data_free |
MySQL extension |
AUTO_INCREMENT | Auto_increment |
MySQL extension |
CREATE_TIME | Create_time |
MySQL extension |
UPDATE_TIME | Update_time |
MySQL extension |
CHECK_TIME | Check_time |
MySQL extension |
TABLE_COLLATION | Collation |
MySQL extension |
CHECKSUM | Checksum |
MySQL extension |
CREATE_OPTIONS | Create_options |
MySQL extension |
TABLE_COMMENT | Комментарий |
MySQL extension |
Примечания:
TABLE_SCHEMA
и TABLE_NAME
одиночное поле в выводе SHOW
, например:
Table_in_db1
.
TABLE_TYPE
должен быть BASE TABLE
или
VIEW
. Если таблица временная, то
TABLE_TYPE
= TEMPORARY
. Не имеется никаких
временных view, так что это однозначно.
Для разбитых на разделы таблиц, начиная с MySQL 5.1.9, столбец
ENGINE
показывает тип памяти, используемого всеми разделами.
Раньше этот столбец показывал для таких таблиц PARTITION
.
Столбец TABLE_ROWS
NULL
, если таблица
находится в базе данных INFORMATION_SCHEMA
. Для таблиц
InnoDB
счетчтк строк только грубая оценка,
используемая в оптимизации SQL.
Для таблиц, использующих тип памяти NDBCLUSTER
, начиная
с MySQL 5.1.12, столбец DATA_LENGTH
отражает истинное количество
памяти для столбцов с переменной шириной.
См. Глюк #18413.
Обратите внимание: так как MySQL Cluster распределяет память для столбцов с переменной шириной в 10-страничных блоках по 32 килобайта каждый, использование места для таких столбцов сообщено в приращениях по 320 KB.
Мы не имеем ничего для заданного по умолчанию набора символов таблицы.
TABLE_COLLATION
близко, потому что имена объединения начинаются
с имени набора символов.
Начиная с MySQL 5.1.9, столбец CREATE_OPTIONS
показывается разбитый на разделы, если таблица разбита на разделы.
Следующие инструкции эквивалентны:
SELECT table_name FROM INFORMATION_SCHEMA.TABLES [WHERE table_schema = 'db_name
'] [WHERE|AND table_name LIKE 'wild
'] SHOW TABLES [FROMdb_name
] [LIKE 'wild
']
INFORMATION_SCHEMA
COLUMNS
Таблица COLUMNS
обеспечивает информацию
относительно столбцов в таблицах.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
TABLE_CATALOG
| NULL | |
TABLE_SCHEMA | ||
TABLE_NAME | ||
COLUMN_NAME | Поле | |
ORDINAL_POSITION | См. примечания | |
COLUMN_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_TYPE | Type | MySQL extension |
COLUMN_KEY | Key |
MySQL extension |
EXTRA | Extra |
MySQL extension |
COLUMN_COMMENT | Comment |
MySQL extension |
Примечания:
В SHOW
Type
отображает
включает значения из нескольких различных столбцов COLUMNS
.
ORDINAL_POSITION
необходим, потому что Вы могли бы
указать ORDER BY ORDINAL_POSITION
. В отличие от
SHOW
, SELECT
не имеет автоматического упорядочения.
CHARACTER_OCTET_LENGTH
должен быть таким же, как
CHARACTER_MAXIMUM_LENGTH
, если бы не
многобайтовые наборы символов.
CHARACTER_SET_NAME
может быть получен из
Collation
. Например, если Вы говорите
SHOW FULL COLUMNS FROM t
, и видите в столбце
Collation
значение latin1_swedish_ci
,
набор символов то, что перед первым символом подчеркивания:
latin1
.
Следующие инструкции почти эквивалентны:
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 FROMtbl_name
[FROMdb_name
] [LIKE 'wild
']
INFORMATION_SCHEMA STATISTICS
Таблица STATISTICS
обеспечивает информацию
относительно индексов таблицы.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLE_CATALOG | NULL
| |
TABLE_SCHEMA | =база данных | |
TABLE_NAME | Table | |
NON_UNIQUE | Non_unique |
|
INDEX_SCHEMA | =база данных | |
INDEX_NAME | Key_name |
|
SEQ_IN_INDEX | Seq_in_index |
|
COLUMN_NAME | Column_name |
|
COLLATION | Collation |
|
CARDINALITY | Cardinality |
|
SUB_PART | Sub_part |
MySQL extension |
PACKED | Packed |
MySQL extension |
NULLABLE | Null |
MySQL extension |
INDEX_TYPE | Index_type |
MySQL extension |
COMMENT | Comment |
MySQL extension |
Примечания:
Не имеется никакой стандартной таблицы для индексов.
Предшествующий список подобен тому, что возвращается SQL Server 2000 для
sp_statistics
, за исключением того, что заменили имя
QUALIFIER
на CATALOG
и
OWNER
на SCHEMA
.
Предшествующая таблица и вывод из SHOW INDEX
получен от того
же самого родителя. Так что корреляция уже близкая.
Следующие инструкции эквивалентны:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name = 'tbl_name
' [AND table_schema = 'db_name
'] SHOW INDEX FROMtbl_name
[FROMdb_name
]
INFORMATION_SCHEMA USER_PRIVILEGES
Таблица USER_PRIVILEGES
обеспечивает информацию относительно
глобальных привилегий. Эта информация исходит из таблицы предоставления
привилегий mysql.user
.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
GRANTEE | '
value, MySQL extension | |
TABLE_CATALOG | NULL ,
MySQL extension | |
PRIVILEGE_TYPE | MySQL extension | |
IS_GRANTABLE | MySQL extension |
Примечания:
Это ненормативная таблица. Требуется значения от
таблицы mysql.user
.
INFORMATION_SCHEMA SCHEMA_PRIVILEGES
Таблица SCHEMA_PRIVILEGES
обеспечивает информацию
относительно схемы привилегиями (базы данных). Эта информация исходит из
таблицы предоставления mysql.db
.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
GRANTEE | '
value, MySQL extension | |
TABLE_CATALOG |
NULL , MySQL extension | |
TABLE_SCHEMA | MySQL extension | |
PRIVILEGE_TYPE | MySQL extension | |
IS_GRANTABLE | MySQL extension |
Примечания:
Это ненормативная таблица. Требуется значения от
таблицы mysql.db
.
INFORMATION_SCHEMA TABLE_PRIVILEGES
Таблица TABLE_PRIVILEGES
обеспечивает информацию относительно
привилегий таблицы. Эта информация исходит из таблицы предоставления
mysql.tables_priv
.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
GRANTEE | '
value | |
TABLE_CATALOG | NULL
| |
TABLE_SCHEMA | ||
TABLE_NAME | ||
PRIVILEGE_TYPE | ||
IS_GRANTABLE |
Примечания:
PRIVILEGE_TYPE
может содержать одно (и
только одно!) из этих значений: SELECT
, INSERT
,
UPDATE
, REFERENCES
, ALTER
,
INDEX
, DROP
или CREATE VIEW
.
Следующие инструкции не эквивалентны:
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES SHOW GRANTS ...
INFORMATION_SCHEMA COLUMN_PRIVILEGES
Таблица COLUMN_PRIVILEGES
обеспечивает информацию
относительно привилегий столбца. Эта информация исходит из таблицы
предоставления mysql.columns_priv
.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
GRANTEE | '
value | |
TABLE_CATALOG | NULL
| |
TABLE_SCHEMA | ||
TABLE_NAME | ||
COLUMN_NAME | ||
PRIVILEGE_TYPE | ||
IS_GRANTABLE |
Примечания:
В выводе из SHOW FULL COLUMNS
все
привилегии перечислены в одном поле и в нижнем регистре, например,
select, insert, update, references
. В
COLUMN_PRIVILEGES
имеется одна привилегия на
строку верхнего регистра.
PRIVILEGE_TYPE
может содержать одно (и только одно!) из
этих значений: SELECT
, INSERT
, UPDATE
и REFERENCES
.
Если пользователь имеет опцию GRANT OPTION
,
IS_GRANTABLE
должна быть YES
. Иначе
IS_GRANTABLE
будет NO
. Вывод не вносит в список
GRANT OPTION
как отдельную привилегию.
Следующие инструкции не эквивалентны:
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES SHOW GRANTS ...
INFORMATION_SCHEMA
CHARACTER_SETS
Таблица CHARACTER_SETS
обеспечивает информацию относительно
доступных наборов символов.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
CHARACTER_SET_NAME | Charset |
|
DEFAULT_COLLATE_NAME | Default collation
| |
DESCRIPION | Description |
MySQL extension |
MAXLEN | Maxlen
| MySQL extension |
Следующие инструкции эквивалентны:
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS [WHERE name LIKE 'wild
'] SHOW CHARACTER SET [LIKE 'wild
']
INFORMATION_SCHEMA
COLLATIONS
Таблица COLLATIONS
обеспечивает информацию относительно
объединений для каждого набора символов.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
COLLATION_NAME | Collation |
|
CHARACTER_SET_NAME | Charset |
MySQL extension |
ID | Id |
MySQL extension |
IS_DEFAULT | Default |
MySQL extension |
IS_COMPILED | Compiled |
MySQL extension |
SORTLEN | Sortlen |
MySQL extension |
Следующие инструкции эквивалентны:
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS [WHERE collation_name LIKE 'wild
'] SHOW COLLATION [LIKE 'wild
']
INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY
Таблица COLLATION_CHARACTER_SET_APPLICABILITY
указывает то,
какому объединению соответствует набор символов. Столбцы эквивалентны к
первым двум полям вывода SHOW COLLATION
.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
COLLATION_NAME | Collation |
|
CHARACTER_SET_NAME | Charset |
INFORMATION_SCHEMA TABLE_CONSTRAINTS
Таблица TABLE_CONSTRAINTS
описывает, которые
таблицы имеют ограничения.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
CONSTRAINT_CATALOG | NULL
| |
CONSTRAINT_SCHEMA | ||
CONSTRAINT_NAME | ||
TABLE_SCHEMA | ||
TABLE_NAME | ||
CONSTRAINT_TYPE |
Примечания:
Значение CONSTRAINT_TYPE
может быть
UNIQUE
, PRIMARY KEY
или FOREIGN KEY
.
Информация UNIQUE
и PRIMARY KEY
соответствует полю Key_name
в выводе SHOW INDEX
,
если поле Non_unique
равно 0
.
Столбец CONSTRAINT_TYPE
может содержать одно из этих
значений: UNIQUE
, PRIMARY KEY
,
FOREIGN KEY
, CHECK
. Это столбец CHAR
(не ENUM
). Значение CHECK
недоступно, пока пакет
не поддерживает CHECK
.
INFORMATION_SCHEMA KEY_COLUMN_USAGE
Таблица KEY_COLUMN_USAGE
описывает, которые столбцы
ключа имеют ограничения.
INFORMATION_SCHEMA 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 |
Примечания:
Если ограничение внешний ключ, то это столбец внешнего ключа, не столбец, а не тот столюец, на который внешний ключ ссылается.
Значение ORDINAL_POSITION
позиция столбца внутри
ограничения, а не позиция столбца внутри таблицы.
Позиции столбца пронумерованы, начиная с 1.
Значение POSITION_IN_UNIQUE_CONSTRAINT
NULL
для ограничений unique и primary-key. Для ограничений foreign-key это
порядковая позиция в ключе таблицы, которая вызвана.
Например, предположите, что имеется две таблицы с именами
t1
и t3
, которые имеют следующие определения:
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;
Для этих двух таблиц таблица KEY_COLUMN_USAGE
имеет две строки:
Одна строка с
CONSTRAINT_NAME
= 'PRIMARY'
,
TABLE_NAME
= 't1'
,
COLUMN_NAME
= 's3'
,
ORDINAL_POSITION
= 1
,
POSITION_IN_UNIQUE_CONSTRAINT
= NULL
.
Одна строка с
CONSTRAINT_NAME
= 'CO'
, TABLE_NAME
=
't3'
, COLUMN_NAME
= 's2'
,
ORDINAL_POSITION
= 1
,
POSITION_IN_UNIQUE_CONSTRAINT
= 1
.
INFORMATION_SCHEMA ROUTINES
Таблица ROUTINES
обеспечивает информацию относительно
сохраненных подпрограмм (процедуры и функций). Таблица ROUTINES
не включает определяемые пользователем функции (UDF).
Столбец mysql.proc
name
указывает столбец таблицы mysql.proc
, который соответствует
столбцу таблицы INFORMATION_SCHEMA.ROUTINES
.
INFORMATION_SCHEMA 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 | (data type descriptor) | |
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 |
MySQL extension |
ROUTINE_COMMENT | comment |
MySQL extension |
DEFINER | definer |
MySQL extension |
Примечания:
MySQL вычисляет EXTERNAL_LANGUAGE
так:
Если mysql.proc.language='SQL'
,
EXTERNAL_LANGUAGE
равен NULL
Иначе EXTERNAL_LANGUAGE
равен
mysql.proc.language
. Однако, пока не имеется внешних языков, так
что это всегда NULL
.
INFORMATION_SCHEMA VIEWS
Таблица VIEWS
обеспечивает информацию относительно view в
базах данных. Вы должны иметь привилегию SHOW VIEW
, чтобы
обратиться к этой таблице.
INFORMATION_SCHEMA Name |
SHOW Name |
Remarks |
TABLE_CATALOG | NULL | |
TABLE_SCHEMA | ||
TABLE_NAME | ||
VIEW_DEFINITION | ||
CHECK_OPTION | ||
IS_UPDATABLE | ||
DEFINER | ||
SECURITY_TYPE |
Примечания:
Столбец VIEW_DEFINITION
показывает
большинство из того, что Вы видите в поле Create Table
, которое
выводится SHOW CREATE VIEW
. Пропустите слова перед
SELECT
и перед WITH CHECK OPTION
. Предположите, что
первоначальная инструкция была такой:
CREATE VIEW v AS SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION;
Затем определение этого view выглядит следующим образом:
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
Столбец CHECK_OPTION
всегда
имеет значение NONE
.
Столбец IS_UPDATABLE
равен YES
, если view
обновляемый, в противном случае NO
.
Столбец DEFINER
указывает, кто определил view.
SECURITY_TYPE
имеет значение
DEFINER
или INVOKER
.
INFORMATION_SCHEMA
TRIGGERS
Таблица TRIGGERS
обеспечивает информацию относительно
триггеров. Вы должны иметь привилегию SUPER
,
чтобы обратиться к этой таблице.
INFORMATION_SCHEMA 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 ) | |
SQL_MODE | MySQL extension | |
DEFINER | MySQL extension |
Примечания:
Столбцы TRIGGER_SCHEMA
и
TRIGGER_NAME
содержат имя базы данных, в которой находится
триггер и его имя, соответственно.
Столбец EVENT_MANIPULATION
содержит одно из значений
'INSERT'
, 'DELETE'
или 'UPDATE'
.
Каждый триггер связан точно с одной таблицей. Столбцы
EVENT_OBJECT_SCHEMA
и EVENT_OBJECT_TABLE
содержат
базу данных, в которой эта таблица расположена, и имя таблицы.
Инструкция ACTION_ORDER
содержит порядковую позицию
действия триггера внутри списка подобных в той же самой таблице. В настоящее
время это значение всегда 0
, потому что невозможно иметь больше,
чем один триггер с теми же самыми EVENT_MANIPULATION
и
ACTION_TIMING
на той же самой таблице.
Столбец ACTION_STATEMENT
содержит инструкцию, которая
будет выполнена, когда вызывается триггер. Это текст, отображаемый в столбце
Statement
вывода SHOW TRIGGERS
. Обратите внимание,
что на эти тексты распространяется кодирование в UTF-8.
Столбец ACTION_ORIENTATION
всегда
содержит значения 'ROW'
.
Столбец ACTION_TIMING
содержит одно из двух значений:
'BEFORE'
или 'AFTER'
.
Столбцы ACTION_REFERENCE_OLD_ROW
и
ACTION_REFERENCE_NEW_ROW
содержат старые и новые идентификаторы
столбцов, соответственно. Это означает, что
ACTION_REFERENCE_OLD_ROW
всегда содержит значение
'OLD'
и ACTION_REFERENCE_NEW_ROW
'NEW'
.
Столбец SQL_MODE
показывает режим сервера SQL, который
был установлен, когда триггер был создан (и таким образом, который остается в
силе для триггера, когда это вызывается, независимо от текущей ситуации).
Возможный диапазон значений для этого столбца такой же, как для переменной
системы sql_mode
.
Столбец DEFINER
был добавлен в MySQL 5.1.2.
DEFINER
указывает, кто определил триггер.
Следующие столбцы в настоящее время всегда содержат NULL
:
TRIGGER_CATALOG
, EVENT_OBJECT_CATALOG
,
ACTION_CONDITION
, ACTION_REFERENCE_OLD_TABLE
,
ACTION_REFERENCE_NEW_TABLE
и CREATED
.
Пример, используем ins_sum
:
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 SQL_MODE: DEFINER: me@localhost
INFORMATION_SCHEMA
PLUGINS
Таблица PLUGINS
обеспечивает информацию
относительно расширений сервера.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
PLUGIN_NAME | Name | MySQL extension |
PLUGIN_VERSION | MySQL extension | |
PLUGIN_STATUS | Status |
MySQL extension |
PLUGIN_TYPE | Type |
MySQL extension |
PLUGIN_TYPE_VERSION | MySQL extension | |
PLUGIN_LIBRARY | Library |
MySQL extension |
PLUGIN_LIBRARY_VERSION | MySQL extension | |
PLUGIN_AUTHOR | MySQL extension | |
PLUGIN_DESCRIPTION | MySQL extension |
Примечания:
Таблица PLUGINS
ненормативная. Это было
добавлено в MySQL 5.1.5.
INFORMATION_SCHEMA
ENGINES
Таблица ENGINES
обеспечивает информацию
относительно типов памяти.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
ENGINE | Engine
| MySQL extension |
SUPPORT | Support |
MySQL extension |
COMMENT | Comment |
MySQL extension |
TRANSACTIONS | Transactions |
MySQL extension |
XA | XA | MySQL extension |
SAVEPOINTS | Savepoints |
MySQL extension |
Примечания:
Таблица ENGINES
ненормативная. Это было
добавлено в MySQL 5.1.5.
INFORMATION_SCHEMA
PARTITIONS
Таблица PARTITIONS
обеспечивают информацию
относительно разделов таблицы.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
TABLE_CATALOG | MySQL extension | |
TABLE_SCHEMA | MySQL extension | |
TABLE_NAME | MySQL extension | |
PARTITION_NAME | MySQL extension | |
SUBPARTITION_NAME | MySQL extension | |
PARTITION_ORDINAL_POSITION | MySQL extension | |
SUBPARTITION_ORDINAL_POSITION | MySQL extension | |
PARTITION_METHOD | MySQL extension | |
SUBPARTITION_METHOD | MySQL extension | |
PARTITION_EXPRESSION | MySQL extension | |
SUBPARTITION_EXPRESSION | MySQL extension | |
PARTITION_DESCRIPTION | MySQL extension | |
TABLE_ROWS | MySQL extension | |
AVG_ROW_LENGTH | MySQL extension | |
DATA_LENGTH | MySQL extension | |
MAX_DATA_LENGTH | MySQL extension | |
INDEX_LENGTH | MySQL extension | |
DATA_FREE | MySQL extension | |
CREATE_TIME | MySQL extension | |
UPDATE_TIME | MySQL extension | |
CHECK_TIME | MySQL extension | |
CHECKSUM | MySQL extension | |
PARTITION_COMMENT | MySQL extension | |
NODEGROUP | MySQL extension | |
TABLESPACE_NAME | MySQL extension |
Примечания:
Таблица PARTITIONS
ненормативная. Это
было добавлено в MySQL 5.1.6.
Каждая запись в этой таблице соответствует индивидуальному разделу или подразделу разбитой на разделы таблицы.
TABLE_CATALOG
: Этот столбец всегда NULL
.
TABLE_SCHEMA
: Этот столбец содержит имя базы данных,
которой таблица принадлежит.
TABLE_NAME
: Этот столбец содержит имя
таблицы, содержащей раздел.
PARTITION_NAME
: Этот столбец содержит имя раздела.
SUBPARTITION_NAME
: Если запись таблицы
PARTITIONS
представляет подраздел, то этот столбец содержит имя
подраздела, иначе это NULL
.
PARTITION_ORDINAL_POSITION
: Все разделы индексированы в
том же самом порядке, в каком они определены, 1 является номером, назначенным
первому разделу. Индексация может изменяться, когда разделы добавлены,
удалены и реорганизованы. Показанный номер в этом столбце отражает текущий
порядок, принимая во внимание любые изменения индексации.
SUBPARTITION_ORDINAL_POSITION
: Подразделы внутри данного
раздела также индексированы и повторно проиндексированы тем же самым
способом, каким все разделы индексированы внутри таблицы.
PARTITION_METHOD
: Одно из значений
RANGE
, LIST
, HASH
,
LINEAR HASH
, KEY
или LINEAR KEY
. То
есть, один из типов доступного выделения разделов.
SUBPARTITION_METHOD
: Одно из значений HASH
,
LINEAR HASH
, KEY
или LINEAR KEY
. То
есть, один из типов доступного выделения подразделов.
PARTITION_EXPRESSION
: Это выражение для функции выделения
разделов, используемой в инструкции CREATE TABLE
или ALTER
TABLE
, которая создала текущую схему выделения разделов таблицы.
Например, рассмотрите разбитую на разделы таблицу, созданную в базе данных
test
, используя эту инструкцию:
CREATE TABLE tp (c1 INT, c2 INT, c3 VARCHAR(25)) PARTITION BY HASH(c1 + c2) PARTITIONS 4;
Столбец в записи PARTITION_EXPRESSION
в записи таблицы
PARTITIONS
для раздела из этой таблицы отображает
c1+c2
, как показано здесь:
mysql> SELECT DISTINCT PARTITION_EXPRESSION > FROM INFORMATION_SCHEMA.PARTITIONS > WHERE TABLE_NAME='tp' AND TABLE_SCHEMA='test'; +----------------------+ | PARTITION_EXPRESSION | +----------------------+ | c1 + c2| +----------------------+ 1 row in set (0.09 sec)
SUBPARTITION_EXPRESSION
: Это работает в том же самом
режиме для выражения подвыделения разделов, которое определяет выделение
подразделов для таблицы, как PARTITION_EXPRESSION
делает для
выражения выделения разделов, используемого, чтобы определить выделение
разделов таблицы. Если таблица не имеет никаких подразделов, то этот столбец
всегда хранит значение NULL
.
PARTITION_DESCRIPTION
: Этот столбец используется для
разделов RANGE и LIST. Для раздела RANGE
это содержит набор
значений в предложении VALUES LESS THAN
, которое может быть
целым числом или MAXVALUE
. Для раздела LIST
этот
столбец содержит значения, определенные в предложении VALUES IN
раздела, которое является разделяемым запятыми
списком целочисленных значений.
Для разделов, чьими PARTITION_METHOD
является другое, чем
RANGE
или LIST
, этот столбец
всегда будет хранить NULL
.
TABLE_ROWS
: Число строк таблиц в разделе.
AVG_ROW_LENGTH
: средняя длина строк, сохраненных в этом
разделе или подразделе, в байтах.
Это вычисляется как DATA_LENGTH
разделенное
на TABLE_ROWS
.
DATA_LENGTH
: Общая длина всех строк, сохраненных в этом
разделе или подразделе, в байтах. То есть, общее число байтов, сохраненных в
разделе или подразделе.
MAX_DATA_LENGTH
: Максимальное число байтов, которые могут
быть сохранены в этом разделе или подразделе.
INDEX_LENGTH
: Длина индексного файла для этого раздела
или подраздела в байтах.
DATA_FREE
: Число байт, распределенных разделу или
подразделу, но им не используемых.
CREATE_TIME
: Время создания раздела или подраздела.
UPDATE_TIME
: Время, когда раздел или подраздел
был в последний раз изменен.
CHECK_TIME
: Последний раз, когда таблица, которой этот
раздел или подраздел принадлежит, была проверена.
Обратите внимание: некоторые
типы памяти не модифицируют это время. Для таблиц, использующих эти типы
памяти, это значение всегда NULL
.
CHECKSUM
: Значение контрольной суммы, если есть. Иначе
этот столбец NULL
.
PARTITION_COMMENT
: Этот столбец содержит текст любого
комментария, сделанного для раздела.
Значение по умолчанию для этого столбца: пустая строка.
NODEGROUP
: Это группа узлов, которой раздел принадлежит.
Это релевантно только для таблиц MySQL Cluster, иначе значение
этого столбца всегда 0
.
TABLESPACE_NAME
: Этот столбец содержит имя места таблицы,
которому раздел принадлежит. В MySQL 5.1 значение этого
столбца всегда DEFAULT
.
Важно: если любые разбитые
на разделы таблицы, созданные в MySQL версии до MySQL 5.1.6 присутствуют
после обновления до MySQL 5.1.6 или позже, невозможен SELECT
из,
SHOW
или DESCRIBE
таблиц PARTITIONS
.
Не разбитая на разделы таблица имеет одну запись в
INFORMATION_SCHEMA.PARTITIONS
, однако, значения столбцов
PARTITION_NAME
, SUBPARTITION_NAME
,
PARTITION_ORDINAL_POSITION
,
SUBPARTITION_ORDINAL_POSITION
, PARTITION_METHOD
,
SUBPARTITION_METHOD
, PARTITION_EXPRESSION
,
SUBPARTITION_EXPRESSION
и PARTITION_DESCRIPTION
все
NULL
. Столбец PARTITION_COMMENT
в этом случае пуст.
В MySQL 5.1 имеется также только одна запись в таблице
PARTITIONS
для таблицы, использующей NDBCluster
. Те
же самые столбцы также NULL
(или пусты), как и для не разбитой
на разделы таблицы.
INFORMATION_SCHEMA EVENTS
Таблица EVENTS
обеспечивает информацию
относительно планируемых событий.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
EVENT_CATALOG | NULL , MySQL
extension | |
EVENT_SCHEMA | Db
| MySQL extension |
EVENT_NAME | Name |
MySQL extension |
DEFINER |
Definer | MySQL extension |
EVENT_BODY | MySQL extension | |
EVENT_DEFINITION | MySQL extension | |
EVENT_TYPE | Type |
MySQL extension |
EXECUTE_AT | Execute at |
MySQL extension |
INTERVAL_VALUE | Interval value |
MySQL extension |
INTERVAL_FIELD | Interval field |
MySQL extension |
SQL_MODE | MySQL extension | |
STARTS | Starts |
MySQL extension |
ENDS | Ends | MySQL extension |
STATUS | Status |
MySQL extension |
ON_COMPLETION | MySQL extension | |
CREATED | MySQL extension | |
LAST_ALTERED | MySQL extension | |
LAST_EXECUTED | MySQL extension | |
EVENT_COMMENT | MySQL extension |
Примечания:
Таблица EVENTS
ненормативная. Это было
добавлено в MySQL 5.1.6.
EVENT_CATALOG
: значение этого столбца всегда
NULL
.
EVENT_SCHEMA
: имя схемы (базы данных), которой
это событие принадлежит.
EVENT_NAME
: имя события.
DEFINER
: пользователь, который создал событие.
Всегда отображается в формате
'
.user_name
'@'host_name
'
EVENT_BODY
: Язык, используемый для инструкций в
предложении DO
события, в MySQL 5.1 это всегда SQL
.
Этот столбец был добавлен в MySQL 5.1.12. Это не должно быть спутано со
столбцом того же самого имени (теперь называется
EVENT_DEFINITION
) в старых версиях MySQL.
EVENT_DEFINITION
: текст инструкции SQL, составляющей
предложение DO
события, другими словами, инструкция,
выполненная этим событием.
Обратите внимание: до
MySQL 5.1.12 этот столбец назывался EVENT_BODY
.
EVENT_TYPE
: одно из двух значений
ONE TIME
или RECURRING
.
EXECUTE_AT
: для одноразового события это значение
the DATETIME
, определенное в предложении AT
инструкции CREATE EVENT
, используемой, чтобы создать событие,
или последней инструкции ALTER EVENT
, которая изменила событие.
Значение, показанное в этом столбце, отражает добавление или вычитание любого
значения INTERVAL, включенного в предложение AT
события.
Например, если событие создано, используя ON SCHEDULE AT
CURRENT_TIMESTAMP + '1:6' DAY_HOUR
, а событие было создано в
2006-02-09 14:05:30, значение, показанное в этом столбце, будет
'2006-02-10 20:05:30'
.
Если синхронизация события определена предложением EVERY
вместо предложения AT
(то есть, если событие повторяется),
значение этого столбца NULL
.
INTERVAL_VALUE
: для многоразовых событий этот столбец
содержит числовую часть предложения EVERY
события.
Для одноразового события (то есть, события, чья синхронизация определена
предложением AT
) значение этого столбца NULL
.
INTERVAL_FIELD
: для многоразовых событий этот столбец
содержит модульную часть предложения EVERY
, управляя
синхронизацией события с префиксом 'INTERVAL_
'. Таким образом,
этот столбец содержит значение типа 'INTERVAL_YEAR
',
'INTERVAL_QUARTER
', 'INTERVAL_DAY
' или нечто
подобное. Для одноразового события значение этого столбца NULL
.
SQL_MODE
: режим SQL во время создания
или изменения события.
STARTS
: для многоразовых событий, чье определение
включает предложение STARTS
, этот столбец содержит
соответствующее значение DATETIME
. Как и со столбцом
EXECUTE_AT
, это значение решает любые используемые выражения.
Если не имеется никакого предложения STARTS
, воздействующего
на синхронизацию события, этот столбец пуст. До MySQL 5.1.8 это содержало
NULL
в таких случаях.
ENDS
: то же самое, но для предложения ENDS
.
STATUS
: одно из двух значений:
ENABLED
или DISABLED
.
ON_COMPLETION
: одно из двух значений:
PRESERVE
или NOT PRESERVE
.
CREATED
: дата и время, когда событие было
создано. Это значение DATETIME
.
LAST_ALTERED
: дата и время, когда событие было в
последний раз изменено. Это значение DATETIME
. Если событие не
изменялось, начиная с создания, этот столбец хранит то же самое значение,
что и столбец CREATED
.
LAST_EXECUTED
: дата и время, когда событие в последний
раз выполнилось. Значение DATETIME
. Если событие никогда не
выполнялось, значение этого столбца NULL
.
EVENT_COMMENT
: текст комментария, если событие его имеет.
Если не имеется никакого комментария, значение этого столбца пустая строка.
Пример: предположите, что
пользователь jon@ghidora
создает событие e_daily
, а
затем изменяет его через несколько минут, используя инструкцию
ALTER EVENT
, как показано здесь:
DELIMITER | CREATE EVENT e_daily ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR DISABLE COMMENT 'Saves total number of sessions and clears the table once per day.' DO BEGIN INSERT INTO site_activity.totals (when, total) SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions; DELETE FROM site_activity.sessions; END | DELIMITER ; ALTER EVENT e_daily ENABLED;
Обратите внимание, что комментарии могут охватывать много строк.
Этот пользователь может затем выполнять следующую инструкцию
SELECT
и получать показанный вывод:
mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS > WHERE EVENT_NAME = 'e_daily' AND > EVENT_SCHEMA = 'myschema'\G *************************** 1. row *************************** EVENT_CATALOG: NULL EVENT_SCHEMA: myschema EVENT_NAME: e_daily DEFINER: jon@ghidora EVENT_BODY: BEGIN INSERT INTO site_activity.totals (when, total) SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions; DELETE FROM site_activity.sessions; END EVENT_TYPE: RECURRING EXECUTE_AT: NULL INTERVAL_VALUE: 1 INTERVAL_FIELD: INTERVAL_DAY SQL_MODE: NULL STARTS: 2006-02-09 10:41:23 ENDS: NULL STATUS: ENABLED ON_COMPLETION: DROP CREATED: 2006-02-09 14:35:35 LAST_ALTERED: 2006-02-09 14:41:23 LAST_EXECUTED: NULL EVENT_COMMENT: Saves total number of sessions and clears the table once per day. 1 row in set (0.50 sec)
Важно: времена, отображаемые
столбцами STARTS
, ENDS
и LAST_EXECUTED
в настоящее время даны в терминах универсального времени (GMT или UTC),
независимо от установки часового пояса сервера. Это верно и для столбцов
starts
, ends
и last_executed
в таблице
mysql.event
, а также для столбцов Starts
и
Ends
в таблице SHOW [FULL] EVENTS
. Зато столбцы
CREATED
и LAST_ALTERED
используют часовой пояс
сервера (также, как столбцы created
и last_altered
в таблице mysql.event
), чтобы Вам жизнь медом не казалась.
Например, событие e_daily
, показанное ранее, было создано на
компьютере в Brisbane, Australia, в 14:35:35 9 февраля 2006. Восточное
стандартное время Австралии, которое также может быть выражено как
GMT+10.00
. Определение события модифицировалось (используя
ALTER EVENT
) на несколько минут позже, в 14:41:23. Это значения,
отображаемые для CREATED
и LAST_ALTERED
. Событие
планируется, чтобы начать выполнять 6 часов спустя, в 20:41:23 в тот же самый
лень, по местному времени. Вычитание 10 часов из этого, чтобы получить
универсальное время выдает 10:41:23, и это то значение, которое
показывается для STARTS
.
На это использование универсального времени нельзя положиться в прикладных программах, поскольку ожидается изменить на сервере местное время (Глюк #16420).
INFORMATION_SCHEMA FILES
Таблица FILES
обеспечивает информацию относительно файлов, в
которых сохранены данные дисковых таблиц MySQL NDB
.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
FILE_ID | MySQL extension | |
FILE_NAME | MySQL extension | |
FILE_TYPE | MySQL extension | |
TABLESPACE_NAME | MySQL extension | |
TABLE_CATALOG | MySQL extension | |
TABLE_SCHEMA | MySQL extension | |
TABLE_NAME | MySQL extension | |
LOGFILE_GROUP_NAME | MySQL extension | |
LOGFILE_GROUP_NUMBER | MySQL extension | |
ENGINE | MySQL extension | |
FULLTEXT_KEYS | MySQL extension | |
DELETED_ROWS | MySQL extension | |
UPDATE_COUNT | MySQL extension | |
FREE_EXTENTS | MySQL extension | |
TOTAL_EXTENTS | MySQL extension | |
EXTENT_SIZE | MySQL extension | |
INITIAL_SIZE | MySQL extension | |
MAXIMUM_SIZE | MySQL extension | |
AUTOEXTEND_SIZE | MySQL extension | |
CREATION_TIME | MySQL extension | |
LAST_UPDATE_TIME | MySQL extension | |
LAST_ACCESS_TIME | MySQL extension | |
RECOVER_TIME | MySQL extension | |
TRANSACTION_COUNTER | MySQL extension | |
VERSION | MySQL extension | |
ROW_FORMAT | MySQL extension | |
TABLE_ROWS | MySQL extension | |
AVG_ROW_LENGTH | MySQL extension | |
DATA_LENGTH | MySQL extension | |
MAX_DATA_LENGTH | MySQL extension | |
INDEX_LENGTH | MySQL extension | |
DATA_FREE | MySQL extension | |
CREATE_TIME | MySQL extension | |
UPDATE_TIME | MySQL extension | |
CHECK_TIME | MySQL extension | |
CHECKSUM | MySQL extension | |
STATUS | MySQL extension | |
EXTRA | MySQL extension |
Примечания:
FILE_ID
значения
столбца автосгенерированы.
FILE_NAME
имя журнала UNDO
, созданного
CREATE LOGFILE GROUP
или ALTER LOGFILE GROUP
, либо
файла данных, созданного CREATE TABLESPACE
или ALTER TABLESPACE
.
FILE_TYPE
одно из значений
UNDOFILE
или DATAFILE
.
TABLESPACE_NAME
имя пространства таблиц,
с которым файл связан.
В MySQL 5.1 значение столбца
TABLESPACE_CATALOG
всегда NULL
.
TABLE_NAME
имя дисковой таблицы данных, с которой файл
связан, если есть.
Столбец LOGFILE_GROUP_NAME
дает имя группы журнала,
которой журнал или файл данных принадлежит.
Для журнала UNDO
LOGFILE_GROUP_NUMBER
содержит автосгенерированный номер ID группы журналов, к
которой журнал принадлежит.
Для журнала данных MySQL Cluster или файла данных, значение столбца
ENGINE
всегда NDB
или NDBCLUSTER
.
Для журнала данных MySQL Cluster или файла данных, значение столбца
FULLTEXT_KEYS
всегда пусто.
Столбец FREE EXTENTS
отображает число блоков, которые еще
не использовались файлом. Столбец TOTAL EXTENTS
показывает общее
число блоков, распределенных файлу.
Различие между этими двумя столбцами: число блоков, используемых в настоящее время файлом:
SELECT TOTAL_EXTENTS - FREE_EXTENTS AS extents_used FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = 'myfile.dat';
Вы можете аппроксимировать количество дискового пространства, находящегося
в использовании файлом, умножая это различие на значение столбца
EXTENT_SIZE
, который дает размер блока для файла в байтах:
SELECT (TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE AS bytes_used FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = 'myfile.dat';
Точно так же Вы можете оценивать количество места, которое остается
доступным в данном файле, умножая
FREE_EXTENTS
на EXTENT_SIZE
:
SELECT FREE_EXTENTS * EXTENT_SIZE AS bytes_free FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME = 'myfile.dat';
Важно: значения байт,
произведенные предшествующими запросами только приближения, и их точность
обратно пропорциональна значению EXTENT_SIZE
. То есть, больший
EXTENT_SIZE
становится менее точным.
Также важно не забыть, что, если только блок используется, это не может быть освобождено снова без того, чтобы удалить файл данных, частью которого блок является. Это означает, что удаление из дисковой таблицы данных не освобождает дисковое пространство.
Размер блока может быть установлен в инструкции CREATE
TABLESPACE
.
Столбец INITIAL_SIZE
показывает размер в байтах файла.
Это то же самое значение, которое использовалось в предложении
INITIAL_SIZE
команд CREATE LOGFILE GROUP
,
ALTER LOGFILE GROUP
, CREATE TABLESPACE
или
ALTER TABLESPACE
использовавшихся, чтобы создать файл.
Для файлов MySQL 5.1 Cluster Disk Data значение столбца
MAXIMUM_SIZE
всегда такое же, как INITIAL_SIZE
, а
столбец AUTOEXTEND_SIZE
всегда пуст.
Столбец CREATION_TIME
показывает дату и время, когда файл
был создан. LAST_UPDATE_TIME
отображает дату и время, когда файл
был последний раз изменен. LAST_ACCESSED
обеспечивает дату и
время, когда к файлу последний раз обращался сервер.
В настоящее время значения этих столбцов сообщены операционной системой и
не обеспечены NDB
. Там, где никакое значение не обеспечивается
операционной системой, эти столбцы отображаются
0000-00-00 00:00:00
.
Для файлов данных MySQL Cluster значение столбцов
RECOVER_TIME
и TRANSACTION_COUNTER
всегда
0
.
Для файлов данных MySQL 5.1 Cluster следующие
столбцы всегда NULL
:
VERSION
ROW_FORMAT
TABLE_ROWS
AVG_ROW_LENGTH
DATA_LENGTH
MAX_DATA_LENGTH
INDEX_LENGTH
DATA_FREE
CREATE_TIME
UPDATE_TIME
CHECK_TIME
CHECKSUM
Для файлов данных MySQL Cluster значение столбца
STATUS
всегда NORMAL
.
Для файлов данных MySQL Cluster столбец EXTRA
показывает,
которому узлу данных принадлежит файл, поскольку каждый узел данных имеет
собственную копию файла. Например, предположите, что Вы используете эту
инструкцию относительно MySQL Cluster с четырьмя узлами данных:
CREATE LOGFILE GROUP mygroup ADD UNDOFILE 'new_undo.dat' INITIAL_SIZE 2G ENGINE NDB;
После удачного выполнения инструкции CREATE LOGFILE GROUP
Вы должны видеть результат, подобный показанному здесь для этого
запроса к таблице FILES
:
mysql> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA -> FROM INFORMATION_SCHEMA.FILES -> WHERE FILE_NAME = 'new_undo.dat'; +--------------------+-----------+----------------+ | LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA | +--------------------+-----------+----------------+ | mygroup | UNDO FILE | CLUSTER_NODE=3 | | mygroup | UNDO FILE | CLUSTER_NODE=4 | | mygroup | UNDO FILE | CLUSTER_NODE=5 | | mygroup | UNDO FILE | CLUSTER_NODE=6 | +--------------------+-----------+----------------+ 4 rows in set (0.01 sec)
Таблица FILES
ненормативная.
Это было добавлено в MySQL 5.1.6.
Не имеется никаких команд SHOW
,
связанных с таблицей FILES
.
INFORMATION_SCHEMA PROCESSLIST
Таблица PROCESSLIST
обеспечивает информацию, относительно
выполняемых сервером потоков.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
ID | Id | MySQL extension |
USER | User | MySQL extension |
HOST | Host |
MySQL extension |
DB | db |
MySQL extension |
COMMAND | Command |
MySQL extension |
TIME | Time |
MySQL extension |
STATE | State |
MySQL extension |
INFO | Info |
MySQL extension |
Примечания:
Таблица PROCESSLIST
ненормативная.
Это было добавлено в MySQL 5.1.7.
Подобно выводу из соответствующей инструкции SHOW
,
таблица PROCESSLIST
покажет информацию только относительно Ваших
собственных потоков, если Вы не имеете привилегию PROCESS
,
тогда Вы будете видеть информацию относительно других потоков. Как анонимный
пользователь Вы не можете видеть любые строки вообще.
Если инструкция SQL обращается
INFORMATION_SCHEMA.PROCESSLIST
, MySQL заполнит всю таблицу один
раз, когда, операторное выполнение начинается, так что гарантируется
непротиворечивость чтения в течение инструкции. Не имеется никакой
непротиворечивости чтения для многооператорной транзакции.
Следующие инструкции эквивалентны:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST SHOW PROCESSLIST
INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS
Таблица REFERENTIAL_CONSTRAINTS
обеспечивает информацию
относительно внешних ключей.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
CONSTRAINT_CATALOG | NULL | |
CONSTRAINT_SCHEMA | ||
CONSTRAINT_NAME | ||
UNIQUE_CONSTRAINT_CATALOG | NULL | |
UNIQUE_CONSTRAINT_SCHEMA | ||
UNIQUE_CONSTRAINT_NAME | ||
MATCH_OPTION | ||
UPDATE_RULE | ||
DELETE_RULE | ||
TABLE_NAME |
Примечания:
Таблица REFERENTIAL_CONSTRAINTS
была добавлена в MySQL 5.1.10.
TABLE_NAME
имеет то же самое значение, что и
TABLE_NAME
в INFORMATION_SCHEMA.TABLE_CONSTRAINTS
.
CONSTRAINT_SCHEMA
и CONSTRAINT_NAME
идентифицируют внешний ключ.
UNIQUE_CONSTRAINT_SCHEMA
и
UNIQUE_CONSTRAINT_NAME
идентифицируют вызванный ключ.
Единственное допустимое значение в это время для
MATCH_OPTION
: NONE
.
Возможные значения для UPDATE_RULE
или
DELETE_RULE
: CASCADE
, SET NULL
,
SET DEFAULT
, RESTRICT
, NO ACTION
.
INFORMATION_SCHEMA
GLOBAL_STATUS
и SESSION_STATUS
Таблицы GLOBAL_STATUS
и SESSION_STATUS
обеспечивают информацию относительно переменных состояния сервера. Их
содержание соответствует информации, произведенной инструкциями
SHOW GLOBAL STATUS
и SHOW SESSION STATUS
.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
VARIABLE_NAME | Variable_name | |
VARIABLE_VALUE | Value |
Примечания:
Таблицы GLOBAL_STATUS
и
SESSION_STATUS
были добавлены в MySQL 5.1.12.
Столбец VARIABLE_VALUE
имеет тип BIGINT
.
Немногие переменные состояния, которые имеют значения нецелого числа,
приведены к значениям BIGINT
.
INFORMATION_SCHEMA
GLOBAL_VARIABLES
и SESSION_VARIABLES
Таблицы GLOBAL_VARIABLES
и SESSION_VARIABLES
обеспечивают информацию относительно переменных состояния сервера. Их
содержание соответствует информации, произведенной инструкциями
SHOW GLOBAL VARIABLES
и SHOW SESSION VARIABLES
.
INFORMATION_SCHEMA Name |
SHOW Name | Remarks |
VARIABLE_NAME | Variable_name | |
VARIABLE_VALUE | Value |
Примечания:
Таблицы GLOBAL_VARIABLES
и
SESSION_VARIABLES
были добавлены в MySQL 5.1.12.
INFORMATION_SCHEMA
Авторы предполагают выполнять дополнительные таблицы в
INFORMATION_SCHEMA
. В частности, они подтверждают
потребность в таблице PARAMETERS
.
SHOW
Некоторые расширения к инструкциям SHOW
сопровождают
реализацию INFORMATION_SCHEMA
:
SHOW
может использоваться, чтобы получить
информацию относительно структуры INFORMATION_SCHEMA
.
Несколько инструкций SHOW
принимают предложение
WHERE
, которое обеспечивает большее количество гибкости в
определении того, которые строки отобразить.
INFORMATION_SCHEMA
информационная база данных, так что имя
включено в вывод из SHOW DATABASES
. Точно так же
SHOW TABLES
может использоваться с
INFORMATION_SCHEMA
, чтобы получить список таблиц:
mysql> SHOW TABLES FROM INFORMATION_SCHEMA; +---------------------------------------+ | Tables_in_information_schema | +---------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES | | ENGINES | | EVENTS | | FILES | | KEY_COLUMN_USAGE | | PARTITIONS | | PLUGINS | | PROCESSLIST | | ROUTINES | | SCHEMATA | | SCHEMA_PRIVILEGES | | STATISTICS | | TABLES | | TABLE_CONSTRAINTS | | TABLE_PRIVILEGES | | TRIGGERS | | USER_PRIVILEGES | | VIEWS | +---------------------------------------+ 22 rows in set (0.04 sec)
SHOW COLUMNS
и DESCRIBE
могут отображать
информацию относительно столбцов в индивидуальных
таблицах INFORMATION_SCHEMA
.
Несколько инструкций SHOW
были расширены, чтобы
позволить предложение 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
Предложение WHERE
, если представлено, оценено для имен
столбцов, отображаемых инструкцией SHOW
. Например, инструкция
SHOW CHARACTER SET
производит эти столбцы вывода:
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 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
...
Используя предложение WHERE
с SHOW CHARACTER
SET
, Вы обратились бы к тем именам столбца. Например, следующий
оператор отображает информацию относительно наборов символов, для которых
заданное по умолчанию объединение содержит строку '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 | +---------+---------------------------+---------------------+--------+
Эта инструкция отображает многобайтовые наборы символов:
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 | +---------+---------------------------+---------------------+--------+
INFORMATION_SCHEMA
9.28.1:
Имеется ли форум для
обсуждения INFORMATION_SCHEMA
?
Да. http://forums.mysql.com/list.php?101.
9.28.2:
Где я могу найти спецификацию ANSI
SQL 2003 для INFORMATION_SCHEMA
?
К сожалению, официальные спецификации недоступны свободно. ANSI делает их
доступными только за денежку. Однако, имеются доступные книги, например,
SQL-99 Complete, Really by Peter
Gulutzan and Trudy Pelzer, которые дают всесторонний краткий обзор стандарта,
включая INFORMATION_SCHEMA
.
9.28.3:
Каково различие между Oracle Data
Dictionary и MySQL INFORMATION_SCHEMA
?
Oracle и MySQL обеспечивают метаданные в таблицах. Однако, Oracle и MySQL
используют различные имена таблиц и столбцов. Реализация MySQL более подобна
DB2 и SQL Server, которые также поддерживают INFORMATION_SCHEMA
как определено в стандарте SQL.
9.28.4:
Я могу изменять таблицы, найденные
в базе данных INFORMATION_SCHEMA
?
Нет. Прикладные программы могут полагаться на некоторую стандартную
структуру, и это не должно измениться. По этой причине
MySQL AB не может поддерживать ошибки или другие
проблемы, которые следуют из изменения таблиц или данных в
INFORMATION_SCHEMA
.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |