37.16. columns
Представление columns
содержит информацию обо всех столбцах таблиц (или столбцах представлений) в базе данных. Системные столбцы (oid
и т. д.) в нём не отображаются. В нём показываются только те столбцы, к которым имеет доступ текущий пользователь (являясь владельцем или имея некоторые права).
Таблица 37.14. Столбцы 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 , если столбец может содержать NULL, или NO , если он не принимает NULL. Не будет принимать NULL столбец с ограничением NOT NULL, но возможны и другие варианты. |
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 | Относится к функциональности, отсутствующей в PostgreSQL (см. поле datetime_precision , определяющее точность в долях секунды для типов интервалов) |
character_set_catalog | sql_identifier | Относится к функциональности, отсутствующей в PostgreSQL |
character_set_schema | sql_identifier | Относится к функциональности, отсутствующей в PostgreSQL |
character_set_name | sql_identifier | Относится к функциональности, отсутствующей в PostgreSQL |
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 | Относится к функциональности, отсутствующей в PostgreSQL |
scope_schema | sql_identifier | Относится к функциональности, отсутствующей в PostgreSQL |
scope_name | sql_identifier | Относится к функциональности, отсутствующей в PostgreSQL |
maximum_cardinality | cardinal_number | Всегда NULL, так как массивы имеют неограниченную максимальную ёмкость в PostgreSQL |
dtd_identifier | sql_identifier | Идентификатор дескриптора типа данных столбца, уникальный среди всех дескрипторов типов, относящихся к таблице. Он в основном полезен для соединения с другими экземплярами таких идентификаторов. (Конкретный формат идентификатора не определён и не гарантируется, что он останется неизменным в будущих версиях.) |
is_self_referencing | yes_or_no | Относится к функциональности, отсутствующей в PostgreSQL |
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 | Относится к функциональности, отсутствующей в PostgreSQL |
generation_expression | character_data | Относится к функциональности, отсутствующей в PostgreSQL |
is_updatable | yes_or_no | YES , если столбец допускает изменение, или NO в противном случае (столбцы в базовых таблицах всегда изменяемые, но в представлениях — не обязательно) |
Так как типы данных могут определяться в SQL множеством способов и PostgreSQL добавляет дополнительные варианты, представление типов в информационной схеме может быть довольно сложным. Столбец data_type
предназначен для идентификации нижележащего встроенного типа столбца. В PostgreSQL это означает, что данный тип определён в схеме системного каталога pg_catalog
. Этот столбец может быть полезным, если приложение способно особым образом воспринимать встроенные типы (например, форматировать числовые типы по-другому или задействовать данные в столбцах точности). Столбцы udt_name
, udt_schema
и udt_catalog
всегда указывают на нижележащий тип данных столбца, даже если столбец основан на домене. (Так как в PostgreSQL встроенные типы не отличаются от определённых пользователем, в этом представлении выводятся и они. Это расширение стандарта SQL.) Эти столбцы должны учитываться, когда приложению нужно обрабатывать данные в зависимости от типа, так как в этом случае не важно, основан ли столбец на домене. Если столбец основан на домене, на него указывают столбцы domain_name
, domain_schema
и domain_catalog
. Если вы хотите связать столбцы с их типами данных и обработать домены как отдельные типы, вы можете записать coalesce(domain_name, udt_name)
и т. п.