35.17. columns #
Представление columns содержит информацию обо всех столбцах таблиц (или столбцах представлений) в базе данных. Системные столбцы (ctid и т. д.) в нём не отображаются. В нём показываются только те столбцы, к которым имеет доступ текущий пользователь (являясь владельцем или имея некоторые права).
Таблица 35.15. Столбцы columns
| Тип столбца Описание | 
|---|
| 
 Имя базы данных, содержащей таблицу (всегда текущая база) | 
| 
 Имя схемы, содержащей таблицу | 
| 
 Имя таблицы | 
| 
 Имя столбца | 
| 
 Порядковый номер столбца в таблице (нумерация начинается с 1) | 
| 
 Выражение по умолчанию для столбца | 
| 
 
 | 
| 
 Тип данных столбца, если это встроенный тип, либо  | 
| 
 Если в  | 
| 
 Если в  | 
| 
 Если в  | 
| 
 Если в  | 
| 
 Если в  | 
| 
 Если в  | 
| 
 Если в  | 
| 
 Относится к функциональности, отсутствующей в PostgreSQL (см. поле  | 
| 
 Относится к функциональности, отсутствующей в PostgreSQL | 
| 
 Относится к функциональности, отсутствующей в PostgreSQL | 
| 
 Относится к функциональности, отсутствующей в PostgreSQL | 
| 
 Имя базы данных, содержащей правило сортировки столбца (это всегда текущая база), либо NULL, если это правило по умолчанию или тип данных столбца несортируемый | 
| 
 Имя схемы, содержащей правило сортировки столбца, либо NULL, если это правило по умолчанию или тип данных столбца несортируемый | 
| 
 Имя правила сортировки столбца, либо NULL, если это правило по умолчанию или тип данных столбца несортируемый | 
| 
 Если целевой столбец имеет тип домена, этот столбец содержит имя базы данных, в которой определён домен (всегда текущая база), иначе — NULL. | 
| 
 Если целевой столбец имеет тип домена, этот столбец содержит имя схемы, в которой определён домен, иначе — NULL. | 
| 
 Если целевой столбец имеет тип домена, этот столбец содержит имя домена, иначе — NULL. | 
| 
 Имя базы данных, в которой определён тип (если применимо, нижележащий тип домена) столбца (всегда текущая база) | 
| 
 Имя схемы, в которой определён тип (если применимо, нижележащий тип домена) столбца (всегда текущая база) | 
| 
 Имя типа данных столбца (если применимо, нижележащий тип домена) | 
| 
 Относится к функциональности, отсутствующей в PostgreSQL | 
| 
 Относится к функциональности, отсутствующей в PostgreSQL | 
| 
 Относится к функциональности, отсутствующей в PostgreSQL | 
| 
 Всегда NULL, так как массивы имеют неограниченную максимальную ёмкость в PostgreSQL | 
| 
 Идентификатор дескриптора типа данных столбца, уникальный среди всех дескрипторов типов, относящихся к таблице. Он в основном полезен для соединения с другими экземплярами таких идентификаторов. (Конкретный формат идентификатора не определён и не гарантируется, что он останется неизменным в будущих версиях.) | 
| 
 Относится к функциональности, отсутствующей в PostgreSQL | 
| 
 Если целевой столбец является столбцом идентификации, значение  | 
| 
 Если целевой столбец является столбцом идентификации, значение  | 
| 
 Если целевой столбец является столбцом идентификации, начальное значение внутренней последовательности, иначе — NULL. | 
| 
 Если целевой столбец является столбцом идентификации, шаг внутренней последовательности, иначе — NULL. | 
| 
 Если целевой столбец является столбцом идентификации, максимальное значение внутренней последовательности, иначе — NULL. | 
| 
 Если целевой столбец является столбцом идентификации, минимальное значение внутренней последовательности, иначе — NULL. | 
| 
 Если целевой столбец является столбцом идентификации,  | 
| 
 
 | 
| 
 Генерирующее выражение, если целевой столбец является генерируемым, иначе — NULL. | 
| 
 
 | 
Так как типы данных могут определяться в 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) и т. п.