35.17. columns#

35.17. columns

35.17. columns

Представление columns содержит информацию о всех столбцах таблицы (или столбцах представления) в базе данных. Системные столбцы (ctid и т. д.) не включены. Показываются только те столбцы, к которым текущий пользователь имеет доступ (как владелец или имеющий некоторые привилегии).

Таблица 35.15. columns Колонки

Тип столбца

Описание

table_catalog sql_identifier

Имя базы данных, содержащей таблицу (всегда текущая база данных)

table_schema sql_identifier

Имя схемы, содержащей таблицу

table_name sql_identifier

Имя таблицы

column_name sql_identifier

Имя столбца

ordinal_position cardinal_number

Порядковый номер столбца в таблице (счет начинается с 1)

column_default character_data

Выражение по умолчанию для столбца

is_nullable yes_or_no

YES если столбец возможно может быть нулевым, NO если известно, что он не может быть нулевым. Ограничение на ненулевое значение - один из способов, которым столбец может быть известно, что он не может быть нулевым, но могут быть и другие способы.

data_type character_data

Тип данных столбца, если это встроенный тип, или ARRAY, если это массив (в этом случае см. представление element_types), иначе USER-DEFINED (в этом случае тип определен в udt_name и связанные столбцы). Если столбец основан на домене, этот столбец относится к типу, лежащему в основе домена (и домен определен в domain_name и связанные столбцы).

character_maximum_length cardinal_number

Если data_type определяет тип строки символов или битов, то это максимальная длина, указанная при объявлении; для всех остальных типов данных или если максимальная длина не была указана, значение равно null.

character_octet_length cardinal_number

Если data_type определяет тип символа, максимальная возможная длина в октетах (байтах) данных; null для всех остальных типов данных. Максимальная длина в октетах зависит от указанной максимальной длины символов (см. выше) и кодировки сервера.

numeric_precision cardinal_number

Если data_type определяет числовой тип, то эта колонка содержит (объявленную или неявную) точность типа для этой колонки. Точность указывает количество значащих цифр. Она может быть выражена в десятичной (на основе 10) или двоичной (на основе 2) форме, как указано в колонке numeric_precision_radix. Для всех остальных типов данных эта колонка равна null.

numeric_precision_radix cardinal_number

Если data_type указывает на числовой тип, эта колонка указывает, в какой системе счисления выражены значения в колонках numeric_precision и numeric_scale. Значение может быть либо 2, либо 10. Для всех остальных типов данных эта колонка равна null.

numeric_scale cardinal_number

Если data_type определяет точный числовой тип, то эта колонка содержит масштаб (заданный или неявный) для этого типа в данной колонке. Масштаб указывает количество значащих цифр справа от десятичной точки. Он может быть выражен в десятичной (на основе 10) или двоичной (на основе 2) форме, как указано в колонке numeric_precision_radix. Для всех остальных типов данных эта колонка равна null.

datetime_precision cardinal_number

Если data_type определяет тип даты, времени, метки времени или интервала, то эта колонка содержит (объявленную или неявную) точность дробных секунд типа для этой колонки, то есть количество десятичных знаков, сохраняемых после десятичной точки в значении секунд. Для всех остальных типов данных эта колонка равна null.

interval_type character_data

Если data_type определяет тип интервала, этот столбец содержит спецификацию, какие поля включаются в интервал для этого столбца, например, YEAR TO MONTH, DAY TO SECOND и т. д. Если не были указаны ограничения на поля (то есть интервал принимает все поля), и для всех остальных типов данных, это поле равно null.

interval_precision cardinal_number

Применяется к функциональности, недоступной в Tantor SE (см. datetime_precision для точности долей секунд в столбцах типа интервал)

character_set_catalog sql_identifier

Применяется к функциональности, недоступной в Tantor SE

character_set_schema sql_identifier

Применяется к функциональности, недоступной в Tantor SE

character_set_name sql_identifier

Применяется к функциональности, недоступной в Tantor SE

collation_catalog sql_identifier

Имя базы данных, содержащей сортировку столбца (всегда текущая база данных), null, если используется значение по умолчанию или тип данных столбца не может быть сортирован

collation_schema sql_identifier

Имя схемы, содержащей упорядочение столбца, null, если у столбца используется значение по умолчанию или тип данных столбца не может быть упорядочен

