Представления в information_schema являются SQL-стандартными представлениями, описывающими записи каталога базы данных. Эти представления могут быть отфильтрованы для получения информации о конкретном столбце или таблице. Реализация DuckDB основана на схеме информации PostgreSQL.
Представление, описывающее информацию о каталоге столбцов, это information_schema.columns. Оно перечисляет столбцы, присутствующие в базе данных, и имеет следующий вид:
Столбец
Описание
Тип
Пример
table_catalog
Имя базы данных, содержащей таблицу (всегда текущая база данных).
VARCHAR
'my_db'
table_schema
Имя схемы, содержащей таблицу.
VARCHAR
'main'
table_name
Имя таблицы.
VARCHAR
'widgets'
column_name
Имя столбца.
VARCHAR
'price'
ordinal_position
Порядковый номер столбца в таблице (счёт начинается с 1).
INTEGER
5
column_default
Выражение по умолчанию для столбца.
VARCHAR
1.99
is_nullable
YES если столбец потенциально допускает NULL, NO если он явно не допускает NULL.
VARCHAR
'YES'
data_type
Тип данных столбца.
VARCHAR
'DECIMAL(18, 2)'
character_maximum_length
Если data_type идентифицирует тип строкового или битового значения, максимальная объявленная длина; null для всех других типов данных или если максимальная длина не была объявлена.
INTEGER
255
character_octet_length
Если data_type идентифицирует строковый тип, максимальная возможная длина в октетах (байтах) данных; null для всех других типов данных. Максимальная длина в октетах зависит от объявленной максимальной длины символов (см. выше) и кодировки символов.
INTEGER
1073741824
numeric_precision
Если data_type идентифицирует числовой тип, этот столбец содержит (объявленную или неявную) точность типа для этого столбца. Точность указывает количество значащих цифр. Для всех других типов данных этот столбец имеет значение null.
INTEGER
18
numeric_scale
Если data_type идентифицирует числовой тип, этот столбец содержит (объявленную или неявную) разрядность типа для этого столбца. Разрядность указывает количество значащих цифр. Для всех других типов данных этот столбец имеет значение null.
INTEGER
2
datetime_precision
Если data_type идентифицирует тип даты, времени, метки времени или интервала, этот столбец содержит (объявленную или неявную) точность дробных секунд типа для этого столбца, то есть количество десятичных знаков, поддерживаемых после десятичной точки в значении секунд. В DuckDB в настоящее время не поддерживаются дробные секунды. Для всех остальных типов данных этот столбец имеет значение null.
Это представление описывает все столбцы в текущей базе данных, используемые некоторым ограничением. Для ограничения проверки это представление идентифицирует столбцы, используемые в выражении проверки. Для ограничения не-NULL это представление идентифицирует столбец, на котором определено ограничение. Для внешнего ключа это представление идентифицирует столбцы, на которые ссылается внешний ключ. Для уникального или первичного ключа это представление идентифицирует ограниченные столбцы.
Столбец
Описание
Тип
Пример
table_catalog
Имя базы данных, содержащей таблицу, содержащую столбец, используемый некоторым ограничением (всегда текущая база данных)
VARCHAR
'my_db'
table_schema
Имя схемы, содержащей таблицу, содержащую столбец, используемый некоторым ограничением
VARCHAR
'main'
table_name
Имя таблицы, содержащей столбец, используемый некоторым ограничением
VARCHAR
'widgets'
column_name
Имя столбца, используемого некоторым ограничением
VARCHAR
'price'
constraint_catalog
Имя базы данных, содержащей ограничение (всегда текущая база данных)
Вид, описывающий информацию о каталоге для таблиц и представлений, — information_schema.tables. Он перечисляет таблицы, присутствующие в базе данных, и имеет следующий макет:
Столбец
Описание
Тип
Пример
table_catalog
Каталог, к которому принадлежит таблица или вид.
VARCHAR
'my_db'
table_schema
Схема, к которой принадлежит таблица или вид.
VARCHAR
'main'
table_name
Имя таблицы или вида.
VARCHAR
'widgets'
table_type
Тип таблицы. Один из: BASE TABLE, LOCAL TEMPORARY, VIEW.
VARCHAR
'BASE TABLE'
self_referencing_column_name
Относится к функции, недоступной в DuckDB.
VARCHAR
NULL
reference_generation
Относится к функции, недоступной в DuckDB.
VARCHAR
NULL
user_defined_type_catalog
Если таблица является типизированной, имя базы данных, содержащей базовый тип данных (всегда текущая база данных), иначе null. В настоящее время не реализовано.
VARCHAR
NULL
user_defined_type_schema
Если таблица является типизированной, имя схемы, содержащей базовый тип данных, иначе null. В настоящее время не реализовано.
VARCHAR
NULL
user_defined_type_name
Если таблица является типизированной, имя базового типа данных, иначе null. В настоящее время не реализовано.
VARCHAR
NULL
is_insertable_into
YES если в таблицу можно вставлять данные, NO если нет (Базовые таблицы всегда доступны для вставки, представления — нет обязательно).
VARCHAR
'YES'
is_typed
YES если таблица является типизированной, NO если нет.
Имя базы данных, содержащей ограничение (всегда текущая база данных).
VARCHAR
'my_db'
constraint_schema
Имя схемы, содержащей ограничение.
VARCHAR
'main'
constraint_name
Имя ограничения.
VARCHAR
'exams_exam_id_fkey'
table_catalog
Имя базы данных, содержащей таблицу (всегда текущая база данных).
VARCHAR
'my_db'
table_schema
Имя схемы, содержащей таблицу.
VARCHAR
'main'
table_name
Имя таблицы.
VARCHAR
'exams'
constraint_type
Тип ограничения: CHECK, FOREIGN KEY, PRIMARY KEY, или UNIQUE.
VARCHAR
'FOREIGN KEY'
is_deferrable
YES если ограничение откладывается, NO если нет.
VARCHAR
'NO'
initially_deferred
YES если ограничение откладывается и первоначально отложено, NO если нет.
VARCHAR
'NO'
enforced
Всегда YES.
VARCHAR
'YES'
nulls_distinct
Если ограничение является уникальным, тогда YES если ограничение рассматривает NULL как разные значения или NO если оно рассматривает NULL как одинаковые значения, в противном случае NULL для других типов ограничений.