A visão columns contém informações
sobre todas as colunas de tabela (ou colunas de visão) no banco de dados.
As colunas do sistema (ctid, etc.) não estão incluídas.
Somente são mostradas as colunas para as quais o usuário corrente
tem acesso (por ser o dono ou ter algum privilégio).
Tabela 35.15. Colunas de columns
Coluna Tipo de dados Descrição |
|---|
Nome do banco de dados que contém a tabela (sempre o banco de dados corrente) |
Nome do esquema que contém a tabela |
Nome da tabela |
Nome da coluna |
Posição ordinal da coluna na tabela (contado a partir de 1) |
Expressão padrão da coluna |
|
Tipo de dados da coluna, se for um tipo de dados integrado, ou
|
Se a coluna |
Se a coluna |
Se a coluna |
Se a coluna |
Se a coluna |
Se a coluna |
Se a coluna |
Aplica-se a uma funcionalidade não disponível no
PostgreSQL
(veja |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Nome do banco de dados que contém a ordenação da coluna (sempre o banco de dados corrente), ou será nula se o valor padrão ou o tipo de dados da coluna não for ordenável |
Nome do esquema que contém a ordenação da coluna, ou será nula se o valor padrão ou o tipo de dados da coluna não for ordenável |
Nome da ordenação da coluna, ou será nula se o valor padrão ou o tipo de dados da coluna não for ordenável |
Se a coluna tiver um tipo de dados de domínio, o nome do banco de dados onde o domínio está definido (sempre o banco de dados corrente), caso contrário será nula. |
Se a coluna tiver um tipo de dados de domínio, o nome do esquema onde o domínio está definido, caso contrário será nula. |
Se a coluna tiver um tipo de dados de domínio, o nome do domínio, caso contrário será nula. |
Nome do banco de dados onde o tipo de dados da coluna (o tipo de dados subjacente do domínio, se aplicável) está definido (sempre o banco de dados corrente) |
Nome do esquema onde o tipo de dados da coluna (o tipo de dados subjacente do domínio, se aplicável) está definido |
Nome do tipo de dados da coluna (o tipo de dados subjacente do domínio, se aplicável) |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Sempre nula, porque as matrizes sempre têm cardinalidade máxima ilimitada no PostgreSQL |
Identificador do descritor de tipo de dados da coluna, único entre os descritores de tipo de dados pertencentes à tabela. Serve principalmente para realizar junções com outras instâncias desses identificadores. (O formato específico do identificador não está definido, não havendo garantia de que irá permanecer o mesmo em versões futuras.) |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Se a coluna for uma coluna de identidade, então será
|
Se a coluna for uma coluna de identidade, então será
|
Se a coluna for uma coluna de identidade, então será o valor inicial da sequência interna, caso contrário será nula. |
Se a coluna for uma coluna de identidade, então será o incremento da sequência interna, caso contrário será nula. |
Se a coluna for uma coluna de identidade, então será o valor máximo da sequência interna, caso contrário será nula. |
Se a coluna for uma coluna de identidade, então será o valor mínimo da sequência interna, caso contrário será nula. |
Se a coluna for uma coluna de identidade, então será
|
Se a coluna for uma coluna gerada, então será
|
Se a coluna for uma coluna gerada, então será a expressão de geração, caso contrário será nula. |
|
Como os tipos de dados podem ser definidos de diversas maneiras no
padrão SQL, e o PostgreSQL
contém maneiras adicionais para definir tipos de dados, sua representação
no esquema de informações pode ser um tanto difícil.
A coluna data_type
deve identificar o tipo de dados integrado subjacente da coluna.
No PostgreSQL, isto significa que o
tipo de dados é definido no esquema do catálogo do sistema
pg_catalog.
Esta coluna poderá ser útil se a aplicação puder lidar com
tipos de dados integrados bem conhecidos de forma especial
(por exemplo, formatando os tipos de dados numéricos de maneira
diferente, ou usando os dados das colunas de precisão).
As colunas udt_name,
udt_schema e udt_catalog
sempre identificam o tipo de dados subjacente da coluna, mesmo que
a coluna seja baseada em um domínio.
(Como o PostgreSQL trata os tipos de dados
integrados como os tipos de dados definidos pelo usuário,
os tipos de dados integrados também aparecem aqui.
Esta é uma extensão ao padrão SQL.)
Estas colunas devem ser utilizadas caso uma aplicação queira processar
os dados de forma diferente conforme o tipo de dados, porque neste
caso não irá importar se a coluna é, na verdade, baseada em um domínio.
Se a coluna for baseada em um domínio, a identidade do domínio será
armazenada nas colunas domain_name,
domain_schema, e
domain_catalog.
Se for desejado parear as colunas com seus tipos de dados associados
e tratar os domínios como tipos de dados separados, pode-se escrever
coalesce(domain_name, udt_name), etc.
Exemplo 35.14. Exemplo do tradutor
Colunas da tabela pessoa
Uso do esquema de informações para mostrar todas as colunas da tabela pessoa da usuária cristina no banco de dados cristina. Veja a criação da tabela em Exemplo da visão column_column_usage.
SELECT table_catalog, table_schema, table_name, column_name,
ordinal_position, is_identity,is_nullable,
data_type, is_generated, generation_expression
FROM information_schema.columns
WHERE table_name='pessoa'
ORDER BY ordinal_position\gx
-[ RECORD 1 ]---------+-------------------------- table_catalog | cristina table_schema | public table_name | pessoa column_name | id ordinal_position | 1 is_identity | NO is_nullable | NO data_type | integer is_generated | NEVER generation_expression | -[ RECORD 2 ]---------+-------------------------- table_catalog | cristina table_schema | public table_name | pessoa column_name | nome ordinal_position | 2 is_identity | NO is_nullable | YES data_type | text is_generated | NEVER generation_expression | -[ RECORD 3 ]---------+-------------------------- table_catalog | cristina table_schema | public table_name | pessoa column_name | altura_cm ordinal_position | 3 is_identity | NO is_nullable | YES data_type | numeric is_generated | NEVER generation_expression | -[ RECORD 4 ]---------+-------------------------- table_catalog | cristina table_schema | public table_name | pessoa column_name | peso_kg ordinal_position | 4 is_identity | NO is_nullable | YES data_type | numeric is_generated | NEVER generation_expression | -[ RECORD 5 ]---------+-------------------------- table_catalog | cristina table_schema | public table_name | pessoa column_name | altura_inch ordinal_position | 5 is_identity | NO is_nullable | YES data_type | numeric is_generated | ALWAYS generation_expression | (altura_cm / 2.54) -[ RECORD 6 ]---------+-------------------------- table_catalog | cristina table_schema | public table_name | pessoa column_name | peso_pound ordinal_position | 6 is_identity | NO is_nullable | YES data_type | numeric is_generated | ALWAYS generation_expression | (peso_kg * 2.20462262185)