Перейти к содержимому

Information schema что это

  • автор:

представления схемы Сведения о системе (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.

Схема сведений

Область применения: check marked yesТолько каталог Unity Databricks SQL check marked yesDatabricks Runtime 10.2 и выше check marked yes

Это INFORMATION_SCHEMA стандартная схема на основе SQL, предоставляемая в каждом каталоге, созданном в каталоге Unity.

В схеме сведений можно найти набор представлений, описывающих объекты, известные каталогу схемы, который вы привилегированны. Схема сведений каталога SYSTEM возвращает сведения об объектах во всех каталогах в хранилище метаданных. Системные таблицы информационной схемы не содержат метаданные об hive_metastore объектах.

Назначение схемы сведений состоит в том, чтобы предоставить основанный на SQL API с самоописанием для метаданных.

Схема отношений сущностей схемы сведений

На следующей схеме связи сущностей (ER) представлен обзор подмножества представлений схемы информации и их связи друг с другом.

ER diagram of information schema

Представления информационной схемы

Имя Описание
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. Схема

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *