The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Базы данных, SQL" / Оглавление документа
Глава 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 в обратном алфавитном порядке, показывая только три части информации: имя таблицы, тип таблицы и тип памяти.

Каждый пользователь MySQL имеет право обратиться к этим таблицам, но может видеть только строки в таблицах, которые соответствуют объектам, для которых пользователь имеет соответствующие привилегии доступа. В некоторых случаях (например, столбец ROUTINE_DEFINITION в таблице INFORMATION_SCHEMA.ROUTINES), пользователи, которые имеют недостаточные привилегии, будут видеть NULL.

Инструкция SELECT ... FROM INFORMATION_SCHEMA предназначена как более непротиворечивый способ обеспечить доступ к информации, обеспеченной различными инструкциями SHOW, которые MySQL поддерживает (SHOW DATABASES, SHOW TABLES и им подобные). Использование SELECT имеет эти преимущества перед SHOW:

Однако, потому что команды SHOW популярна у пользователей MySQL, никто их убирать не собирается. Фактически, наряду с реализацией INFORMATION_SCHEMA, имеются расширения для SHOW.

Не имеется никакого различия между привилегиями, требуемыми для инструкций SHOW и нужными, чтобы выбрать информацию из INFORMATION_SCHEMA. В любом случае Вы должны иметь некоторую привилегию на объекте, чтобы видеть информацию относительно этого объекта.

Реализация структур таблицы INFORMATION_SCHEMA в MySQL следует ANSI/ISO SQL:2003 Part 11 Schemata и в основном отвечает стандарту SQL:2003 core feature F021 Basic information schema.

Пользователи SQL Server 2000 (который также следует стандарту) могут обратить внимание на сильное сходство. Однако, MySQL опустил много столбцов, которые нерелевантными для этой реализации, и добавил столбцы, которые являются MySQL-специфическими. Один такой столбец: ENGINE в таблице INFORMATION_SCHEMA.TABLES.

Следующие разделы описывают каждую из таблиц и столбцов, которые находятся в INFORMATION_SCHEMA. Для каждого столбца имеются три блока информации:

Чтобы избегать использовать любое имя, которое зарезервировано в стандарте SQL, DB2 или Oracle, имена некоторых столбцов, отмеченных как MySQL extension переделаны. Например, COLLATION на TABLE_COLLATION в таблице TABLES. Ссписок зарезервированных слов изложен в конце статьи на http://www.dbazine.com/gulutzan5.shtml.

Определение для символьных столбцов (например, TABLES.TABLE_NAME) вообще VARCHAR(N) CHARACTER SET utf8, где N по крайней мере 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_CATALOGNULL
TABLE_SCHEMATable_...
TABLE_NAMETable_ ...
TABLE_TYPE
ENGINEТип памяти MySQL extension
VERSIONVersion MySQL extension
ROW_FORMATRow_format MySQL extension
TABLE_ROWSRows MySQL extension
AVG_ROW_LENGTHAvg_row_length MySQL extension
DATA_LENGTHData_length MySQL extension
MAX_DATA_LENGTHMax_data_length MySQL extension
INDEX_LENGTHIndex_length MySQL extension
DATA_FREEData_free MySQL extension
AUTO_INCREMENTAuto_increment MySQL extension
CREATE_TIMECreate_time MySQL extension
UPDATE_TIMEUpdate_time MySQL extension
CHECK_TIMECheck_time MySQL extension
TABLE_COLLATIONCollation MySQL extension
CHECKSUMChecksum MySQL extension
CREATE_OPTIONSCreate_options MySQL extension
TABLE_COMMENTКомментарий MySQL extension

Примечания:

Следующие инструкции эквивалентны:

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_NULLABLENull
DATA_TYPEType
CHARACTER_MAXIMUM_LENGTHType
CHARACTER_OCTET_LENGTH
NUMERIC_PRECISIONType
NUMERIC_SCALEType
CHARACTER_SET_NAME
COLLATION_NAMECollation
COLUMN_TYPEType MySQL extension
COLUMN_KEYKey MySQL extension
EXTRAExtra MySQL extension
COLUMN_COMMENTComment MySQL extension

Примечания:

