представления схемы Сведения о системе (Transact-SQL)
Представление схемы сведений — это один из нескольких методов SQL Server для получения метаданных. Представления схемы сведений предоставляют внутреннее, системное табличное представление метаданных SQL Server. Представления информационной схемы позволяют приложениям правильно работать, несмотря на значительные изменения, внесенные в базовые системные таблицы. Представления схемы информации, включенные в SQL Server, соответствуют определению стандарта ISO для INFORMATION_SCHEMA.
В представления информационной схемы были внесены определенные изменения, нарушающие обратную совместимость. Эти изменения описаны в разделах, посвященных конкретным представлениям.
SQL Server поддерживает соглашение об именовании трех частей при ссылке на текущий сервер. Стандарт ISO также поддерживает соглашения по трехкомпонентному именованию. Однако имена, которые используются в обоих соглашениях, различаются. Представления информационной схемы определяются в специальной схеме с именем INFORMATION_SCHEMA. Эта схема содержится в любой базе данных. Каждое представление информационной схемы содержит метаданные для всех объектов, хранящихся в этой конкретной базе данных. В следующей таблице показаны связи между именами SQL Server и стандартными именами SQL.
| Имя SQL Server | Соответствует эквивалентному стандартному имени SQL |
|---|---|
| База данных | Каталог |
| Схема | Схема |
| Object | Object |
| определяемый пользователем тип данных | Домен |
Это соглашение о сопоставлении имен применяется к следующим представлениям, совместимым с ISO-кодом SQL Server.
Схема сведений
Область применения:
Только каталог Unity Databricks SQL
Databricks Runtime 10.2 и выше ![]()
Это INFORMATION_SCHEMA стандартная схема на основе SQL, предоставляемая в каждом каталоге, созданном в каталоге Unity.
В схеме сведений можно найти набор представлений, описывающих объекты, известные каталогу схемы, который вы привилегированны. Схема сведений каталога SYSTEM возвращает сведения об объектах во всех каталогах в хранилище метаданных. Системные таблицы информационной схемы не содержат метаданные об hive_metastore объектах.
Назначение схемы сведений состоит в том, чтобы предоставить основанный на SQL API с самоописанием для метаданных.
Схема отношений сущностей схемы сведений
На следующей схеме связи сущностей (ER) представлен обзор подмножества представлений схемы информации и их связи друг с другом.

