WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Метаданные представляют собой данные
относительно данных, имени базы данных или таблицы, тип данных столбца или
привилегии доступа. Другие термины, которые иногда используются для этой
информации: каталог системы и
словарь данных. В действительности мы имеем базу данных Имеется пример инструкции, которая получает информацию
из Объяснение: инструкция запрашивает список всех таблиц в базе данных
Каждый пользователь MySQL имеет право обратиться к этим таблицам, но может
видеть только строки в таблицах, которые соответствуют объектам, для которых
пользователь имеет соответствующие привилегии доступа. В некоторых случаях
(например, столбец Инструкция Это соответствует правилам Кодда. То есть, весь доступ
выполнен на таблицах. Никто не должен узнавать новый операторный синтаксис. Потому что они
уже знают, как работает Реализаторы не должны волноваться относительно
добавления ключевых слов. Имеются миллионы возможных изменений вывода вместо одного. Это
обеспечивает большее количество гибкости для прикладных программ, которые
имеют изменяющиеся требования относительно метаданных, в
которых они нуждаются. Миграция проще, потому что каждая другая СУБД понимает этот способ.
Однако, потому что команды Не имеется никакого различия между привилегиями, требуемыми для инструкций
Реализация структур таблицы Пользователи SQL Server 2000 (который также следует стандарту) могут
обратить внимание на сильное сходство. Однако, MySQL опустил много столбцов,
которые нерелевантными для этой реализации, и добавил столбцы, которые
являются MySQL-специфическими. Один такой столбец: Следующие разделы описывают каждую из таблиц и столбцов, которые находятся
в Remarks обеспечивает дополнительную
информацию. Если это поле Чтобы избегать использовать любое имя, которое зарезервировано в стандарте
SQL, DB2 или Oracle, имена некоторых столбцов, отмеченных как
MySQL extension переделаны. Например,
Определение для символьных столбцов (например,
Каждый раздел указывает то, какая инструкция Обратите внимание: в настоящее
время, имеются некоторые столбцы, расставленные не по порядку, а кое-какие
еще вообще отсутствуют.
Схема является базой данных, так что таблица Следующие инструкции эквивалентны: Таблица Примечания: Для разбитых на разделы таблиц, начиная с MySQL 5.1.9, столбец
Столбец Для таблиц, использующих тип памяти Обратите внимание: так как
MySQL Cluster распределяет память для столбцов с переменной шириной в
10-страничных блоках по 32 килобайта каждый, использование места для таких
столбцов сообщено в приращениях по 320 KB. Мы не имеем ничего для заданного по умолчанию набора символов таблицы.
Начиная с MySQL 5.1.9, столбец Следующие инструкции эквивалентны: Таблица Примечания: В Следующие инструкции почти эквивалентны: Таблица Примечания: Не имеется никакой стандартной таблицы для индексов.
Предшествующий список подобен тому, что возвращается SQL Server 2000 для
Предшествующая таблица и вывод из Следующие инструкции эквивалентны: Таблица Примечания: Это ненормативная таблица. Требуется значения от
таблицы Таблица Примечания: Это ненормативная таблица. Требуется значения от
таблицы Таблица Примечания: Следующие инструкции не эквивалентны: Таблица Примечания: В выводе из Если пользователь имеет опцию Следующие инструкции не эквивалентны: Таблица Следующие инструкции эквивалентны: Таблица Следующие инструкции эквивалентны: Таблица Таблица Примечания: Значение Информация Столбец Таблица Примечания: Если ограничение внешний ключ, то это столбец внешнего
ключа, не столбец, а не тот столюец, на который внешний ключ ссылается.
Значение Значение Например, предположите, что имеется две таблицы с именами
Для этих двух таблиц таблица Одна строка с
Одна строка с
Таблица Столбец Примечания: MySQL вычисляет Если Иначе Таблица Примечания: Столбец Затем определение этого view выглядит следующим образом: Столбец Столбец Столбец Таблица Примечания: Столбцы Столбец Каждый триггер связан точно с одной таблицей. Столбцы
Инструкция Столбец Столбец Столбец Столбцы Столбец Столбец Следующие столбцы в настоящее время всегда содержат Пример, используем Таблица Примечания: Таблица Таблица Примечания: Таблица Таблица Примечания: Таблица Каждая запись в этой таблице соответствует индивидуальному разделу или
подразделу разбитой на разделы таблицы. Например, рассмотрите разбитую на разделы таблицу, созданную в базе данных
Столбец в записи Для разделов, чьими Это вычисляется как Обратите внимание: некоторые
типы памяти не модифицируют это время. Для таблиц, использующих эти типы
памяти, это значение всегда Значение по умолчанию для этого столбца: пустая строка. Важно: если любые разбитые
на разделы таблицы, созданные в MySQL версии до MySQL 5.1.6 присутствуют
после обновления до MySQL 5.1.6 или позже, невозможен Не разбитая на разделы таблица имеет одну запись в
В MySQL 5.1 имеется также только одна запись в таблице
Таблица Примечания: Таблица Обратите внимание: до
MySQL 5.1.12 этот столбец назывался Если синхронизация события определена предложением Для одноразового события (то есть, события, чья синхронизация определена
предложением Если не имеется никакого предложения Пример: предположите, что
пользователь Обратите внимание, что комментарии могут охватывать много строк. Этот пользователь может затем выполнять следующую инструкцию
Важно: времена, отображаемые
столбцами Например, событие На это использование универсального времени нельзя положиться в прикладных
программах, поскольку ожидается изменить на сервере местное время
(Глюк #16420). Таблица Примечания: В MySQL 5.1 значение столбца
Столбец Для журнала Для журнала данных MySQL Cluster или файла данных, значение столбца
Для журнала данных MySQL Cluster или файла данных, значение столбца
Столбец Различие между этими двумя столбцами: число блоков, используемых в
настоящее время файлом: Вы можете аппроксимировать количество дискового пространства, находящегося
в использовании файлом, умножая это различие на значение столбца
Точно так же Вы можете оценивать количество места, которое остается
доступным в данном файле, умножая
Важно: значения байт,
произведенные предшествующими запросами только приближения, и их точность
обратно пропорциональна значению Также важно не забыть, что, если только блок используется, это не может
быть освобождено снова без того, чтобы удалить файл данных, частью которого
блок является. Это означает, что удаление из дисковой таблицы данных не
освобождает дисковое пространство. Размер блока может быть установлен в инструкции Столбец Для файлов MySQL 5.1 Cluster Disk Data значение столбца
Столбец В настоящее время значения этих столбцов сообщены операционной системой и
не обеспечены Для файлов данных MySQL Cluster значение столбцов
Для файлов данных MySQL 5.1 Cluster следующие
столбцы всегда Для файлов данных MySQL Cluster значение столбца
Для файлов данных MySQL Cluster столбец После удачного выполнения инструкции Таблица Не имеется никаких команд Таблица Примечания: Таблица Подобно выводу из соответствующей инструкции Если инструкция SQL обращается
Следующие инструкции эквивалентны: Таблица Примечания: Таблица Единственное допустимое значение в это время для
Возможные значения для Таблицы Примечания: Таблицы Столбец Таблицы Примечания: Таблицы Авторы предполагают выполнять дополнительные таблицы в
Некоторые расширения к инструкциям Несколько инструкций Несколько инструкций Предложение Используя предложение Эта инструкция отображает многобайтовые наборы символов: 9.28.1:
Имеется ли форум для
обсуждения Да.
http://forums.mysql.com/list.php?101. 9.28.2:
Где я могу найти спецификацию ANSI
SQL 2003 для К сожалению, официальные спецификации недоступны свободно. ANSI делает их
доступными только за денежку. Однако, имеются доступные книги, например,
SQL-99 Complete, Really by Peter
Gulutzan and Trudy Pelzer, которые дают всесторонний краткий обзор стандарта,
включая 9.28.3:
Каково различие между Oracle Data
Dictionary и MySQL Oracle и MySQL обеспечивают метаданные в таблицах. Однако, Oracle и MySQL
используют различные имена таблиц и столбцов. Реализация MySQL более подобна
DB2 и SQL Server, которые также поддерживают 9.28.4:
Я могу изменять таблицы, найденные
в базе данных Нет. Прикладные программы могут полагаться на некоторую стандартную
структуру, и это не должно измениться. По этой причине
MySQL AB не может поддерживать ошибки или другие
проблемы, которые следуют из изменения таблиц или данных в
Глава 9. База данных
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
в обратном алфавитном порядке, показывая только три части
информации: имя таблицы, тип таблицы и тип памяти.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.ENGINE
в
таблице INFORMATION_SCHEMA.TABLES
.INFORMATION_SCHEMA
. Для каждого столбца имеются
три блока информации:INFORMATION_SCHEMA
Name указывает имя для столбца в таблице
INFORMATION_SCHEMA
. Это не соответствует стандартному имени
SQL, если в поле Remarks значится
MySQL extension.SHOW
Name указывает
эквивалентное имя поля в самой близкой инструкции SHOW
,
если она имеется.NULL
, это означает, что значение
столбца всегда NULL
. Если это поле
MySQL extension, столбец является расширением
MySQL стандарта SQL.COLLATION
на TABLE_COLLATION
в таблице
TABLES
. Ссписок зарезервированных слов изложен в конце статьи на
http://www.dbazine.com/gulutzan5.shtml.TABLES.TABLE_NAME
) вообще
VARCHAR(
, где
N
) CHARACTER SET utf8N
по крайней мере 64.SHOW
является
эквивалентной SELECT
, который собирает информацию из
INFORMATION_SCHEMA
, если имеется такая инструкция.9.1. Таблица
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
']
9.2. Таблица
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, так что это однозначно.ENGINE
показывает тип памяти, используемого всеми разделами.
Раньше этот столбец показывал для таких таблиц PARTITION
.
TABLE_ROWS
NULL
, если таблица
находится в базе данных INFORMATION_SCHEMA
. Для таблиц
InnoDB
счетчтк строк только грубая оценка,
используемая в оптимизации SQL.NDBCLUSTER
, начиная
с MySQL 5.1.12, столбец DATA_LENGTH
отражает истинное количество
памяти для столбцов с переменной шириной.
См. Глюк #18413.TABLE_COLLATION
близко, потому что имена объединения начинаются
с имени набора символов.CREATE_OPTIONS
показывается разбитый на разделы, если таблица разбита на разделы.
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
']
9.3. Таблица
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 FROM tbl_name
[FROM db_name
]
[LIKE 'wild
']
9.4.
Таблица
INFORMATION_SCHEMA STATISTICS
STATISTICS
обеспечивает информацию
относительно индексов таблицы.
INFORMATION_SCHEMA
NameSHOW
NameRemarks 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 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 FROM tbl_name
[FROM db_name
]
9.5.
Таблица
INFORMATION_SCHEMA USER_PRIVILEGES
USER_PRIVILEGES
обеспечивает информацию относительно
глобальных привилегий. Эта информация исходит из таблицы предоставления
привилегий mysql.user
.
INFORMATION_SCHEMA
Name
SHOW
Name
Remarks GRANTEE
'
value, MySQL extensionuser_name
'@'host_name
'TABLE_CATALOG
NULL
,
MySQL extensionPRIVILEGE_TYPE
MySQL extension
IS_GRANTABLE
MySQL extension
mysql.user
.9.6. Таблица
INFORMATION_SCHEMA SCHEMA_PRIVILEGES
SCHEMA_PRIVILEGES
обеспечивает информацию
относительно схемы привилегиями (базы данных). Эта информация исходит из
таблицы предоставления mysql.db
.
INFORMATION_SCHEMA
Name
SHOW
Name
Remarks GRANTEE
'
value, MySQL extension
user_name
'@'host_name
'TABLE_CATALOG
NULL
, MySQL extensionTABLE_SCHEMA
MySQL extension PRIVILEGE_TYPE
MySQL extension
IS_GRANTABLE
MySQL extension
mysql.db
.9.7.
Таблица
INFORMATION_SCHEMA TABLE_PRIVILEGES
TABLE_PRIVILEGES
обеспечивает информацию относительно
привилегий таблицы. Эта информация исходит из таблицы предоставления
mysql.tables_priv
.
INFORMATION_SCHEMA
Name
SHOW
Name
Remarks GRANTEE
'
value
user_name
'@'host_name
'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 ...
9.8. Таблица
INFORMATION_SCHEMA COLUMN_PRIVILEGES
COLUMN_PRIVILEGES
обеспечивает информацию
относительно привилегий столбца. Эта информация исходит из таблицы
предоставления mysql.columns_priv
.
INFORMATION_SCHEMA
Name
SHOW
Name
Remarks GRANTEE
'
value
user_name
'@'host_name
'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 ...
9.9. Таблица
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
']
9.10. Таблица
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
']
9.11. Таблица
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
9.12.
Таблица
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
.9.13. Таблица
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
.
9.14. Таблица
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 EXTERNAL_LANGUAGE
так:
mysql.proc.language='SQL'
,
EXTERNAL_LANGUAGE
равен NULL
EXTERNAL_LANGUAGE
равен
mysql.proc.language
. Однако, пока не имеется внешних языков, так
что это всегда NULL
.9.15. Таблица
INFORMATION_SCHEMA VIEWS
VIEWS
обеспечивает информацию относительно view в
базах данных. Вы должны иметь привилегию SHOW VIEW
, чтобы
обратиться к этой таблице.
INFORMATION_SCHEMA
NameSHOW
NameRemarks 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;
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
.9.16. Таблица
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
9.17. Таблица
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.9.18. Таблица
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.9.19. Таблица
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
.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
в этом случае пуст.
PARTITIONS
для таблицы, использующей NDBCluster
. Те
же самые столбцы также NULL
(или пусты), как и для не разбитой
на разделы таблицы.9.20. Таблица
INFORMATION_SCHEMA EVENTS
EVENTS
обеспечивает информацию
относительно планируемых событий.
INFORMATION_SCHEMA
Name
SHOW
Name
Remarks EVENT_CATALOG
NULL
, MySQL
extensionEVENT_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
события, другими словами, инструкция,
выполненная этим событием.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
.9.21. Таблица
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
имя пространства таблиц,
с которым файл связан.TABLESPACE_CATALOG
всегда NULL
.TABLE_NAME
имя дисковой таблицы данных, с которой файл
связан, если есть.LOGFILE_GROUP_NAME
дает имя группы журнала,
которой журнал или файл данных принадлежит.UNDO
LOGFILE_GROUP_NUMBER
содержит автосгенерированный номер ID группы журналов, к
которой журнал принадлежит.ENGINE
всегда NDB
или NDBCLUSTER
.
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
использовавшихся, чтобы создать файл.MAXIMUM_SIZE
всегда такое же, как INITIAL_SIZE
, а
столбец AUTOEXTEND_SIZE
всегда пуст.CREATION_TIME
показывает дату и время, когда файл
был создан. LAST_UPDATE_TIME
отображает дату и время, когда файл
был последний раз изменен. LAST_ACCESSED
обеспечивает дату и
время, когда к файлу последний раз обращался сервер.NDB
. Там, где никакое значение не обеспечивается
операционной системой, эти столбцы отображаются
0000-00-00 00:00:00
.RECOVER_TIME
и TRANSACTION_COUNTER
всегда
0
.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
STATUS
всегда NORMAL
.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
.9.22. Таблица
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
,
тогда Вы будете видеть информацию относительно других потоков. Как анонимный
пользователь Вы не можете видеть любые строки вообще.INFORMATION_SCHEMA.PROCESSLIST
, MySQL заполнит всю таблицу один
раз, когда, операторное выполнение начинается, так что гарантируется
непротиворечивость чтения в течение инструкции. Не имеется никакой
непротиворечивости чтения для многооператорной транзакции.
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
SHOW PROCESSLIST
9.23. Таблица
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
.
9.24. Таблицы
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
.9.25. Таблицы
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.9.26.
Другие таблицы
INFORMATION_SCHEMA
INFORMATION_SCHEMA
. В частности, они подтверждают
потребность в таблице PARAMETERS
.9.27. Расширения инструкции
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 |
+---------+---------------------------+---------------------+--------+
9.28. MySQL 5 FAQ
INFORMATION_SCHEMA
INFORMATION_SCHEMA
?INFORMATION_SCHEMA
?INFORMATION_SCHEMA
.INFORMATION_SCHEMA
?INFORMATION_SCHEMA
как определено в стандарте SQL.INFORMATION_SCHEMA
?INFORMATION_SCHEMA
.
Найди своих коллег! |