Следующие инструкции почти эквивалентны:

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 Name SHOW Name Remarks
TABLE_CATALOGNULL
TABLE_SCHEMA =база данных
TABLE_NAMETable
NON_UNIQUENon_unique
INDEX_SCHEMA =база данных
INDEX_NAMEKey_name
SEQ_IN_INDEXSeq_in_index
COLUMN_NAMEColumn_name
COLLATIONCollation
CARDINALITYCardinality
SUB_PARTSub_part MySQL extension
PACKEDPacked MySQL extension
NULLABLENull MySQL extension
INDEX_TYPEIndex_type MySQL extension
COMMENTComment MySQL extension

Примечания:

Следующие инструкции эквивалентны:

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 'user_name '@'host_name' value, MySQL extension
TABLE_CATALOG NULL, MySQL extension
PRIVILEGE_TYPEMySQL extension
IS_GRANTABLE MySQL extension

Примечания:

9.6. Таблица INFORMATION_SCHEMA SCHEMA_PRIVILEGES

Таблица SCHEMA_PRIVILEGES обеспечивает информацию относительно схемы привилегиями (базы данных). Эта информация исходит из таблицы предоставления mysql.db.

INFORMATION_SCHEMA Name SHOW Name Remarks
GRANTEE ' user_name'@'host_name' value, MySQL extension
TABLE_CATALOG NULL, MySQL extension
TABLE_SCHEMA MySQL extension
PRIVILEGE_TYPEMySQL extension
IS_GRANTABLE MySQL extension

Примечания:

9.7. Таблица INFORMATION_SCHEMA TABLE_PRIVILEGES

Таблица TABLE_PRIVILEGES обеспечивает информацию относительно привилегий таблицы. Эта информация исходит из таблицы предоставления mysql.tables_priv.

INFORMATION_SCHEMA Name SHOW Name Remarks
GRANTEE ' user_name'@'host_name' value
TABLE_CATALOG NULL
TABLE_SCHEMA
TABLE_NAME
PRIVILEGE_TYPE
IS_GRANTABLE

Примечания:

Следующие инструкции не эквивалентны:

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 ' user_name'@'host_name' value
TABLE_CATALOGNULL
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
PRIVILEGE_TYPE
IS_GRANTABLE

Примечания:

Следующие инструкции не эквивалентны:

SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
SHOW GRANTS ...

9.9. Таблица INFORMATION_SCHEMA CHARACTER_SETS

Таблица CHARACTER_SETS обеспечивает информацию относительно доступных наборов символов.

INFORMATION_SCHEMA Name SHOW Name Remarks
CHARACTER_SET_NAMECharset
DEFAULT_COLLATE_NAMEDefault collation
DESCRIPIONDescription MySQL extension
MAXLENMaxlen 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_NAMECollation
CHARACTER_SET_NAMECharset MySQL extension
IDId MySQL extension
IS_DEFAULTDefault MySQL extension
IS_COMPILEDCompiled MySQL extension
SORTLENSortlen 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_NAMECollation
CHARACTER_SET_NAMECharset

9.12. Таблица INFORMATION_SCHEMA TABLE_CONSTRAINTS

Таблица TABLE_CONSTRAINTS описывает, которые таблицы имеют ограничения.

INFORMATION_SCHEMA Name SHOW Name Remarks
CONSTRAINT_CATALOGNULL
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_SCHEMA
TABLE_NAME
CONSTRAINT_TYPE

Примечания:

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

Примечания:

9.14. Таблица INFORMATION_SCHEMA ROUTINES

Таблица ROUTINES обеспечивает информацию относительно сохраненных подпрограмм (процедуры и функций). Таблица 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_BODYSQL
ROUTINE_DEFINITIONbody
EXTERNAL_NAME NULL
EXTERNAL_LANGUAGElanguage NULL
PARAMETER_STYLE SQL
IS_DETERMINISTICis_deterministic
SQL_DATA_ACCESSsql_data_access
SQL_PATH NULL
SECURITY_TYPEsecurity_type
CREATEDcreated
LAST_ALTEREDmodified
SQL_MODEsql_mode MySQL extension
ROUTINE_COMMENTcomment MySQL extension
DEFINERdefiner MySQL extension

Примечания:

9.15. Таблица INFORMATION_SCHEMA VIEWS