collation_name sql_identifier

Имя правила сортировки столбца, null, если используется значение по умолчанию или тип данных столбца не может быть упорядочен

domain_catalog sql_identifier

Если столбец имеет тип домена, то это имя базы данных, в которой определен этот домен (всегда текущая база данных), в противном случае null.

domain_schema sql_identifier

Если столбец имеет тип домена, то это имя схемы, в которой определен этот домен, в противном случае - null.

domain_name sql_identifier

Если столбец имеет тип домена, то это будет имя домена, в противном случае - null.

udt_catalog sql_identifier

Имя базы данных, в которой определен тип данных столбца (базовый тип домена, если применимо) (всегда текущая база данных)

udt_schema sql_identifier

Имя схемы, в которой определен тип данных столбца (базовый тип домена, если применимо)

udt_name sql_identifier

Имя типа данных столбца (базовый тип домена, если применимо)

scope_catalog sql_identifier

Применяется к функциональности, недоступной в Tantor SE

scope_schema sql_identifier

Применяется к функциональности, недоступной в Tantor SE

scope_name sql_identifier

Применяется к функциональности, недоступной в Tantor SE

maximum_cardinality cardinal_number

Всегда null, потому что массивы всегда имеют неограниченную максимальную кардинальность в Tantor SE

dtd_identifier sql_identifier

Идентификатор дескриптора типа данных столбца, уникальный среди дескрипторов типов данных, относящихся к таблице. Это особенно полезно для соединения с другими экземплярами таких идентификаторов. (Конкретный формат идентификатора не определен и не гарантируется, что он останется таким же в будущих версиях).

is_self_referencing yes_or_no

Применяется к функциональности, недоступной в Tantor SE

is_identity yes_or_no

Если столбец является столбцом идентификатора, то YES, иначе NO.

identity_generation character_data

Если столбец является столбцом идентификатора, то ALWAYS или BY DEFAULT, отражая определение столбца.

identity_start character_data

Если столбец является столбцом идентификатора, то это начальное значение внутренней последовательности, иначе null.

identity_increment character_data

Если столбец является столбцом идентификатора, то это увеличение внутренней последовательности, иначе null.

identity_maximum character_data

Если столбец является столбцом идентификатора, то максимальное значение внутренней последовательности, иначе null.

identity_minimum character_data

Если столбец является столбцом идентификатора, то это минимальное значение внутренней последовательности, иначе null.

identity_cycle yes_or_no

Если столбец является столбцом идентификатора, то YES, если внутренняя последовательность циклическая, или NO, если она не циклическая; в противном случае null.

is_generated character_data

Если столбец является вычисляемым столбцом, то ALWAYS, иначе NEVER.

generation_expression character_data

Если столбец является вычисляемым столбцом, то выражение генерации, иначе null.

is_updatable yes_or_no

YES если столбец может быть изменен, NO если нет (Столбцы в базовых таблицах всегда могут быть изменены, столбцы в представлениях не обязательно)


Поскольку типы данных могут быть определены различными способами в SQL, а Tantor SE содержит дополнительные способы определения типов данных, их представление в информационной схеме может быть несколько сложным. Столбец data_type должен идентифицировать базовый встроенный тип столбца. В Tantor SE это означает, что тип определен в схеме системного каталога pg_catalog. Этот столбец может быть полезен, если приложение может обрабатывать известные встроенные типы особым образом (например, форматировать числовые типы по-разному или использовать данные в столбцах точности). Столбцы udt_name, udt_schema и udt_catalog всегда идентифицируют базовый тип данных столбца, даже если столбец основан на домене. (Поскольку Tantor SE обрабатывает встроенные типы как пользовательские типы, встроенные типы также отображаются здесь. Это расширение стандарта SQL). Эти столбцы следует использовать, если приложение хочет обрабатывать данные по-разному в зависимости от типа, потому что в этом случае не имеет значения, основан ли столбец на домене. Если столбец основан на домене, идентификатор домена хранится в столбцах domain_name, domain_schema и domain_catalog. Если вы хотите сопоставить столбцы с соответствующими типами данных и обрабатывать домены как отдельные типы, вы можете написать coalesce(domain_name, udt_name) и т.д.