Представления информационной схемы
| Имя | Описание |
|---|---|
| CATALOG_PRIVILEGES | Выводит список субъектов , имеющих привилегии в каталогах. |
| CATALOG_PROVIDER_SHARE_USAGE | Описывает общий доступ поставщика, подключенный к каталогам. |
| CATALOG_TAGS | Содержит теги, примененные к каталогам. |
| CATALOGS | Описывает каталоги. |
| CHECK_CONSTRAINTS | Зарезервировано для последующего использования. |
| COLUMN_MASKS | Описывает маски столбцов в столбцах таблицы в каталоге. |
| COLUMN_TAGS | Содержит метаданные тегов столбцов в таблице. |
| COLUMNS | Описывает столбцы таблиц и представления в каталоге. |
| CONNECTION_PRIVILEGES | Перечисляет субъекты , имеющие привилегии для внешних подключений. |
| СОЕДИНЕНИЯ | Описывает внешние подключения. |
| CONSTRAINT_COLUMN_USAGE | Описывает ограничения, касающиеся ссылок на столбцы в каталоге. |
| CONSTRAINT_TABLE_USAGE | Описывает ограничения, касающиеся ссылок на таблицы в каталоге. |
| EXTERNAL_LOCATION_PRIVILEGES | Перечисляет субъекты , имеющие привилегии во внешних расположениях. |
| EXTERNAL_LOCATIONS | Описание внешних расположений. |
| INFORMATION_SCHEMA_CATALOG_NAME | Возвращает имя каталога этой информационной схемы. |
| KEY_COLUMN_USAGE | Выводит список столбцов ограничений первичного или внешнего ключа в каталоге. |
| METASTORE_PRIVILEGES | Перечисляет субъекты , имеющие привилегии в текущем хранилище метаданных . |
| ХРАНИЛИЩА МЕТАДАННЫХ | Описывает текущее хранилище метаданных. |
| PARAMETERS | Описывает параметры подпрограмм (функций) в каталоге. |
| ПОСТАВЩИКОВ | Описывает поставщиков. |
| RECIPIENT_ALLOWED_IP_RANGES | Выводит список разрешенных диапазонов IP-адресов для получателей. |
| RECIPIENT_TOKENS | Перечисляет маркеры для получателей. |
| ПОЛУЧАТЕЛЕЙ | Описывает получателей. |
| REFERENTIAL_CONSTRAINTS | Описывает ограничения ссылочного (внешнего) ключа, определенного в каталоге. |
| ROUTINE_COLUMNS | Описывает столбцы результатов функций с табличным значением. |
| ROUTINE_PRIVILEGES | Перечисляет субъекты , имеющие привилегии для подпрограмм в каталоге. |
| ROUTINES | Описывает подпрограммы (функции) в каталоге. |
| ROW_FILTERS | Описывает фильтры строк в таблицах в каталоге. |
| SCHEMA_PRIVILEGES | Перечисляет субъекты , имеющие привилегии для схем в каталоге. |
| SCHEMA_TAGS | Содержит метаданные тегов схемы в схеме. |
| SCHEMA_SHARE_USAGE | Описывает схемы, на которые ссылаются общие папки. |
| SCHEMATA | Описывает схемы в каталоге. |
| SHARE_RECIPIENT_PRIVILEGES | Описывает получателей, которым предоставлен доступ к общим папкам. |
| АКЦИЙ | Описание общих папок. |
| STORAGE_CREDENTIAL_PRIVILEGES | Выводит список субъектов , имеющих права доступа к учетным данным хранилища. |
| STORAGE_CREDENTIALS | Описывает учетные данные хранения. |
| TABLE_CONSTRAINTS | Описывает метаданные для всех ограничений первичного и внешнего ключа в каталоге. |
| TABLE_PRIVILEGES | Перечисляет субъекты , имеющие привилегии для таблиц и представлений в каталоге. |
| TABLE_SHARE_USAGE | Описывает таблицы, на которые ссылаются общие папки. |
| TABLE_TAGS | Содержит метаданные тегов таблицы в таблице. |
| TABLES | Описывает таблицы и представления, определенные в каталоге. |
| VIEWS | Предоставляет сведения о представлениях в каталоге. |
| ОБЪЕМЫ | Описывает тома, определенные в каталоге. |
| VOLUME_PRIVILEGES | Выводит список субъектов , имеющих права доступа к томам в каталоге. |
Примечания.
Хотя идентификаторы не учитывают регистр при создании ссылок в инструкциях SQL, они хранятся в схеме сведений как STRING . Это подразумевает, что вы должны либо искать их по регистру, с которым сохранен идентификатор, либо использовать такие функции, как ilike.
Примеры
> SELECT table_name, column_name FROM information_schema.columns WHERE data_type = 'DOUBLE' AND table_schema = 'information_schema';
Ниже приведены примеры рабочих процессов, использующих таблицы схемы сведений на уровне системы.
Если вы хотите просмотреть все таблицы, созданные за последние 24 часа, запрос может выглядеть следующим образом.
> SELECT table_name, table_owner, created_by, last_altered, last_altered_by, table_catalog FROM system.information_schema.tables WHERE datediff(now(), last_altered) < 1;
Если вы хотите просмотреть количество таблиц в каждой схеме, см. следующий пример.
> SELECT table_schema, count(table_name) FROM system.information_schema.tables WHERE table_schema = 'tpch' GROUP BY table_schema ORDER BY 2 DESC
Глава 19. INFORMATION_SCHEMA Таблицы
INFORMATION_SCHEMA обеспечивает доступ к метаданным базы данных, информации о сервере MySQL, таком как имя базы данных или таблицы, типа данных столбца, или прав доступа. Другие термины, которые иногда используются для этой информации, являются словарем данных и системным каталогом.
Примечания использования для INFORMATION_SCHEMA База данных
INFORMATION_SCHEMA база данных в пределах каждого экземпляра MySQL, место, которое хранит информацию обо всех других базах данных, которые поддерживает сервер MySQL. INFORMATION_SCHEMA база данных содержит несколько таблиц только для чтения. Они - фактически представления, не базовые таблицы, таким образом нет никаких файлов, связанных с ними, и невозможно установить, включает их. Кроме того, нет никакого каталога базы данных с тем именем.
Хотя можно выбрать INFORMATION_SCHEMA как база данных значения по умолчанию с a USE оператор, можно только считать содержание таблиц, не выполнить INSERT , UPDATE , или DELETE операции на них.
Пример
Вот пример оператора, который получает информацию от INFORMATION_SCHEMA :
mysql>SELECT table_name, table_type, engine->FROM information_schema.tables->WHERE table_schema = 'db5'->ORDER BY table_name;+------------+------------+--------+| table_name | table_type | engine |+------------+------------+--------+| fk | BASE TABLE | InnoDB || fk2 | BASE TABLE | InnoDB || goto | BASE TABLE | MyISAM || into | BASE TABLE | MyISAM || k | BASE TABLE | MyISAM || kurs | BASE TABLE | MyISAM || loop | BASE TABLE | MyISAM || pk | BASE TABLE | InnoDB || t | BASE TABLE | MyISAM || t2 | BASE TABLE | MyISAM || t3 | BASE TABLE | MyISAM || t7 | BASE TABLE | MyISAM || tables | BASE TABLE | MyISAM || v | VIEW | NULL || v2 | VIEW | NULL || v3 | VIEW | NULL || v56 | VIEW | NULL |+------------+------------+--------+17 rows in set (0.01 sec)
Объяснение: оператор запрашивает список всех таблиц в базе данных db5 , показ только три сведения: имя таблицы, ее типа, и ее механизма хранения.
Соображения Набора символов
Определение для символьных столбцов (например, TABLES.TABLE_NAME ) обычно VARCHAR( N ) CHARACTER SET utf8 где N по крайней мере 64. MySQL использует сопоставление значения по умолчанию для этого набора символов ( utf8_general_ci ) для всех поисков, видов, сравнений, и других строковых операций на таких столбцах.
Поскольку некоторые объекты MySQL представляются как файлы, поискы в INFORMATION_SCHEMA на строковые столбцы может влиять чувствительность к регистру файловой системы. Для получения дополнительной информации см. Раздел 10.1.7.9, "Сопоставление и INFORMATION_SCHEMA Поискы".
INFORMATION_SCHEMA как Альтернатива SHOW Операторы
SELECT . FROM INFORMATION_SCHEMA оператор предназначается как более непротиворечивый способ обеспечить доступ к информации, предоставленной различным SHOW операторы, которые поддерживает MySQL ( SHOW DATABASES , SHOW TABLES , и т.д). Используя SELECT имеет эти преимущества, по сравнению с SHOW :
- Это соответствует правилам Кодда, потому что весь доступ делается на таблицах.
- Можно использовать знакомый синтаксис SELECT оператор, и только должен изучить некоторые имена таблиц и имена столбцов.
- Конструктор не должен волноваться о добавляющих ключевых словах.
- Можно фильтровать, сортировать, связать, и преобразовать следствия INFORMATION_SCHEMA запросы в любой формат Ваши потребности приложения, такие как структура данных или текстовое представление синтаксическому анализу.
- Этот метод является более взаимодействующим с другими системами баз данных. Например, пользователи Базы данных Oracle знакомы с запросами таблиц в словаре данных Oracle.
Поскольку SHOW знакомо и широко используемый, SHOW операторы остаются альтернативой. Фактически, наряду с реализацией INFORMATION_SCHEMA , есть улучшения к SHOW как описано в Разделе 19.31, "Расширения SHOW Операторы".
Полномочия
Каждый пользователь MySQL имеет право получить доступ к этим таблицам, но может видеть только строки в таблицах, которые соответствуют объектам, для которых у пользователя есть надлежащие права доступа. В некоторых случаях (например, ROUTINE_DEFINITION столбец в INFORMATION_SCHEMA.ROUTINES таблица), пользователи, у которых есть недостаточные полномочия, видят NULL . Эти ограничения не просят InnoDB таблицы; можно видеть их с только PROCESS полномочие.
Те же самые полномочия применяются к выбору информации от INFORMATION_SCHEMA и просмотр той же самой информации через SHOW операторы. В любом случае у Вас должно быть некоторое полномочие на объекте видеть информацию об этом.
Соображения производительности
INFORMATION_SCHEMA запросы, которые ищут информацию больше чем от одной базы данных, могли бы занять много времени и воздействовать на производительность. Чтобы проверить эффективность запроса, можно использовать EXPLAIN . Для получения информации об использовании EXPLAIN вывод, чтобы настроиться INFORMATION_SCHEMA запросы, см. Раздел 8.2.4, "Оптимизируя INFORMATION_SCHEMA Запросы".
Соображения стандартов
Реализация для INFORMATION_SCHEMA структуры таблиц в MySQL следуют за ANSI/ISO стандартный компонент SQL:2003 11 Схем. Наше намерение является приблизительным соответствием с базовой функцией SQL:2003 схема Основной информации F021.
Пользователи SQL Server 2000 (который также следует за стандартом) могут заметить подобие strong. Однако, MySQL опустил много столбцов, которые не важны для нашей реализации, и добавили столбцы, которые специфичны для MySQL. Один такой столбец ENGINE столбец в INFORMATION_SCHEMA.TABLES таблица.
Хотя другие DBMSs используют множество имен, как syscat или system , стандартное имя INFORMATION_SCHEMA .
Чтобы избегать использования любого имени, которое резервируется в стандарте или в DB2, SQL-сервере, или Oracle, мы поменяли имена некоторых столбцов отмеченное " расширение MySQL " . (Например, мы изменились COLLATION к TABLE_COLLATION в TABLES таблица.) См. список зарезервированных слов около конца этой статьи: http://web.archive.org/web/20070409075643rn_1/www.dbazine.com/db2/db2-disarticles/gulutzan5 .
Соглашения в INFORMATION_SCHEMA Ссылочные Разделы
Следующие разделы описывают каждую из таблиц и столбцов в INFORMATION_SCHEMA . Для каждого столбца есть три сведения:
- " INFORMATION_SCHEMA Имя " указывает на имя для столбца в INFORMATION_SCHEMA таблица. Это соответствует стандартному имени SQL, если поле "Remarks" не говорит " расширение MySQL. "
- " SHOW Имя " указывает на эквивалентное имя поля в самом близком SHOW оператор, если есть тот.
- "Комментарии" обеспечивают дополнительную информацию где применимый. Если это поле NULL , это означает, что значение столбца всегда NULL . Если это поле говорит " расширение MySQL, " столбец является расширением MySQL стандартного SQL.
Много разделов указывают что SHOW оператор эквивалентен a SELECT это получает информацию от INFORMATION_SCHEMA . Для SHOW операторы, которые выводят на экран информацию для базы данных значения по умолчанию, если Вы опускаете a FROM db_name пункт, можно часто выбирать информацию для базы данных значения по умолчанию, добавляя AND TABLE_SCHEMA = SCHEMA() условие к WHERE пункт запроса, который получает информацию от INFORMATION_SCHEMA таблица.
Для ответов на вопросы, которые часто задают относительно INFORMATION_SCHEMA база данных, см. Раздел B.7, "FAQ MySQL 5.7: INFORMATION_SCHEMA ".
| Предыдущий | Затем | |
| Глава 18. Сохраненные Программы и Представления | Домой | Глава 20. MySQL Performance Schema |
Information schema что это
Информационная схема состоит из набора представлений, содержащих информацию об объектах, определённых в текущей базе данных. Информационная схема описана в стандарте SQL и поэтому можно рассчитывать на её переносимость и стабильность — в отличие от системных каталогов, которые привязаны к PostgreSQL , и моделируются, отталкиваясь от реализации. Представления информационной схемы, однако, не содержат информацию о функциях, присущих исключительно PostgreSQL ; чтобы получить информацию о них, необходимо обратиться к системным каталогам или другим специфическим представлениям PostgreSQL .
Примечание
Когда из базы данных запрашивается информация об ограничениях, возможна ситуация, когда соответствующий стандарту запрос, который должен возвращать одну строку, возвращает несколько. Это связано с тем, что стандарт SQL требует, чтобы имена ограничений были уникальными в схеме, но в PostgreSQL такого требования нет. Имена ограничений, которые PostgreSQL генерирует автоматически, не должны дублироваться в одной схеме, но сами пользователи могут назначить подобные дублирующиеся имена.
Эта проблема может проявиться при обращении к таким представлениям информационной схемы, как check_constraint_routine_usage , check_constraints , domain_constraints и referential_constraints . В некоторых других представлениях она могла бы тоже иметь место, но они содержат имя таблицы, помогающее различить дублирующиеся строки, например: constraint_column_usage , constraint_table_usage , table_constraints .
| Пред. | Наверх | След. |
| 35.17. Внутреннее устройство | Начало | 36.1. Схема |