Таблица VIEWS обеспечивает информацию относительно view в базах данных. Вы должны иметь привилегию SHOW VIEW, чтобы обратиться к этой таблице.

INFORMATION_SCHEMA Name SHOW Name Remarks
TABLE_CATALOG NULL
TABLE_SCHEMA
TABLE_NAME
VIEW_DEFINITION
CHECK_OPTION
IS_UPDATABLE
DEFINER
SECURITY_TYPE

Примечания:

9.16. Таблица INFORMATION_SCHEMA TRIGGERS

Таблица TRIGGERS обеспечивает информацию относительно триггеров. Вы должны иметь привилегию 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 0
ACTION_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

Примечания:

Пример, используем 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_NAMEName MySQL extension
PLUGIN_VERSIONMySQL extension
PLUGIN_STATUSStatus MySQL extension
PLUGIN_TYPEType MySQL extension
PLUGIN_TYPE_VERSION MySQL extension
PLUGIN_LIBRARYLibrary MySQL extension
PLUGIN_LIBRARY_VERSION MySQL extension
PLUGIN_AUTHORMySQL extension
PLUGIN_DESCRIPTION MySQL extension

Примечания:

9.18. Таблица INFORMATION_SCHEMA ENGINES

Таблица ENGINES обеспечивает информацию относительно типов памяти.

INFORMATION_SCHEMA Name SHOW Name Remarks
ENGINEEngine MySQL extension
SUPPORTSupport MySQL extension
COMMENTComment MySQL extension
TRANSACTIONSTransactions MySQL extension
XAXA MySQL extension
SAVEPOINTSSavepoints MySQL extension

Примечания:

9.19. Таблица INFORMATION_SCHEMA PARTITIONS

Таблица PARTITIONS обеспечивают информацию относительно разделов таблицы.

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

Примечания:

9.20. Таблица INFORMATION_SCHEMA EVENTS

Таблица EVENTS обеспечивает информацию относительно планируемых событий.

INFORMATION_SCHEMA Name SHOW Name Remarks
EVENT_CATALOGNULL, MySQL extension
EVENT_SCHEMADb MySQL extension
EVENT_NAMEName MySQL extension
DEFINER DefinerMySQL extension
EVENT_BODY MySQL extension
EVENT_DEFINITION MySQL extension
EVENT_TYPEType MySQL extension
EXECUTE_ATExecute at MySQL extension
INTERVAL_VALUEInterval value MySQL extension
INTERVAL_FIELDInterval field MySQL extension
SQL_MODE MySQL extension
STARTSStarts MySQL extension
ENDSEnds MySQL extension
STATUSStatus MySQL extension
ON_COMPLETION MySQL extension
CREATED MySQL extension
LAST_ALTERED MySQL extension
LAST_EXECUTEDMySQL extension
EVENT_COMMENTMySQL extension

Примечания:

Пример: предположите, что пользователь jon@ghidora создает событие e_daily, а затем изменяет его через несколько минут, используя инструкцию ALTER EVENT, как показано здесь:

DELIMITER |
CREATE EVENT e_daily ON SCHEDULE EVERY 1 DAY
       STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR DISABLE
       COMMENT 'Saves total number of sessions and
                clears the table once per day.'
       DO BEGIN INSERT INTO site_activity.totals (when, total)
       SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions;
       DELETE FROM site_activity.sessions;
   END |
DELIMITER ;
ALTER EVENT e_daily ENABLED;

Обратите внимание, что комментарии могут охватывать много строк.

Этот пользователь может затем выполнять следующую инструкцию SELECT и получать показанный вывод:

mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS
     >          WHERE EVENT_NAME = 'e_daily' AND
     >          EVENT_SCHEMA = 'myschema'\G

*************************** 1. row ***************************
EVENT_CATALOG: NULL
EVENT_SCHEMA: myschema
EVENT_NAME: e_daily
DEFINER: jon@ghidora
EVENT_BODY: BEGIN
   INSERT INTO site_activity.totals (when, total)
   SELECT CURRENT_TIMESTAMP, COUNT(*) FROM site_activity.sessions;
   DELETE FROM site_activity.sessions;
