|
|
|
|||
| 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_SCHEMAINFORMATION_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 SCHEMATASCHEMATA
обеспечивает информацию относительно баз данных.
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_CATALOGNULL
TABLE_SCHEMATable_... TABLE_NAMETable_
... TABLE_TYPE ENGINEТип памятиMySQL extension VERSIONVersionMySQL extension ROW_FORMATRow_formatMySQL extension TABLE_ROWSRowsMySQL extension AVG_ROW_LENGTHAvg_row_lengthMySQL extension DATA_LENGTHData_lengthMySQL extension MAX_DATA_LENGTHMax_data_length
MySQL extension INDEX_LENGTHIndex_lengthMySQL extension DATA_FREEData_freeMySQL extension AUTO_INCREMENTAuto_incrementMySQL extension CREATE_TIMECreate_timeMySQL extension UPDATE_TIMEUpdate_timeMySQL extension CHECK_TIMECheck_timeMySQL extension TABLE_COLLATIONCollationMySQL extension CHECKSUMChecksumMySQL extension CREATE_OPTIONSCreate_optionsMySQL 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
COLUMNSCOLUMNS обеспечивает информацию
относительно столбцов в таблицах.
INFORMATION_SCHEMA Name
SHOW Name
Remarks TABLE_CATALOG
NULLTABLE_SCHEMA TABLE_NAME COLUMN_NAMEПолеORDINAL_POSITION См. примечания
COLUMN_DEFAULTЗначение по умолчанию
IS_NULLABLENullDATA_TYPEType CHARACTER_MAXIMUM_LENGTHType CHARACTER_OCTET_LENGTH NUMERIC_PRECISIONType NUMERIC_SCALETypeCHARACTER_SET_NAME COLLATION_NAMECollationCOLUMN_TYPEType
MySQL extension COLUMN_KEYKeyMySQL extension EXTRAExtraMySQL extension COLUMN_COMMENTCommentMySQL 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 STATISTICSSTATISTICS обеспечивает информацию
относительно индексов таблицы.
INFORMATION_SCHEMA NameSHOW NameRemarks TABLE_CATALOGNULL
TABLE_SCHEMA =база данных TABLE_NAMETableNON_UNIQUENon_unique INDEX_SCHEMA =база данных INDEX_NAMEKey_name SEQ_IN_INDEXSeq_in_index COLUMN_NAMEColumn_name COLLATIONCollation CARDINALITYCardinality SUB_PARTSub_partMySQL extension PACKEDPackedMySQL extension NULLABLENullMySQL extension INDEX_TYPEIndex_typeMySQL extension COMMENTCommentMySQL 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_PRIVILEGESUSER_PRIVILEGES обеспечивает информацию относительно
глобальных привилегий. Эта информация исходит из таблицы предоставления
привилегий mysql.user.
INFORMATION_SCHEMA Name
SHOW Name
Remarks GRANTEE '
value, MySQL extensionuser_name
'@'host_name'TABLE_CATALOG NULL,
MySQL extensionPRIVILEGE_TYPEMySQL extension
IS_GRANTABLE MySQL extension
mysql.user.9.6. Таблица
INFORMATION_SCHEMA SCHEMA_PRIVILEGESSCHEMA_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_TYPEMySQL extension
IS_GRANTABLE MySQL extension
mysql.db.9.7.
Таблица
INFORMATION_SCHEMA TABLE_PRIVILEGESTABLE_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_GRANTABLEPRIVILEGE_TYPE может содержать одно (и
только одно!) из этих значений: SELECT, INSERT,
UPDATE, REFERENCES, ALTER,
INDEX, DROP или CREATE VIEW.
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
SHOW GRANTS ...
9.8. Таблица
INFORMATION_SCHEMA COLUMN_PRIVILEGESCOLUMN_PRIVILEGES обеспечивает информацию
относительно привилегий столбца. Эта информация исходит из таблицы
предоставления mysql.columns_priv.
INFORMATION_SCHEMA Name
SHOW Name
Remarks GRANTEE '
value
user_name'@'host_name'TABLE_CATALOGNULL
TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLESHOW 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_SETSCHARACTER_SETS обеспечивает информацию относительно
доступных наборов символов.
INFORMATION_SCHEMA Name
SHOW Name
Remarks CHARACTER_SET_NAMECharset DEFAULT_COLLATE_NAMEDefault collation
DESCRIPIONDescriptionMySQL extension MAXLENMaxlen
MySQL extension
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS
[WHERE name LIKE '
wild']
SHOW CHARACTER SET [LIKE 'wild']
9.10. Таблица
INFORMATION_SCHEMA
COLLATIONSCOLLATIONS обеспечивает информацию относительно
объединений для каждого набора символов.
INFORMATION_SCHEMA Name
SHOW Name
Remarks COLLATION_NAMECollation CHARACTER_SET_NAMECharsetMySQL extension IDIdMySQL extension IS_DEFAULTDefaultMySQL extension IS_COMPILEDCompiledMySQL extension SORTLENSortlenMySQL extension
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS
[WHERE collation_name LIKE '
wild']
SHOW COLLATION [LIKE 'wild']
9.11. Таблица
INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITYCOLLATION_CHARACTER_SET_APPLICABILITY указывает то,
какому объединению соответствует набор символов. Столбцы эквивалентны к
первым двум полям вывода SHOW COLLATION.
INFORMATION_SCHEMA Name
SHOW Name
Remarks COLLATION_NAMECollation CHARACTER_SET_NAMECharset 9.12.
Таблица
INFORMATION_SCHEMA TABLE_CONSTRAINTSTABLE_CONSTRAINTS описывает, которые
таблицы имеют ограничения.
INFORMATION_SCHEMA Name
SHOW Name
Remarks CONSTRAINT_CATALOGNULL
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_USAGEKEY_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 ROUTINESROUTINES обеспечивает информацию относительно
сохраненных подпрограмм (процедуры и функций). Таблица ROUTINES
не включает определяемые пользователем функции (UDF).mysql.proc name
указывает столбец таблицы mysql.proc, который соответствует
столбцу таблицы INFORMATION_SCHEMA.ROUTINES.
INFORMATION_SCHEMA Name
mysql.proc Name
Remarks SPECIFIC_NAMEspecific_name ROUTINE_CATALOG NULL
ROUTINE_SCHEMAdb
ROUTINE_NAMEname
ROUTINE_TYPEtype{PROCEDURE|FUNCTION}DTD_IDENTIFIER
(data type descriptor) ROUTINE_BODYSQLROUTINE_DEFINITIONbody EXTERNAL_NAME NULL
EXTERNAL_LANGUAGElanguageNULLPARAMETER_STYLE SQL
IS_DETERMINISTICis_deterministic
SQL_DATA_ACCESSsql_data_access
SQL_PATH NULLSECURITY_TYPEsecurity_type CREATEDcreated LAST_ALTEREDmodified SQL_MODEsql_modeMySQL extension ROUTINE_COMMENTcommentMySQL extension DEFINERdefinerMySQL extension EXTERNAL_LANGUAGE так:
mysql.proc.language='SQL',
EXTERNAL_LANGUAGE равен NULLEXTERNAL_LANGUAGE равен
mysql.proc.language. Однако, пока не имеется внешних языков, так
что это всегда NULL.9.15. Таблица
INFORMATION_SCHEMA VIEWS
VIEWS обеспечивает информацию относительно view в
базах данных. Вы должны иметь привилегию SHOW VIEW, чтобы
обратиться к этой таблице.
INFORMATION_SCHEMA NameSHOW NameRemarks TABLE_CATALOG
NULLTABLE_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
TRIGGERSTRIGGERS обеспечивает информацию относительно
триггеров. Вы должны иметь привилегию SUPER,
чтобы обратиться к этой таблице.
INFORMATION_SCHEMA Name
SHOW Name
Remarks TRIGGER_CATALOG NULL
TRIGGER_SCHEMA TRIGGER_NAMETrigger EVENT_MANIPULATIONEvent EVENT_OBJECT_CATALOG NULL
EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLETable ACTION_ORDER 0ACTION_CONDITION NULL
ACTION_STATEMENTStatement
ACTION_ORIENTATION ROW
ACTION_TIMINGTiming
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
PLUGINSPLUGINS обеспечивает информацию
относительно расширений сервера.
INFORMATION_SCHEMA Name
SHOW Name
Remarks PLUGIN_NAMEName
MySQL extension PLUGIN_VERSIONMySQL extension PLUGIN_STATUSStatusMySQL extension PLUGIN_TYPETypeMySQL extension PLUGIN_TYPE_VERSION
MySQL extension PLUGIN_LIBRARYLibraryMySQL extension PLUGIN_LIBRARY_VERSION
MySQL extension PLUGIN_AUTHORMySQL extension PLUGIN_DESCRIPTION
MySQL extension PLUGINS ненормативная. Это было
добавлено в MySQL 5.1.5.9.18. Таблица
INFORMATION_SCHEMA
ENGINESENGINES обеспечивает информацию
относительно типов памяти.
INFORMATION_SCHEMA Name
SHOW Name
Remarks ENGINEEngine
MySQL extension SUPPORTSupportMySQL extension COMMENTCommentMySQL extension TRANSACTIONSTransactionsMySQL extension XAXA
MySQL extension SAVEPOINTSSavepointsMySQL extension ENGINES ненормативная. Это было
добавлено в MySQL 5.1.5.9.19. Таблица
INFORMATION_SCHEMA
PARTITIONSPARTITIONS обеспечивают информацию
относительно разделов таблицы.
INFORMATION_SCHEMA Name
SHOW Name
Remarks TABLE_CATALOGMySQL extension TABLE_SCHEMA MySQL extension TABLE_NAME MySQL extension PARTITION_NAMEMySQL 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_LENGTHMySQL 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_CATALOGNULL, MySQL
extensionEVENT_SCHEMADb
MySQL extension EVENT_NAMENameMySQL extension DEFINER
DefinerMySQL extension EVENT_BODY MySQL extension EVENT_DEFINITION
MySQL extension EVENT_TYPETypeMySQL extension EXECUTE_ATExecute atMySQL extension INTERVAL_VALUEInterval valueMySQL extension INTERVAL_FIELDInterval fieldMySQL extension SQL_MODE MySQL extension STARTSStartsMySQL extension ENDSEnds
MySQL extension STATUSStatusMySQL extension ON_COMPLETION
MySQL extension CREATED MySQL extension LAST_ALTERED MySQL extension LAST_EXECUTEDMySQL extension EVENT_COMMENTMySQL 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:VERSIONROW_FORMATTABLE_ROWSAVG_ROW_LENGTHDATA_LENGTHMAX_DATA_LENGTHINDEX_LENGTHDATA_FREECREATE_TIMEUPDATE_TIMECHECK_TIMECHECKSUMSTATUS всегда 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 PROCESSLISTPROCESSLIST обеспечивает информацию, относительно
выполняемых сервером потоков.
INFORMATION_SCHEMA Name
SHOW Name
Remarks IDIdMySQL extension
USERUserMySQL extension
HOSTHostMySQL extension DBdbMySQL extension COMMANDCommandMySQL extension TIMETimeMySQL extension STATEStateMySQL extension INFOInfoMySQL 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_CONSTRAINTSREFERENTIAL_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_STATUSGLOBAL_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_VARIABLESGLOBAL_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_SCHEMAINFORMATION_SCHEMA. В частности, они подтверждают
потребность в таблице PARAMETERS.9.27. Расширения инструкции
SHOWSHOW сопровождают
реализацию 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_SCHEMAINFORMATION_SCHEMA?INFORMATION_SCHEMA?INFORMATION_SCHEMA.INFORMATION_SCHEMA?INFORMATION_SCHEMA
как определено в стандарте SQL.INFORMATION_SCHEMA?INFORMATION_SCHEMA.
| Найди своих коллег! |