END
EVENT_TYPE: RECURRING
EXECUTE_AT: NULL
INTERVAL_VALUE: 1
INTERVAL_FIELD: INTERVAL_DAY
SQL_MODE: NULL
STARTS: 2006-02-09 10:41:23
ENDS: NULL
STATUS: ENABLED
ON_COMPLETION: DROP
CREATED: 2006-02-09 14:35:35
LAST_ALTERED: 2006-02-09 14:41:23
LAST_EXECUTED: NULL
EVENT_COMMENT: Saves total number of sessions and
               clears the table once per day.
1 row in set (0.50 sec)

Важно: времена, отображаемые столбцами STARTS, ENDS и LAST_EXECUTED в настоящее время даны в терминах универсального времени (GMT или UTC), независимо от установки часового пояса сервера. Это верно и для столбцов starts, ends и last_executed в таблице mysql.event, а также для столбцов Starts и Ends в таблице SHOW [FULL] EVENTS. Зато столбцы CREATED и LAST_ALTERED используют часовой пояс сервера (также, как столбцы created и last_altered в таблице mysql.event), чтобы Вам жизнь медом не казалась.

Например, событие e_daily, показанное ранее, было создано на компьютере в Brisbane, Australia, в 14:35:35 9 февраля 2006. Восточное стандартное время Австралии, которое также может быть выражено как GMT+10.00. Определение события модифицировалось (используя ALTER EVENT) на несколько минут позже, в 14:41:23. Это значения, отображаемые для CREATED и LAST_ALTERED. Событие планируется, чтобы начать выполнять 6 часов спустя, в 20:41:23 в тот же самый лень, по местному времени. Вычитание 10 часов из этого, чтобы получить универсальное время выдает 10:41:23, и это то значение, которое показывается для STARTS.

На это использование универсального времени нельзя положиться в прикладных программах, поскольку ожидается изменить на сервере местное время (Глюк #16420).

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

Примечания:

9.22. Таблица INFORMATION_SCHEMA PROCESSLIST

Таблица PROCESSLIST обеспечивает информацию, относительно выполняемых сервером потоков.

INFORMATION_SCHEMA Name SHOW Name Remarks
IDIdMySQL extension
USERUserMySQL extension
HOSTHost MySQL extension
DBdb MySQL extension
COMMANDCommand MySQL extension
TIMETime MySQL extension
STATEState MySQL extension
INFOInfo MySQL extension

Примечания:

Следующие инструкции эквивалентны:

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

Примечания:

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_NAMEVariable_name
VARIABLE_VALUEValue

Примечания:

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_NAMEVariable_name
VARIABLE_VALUEValue

Примечания:

9.26. Другие таблицы INFORMATION_SCHEMA

Авторы предполагают выполнять дополнительные таблицы в INFORMATION_SCHEMA. В частности, они подтверждают потребность в таблице PARAMETERS.

9.27. Расширения инструкции SHOW

Некоторые расширения к инструкциям SHOW сопровождают реализацию INFORMATION_SCHEMA:

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

9.28.1: Имеется ли форум для обсуждения INFORMATION_SCHEMA?

Да. http://forums.mysql.com/list.php?101.

9.28.2: Где я могу найти спецификацию ANSI SQL 2003 для INFORMATION_SCHEMA?

К сожалению, официальные спецификации недоступны свободно. ANSI делает их доступными только за денежку. Однако, имеются доступные книги, например, SQL-99 Complete, Really by Peter Gulutzan and Trudy Pelzer, которые дают всесторонний краткий обзор стандарта, включая INFORMATION_SCHEMA.

9.28.3: Каково различие между Oracle Data Dictionary и MySQL INFORMATION_SCHEMA?

Oracle и MySQL обеспечивают метаданные в таблицах. Однако, Oracle и MySQL используют различные имена таблиц и столбцов. Реализация MySQL более подобна DB2 и SQL Server, которые также поддерживают INFORMATION_SCHEMA как определено в стандарте SQL.

9.28.4: Я могу изменять таблицы, найденные в базе данных INFORMATION_SCHEMA?

Нет. Прикладные программы могут полагаться на некоторую стандартную структуру, и это не должно измениться. По этой причине MySQL AB не может поддерживать ошибки или другие проблемы, которые следуют из изменения таблиц или данных в INFORMATION_SCHEMA.




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру