30.9. columns

A visão columns mostra informações sobre todas as colunas das tabelas (ou colunas das visões) do banco de dados. As colunas do sistema (oid, etc.) não são incluídas. Somente são mostradas as colunas que o usuário corrente tem acesso (por ser o dono ou por ter algum privilégio). [1] [2] [3]

Tabela 30-7. Colunas de columns

Nome Tipo de dado Descrição
table_catalog sql_identifier Nome do banco de dados que contém a tabela (sempre o banco de dados corrente)
table_schema sql_identifier Nome do esquema que contém a tabela
table_name sql_identifier Nome da tabela
column_name sql_identifier Nome da coluna
ordinal_position cardinal_number Posição ordinal da coluna na tabela (contada a partir de 1)
column_default character_data Expressão padrão da coluna (nulo se o usuário corrente não for o dono da tabela que contém a coluna)
is_nullable character_data YES se a coluna puder ser nula, NO se não puder ser nula. A restrição de não-nulo é uma maneira de saber que a coluna não pode ser nula, mas podem haver outras.
data_type character_data Tipo de dado da coluna, se for um tipo nativo, ARRAY se for uma matriz (neste caso deve ser vista a visão element_types), ou então USER-DEFINED (neste caso o tipo é identificado em udt_name e nas colunas associadas). Se a coluna for baseada em um domínio, esta coluna se refere ao tipo subjacente do domínio (e o domínio é identificado em domain_name e nas colunas associadas).
character_maximum_length cardinal_number Quando data_type identifica um tipo cadeia de caracteres ou de bits, o comprimento máximo declarado; nulo para todos os outros tipos de dado, ou se o comprimento máximo não for declarado.
character_octet_length cardinal_number Quando data_type identifica um tipo caractere, o comprimento máximo possível em octetos (bytes) do dado (não deve ser de interesse dos usuários do PostgreSQL); nulo para todos os outros tipos de dado.
numeric_precision cardinal_number Quando data_type identifica um tipo numérico, esta coluna contém a precisão (declarada ou implícita) do tipo de dado desta coluna. A precisão indica o número de dígitos significativos. Pode ser expresso em termos decimais (base 10), ou binários (base 2), conforme especificado na coluna numeric_precision_radix. Para todos ou outros tipos de dado, esta coluna é nula.
numeric_precision_radix cardinal_number Quando data_type identifica um tipo numérico, esta coluna indica em que base estão expressos os valores nas colunas numeric_precision e numeric_scale. O valor é 2 ou 10. Para todos ou outros tipos de dado, esta coluna é nula.
numeric_scale cardinal_number Quando data_type identifica um tipo numérico exato, esta coluna contém a escala (declarada ou implícita) do tipo desta coluna. A escala indica o número de dígitos significativos à direita do ponto decimal. Pode ser expresso em termos decimais (base 10), ou binários (base 2), conforme especificado na coluna numeric_precision_radix. Para todos ou outros tipos de dado, esta coluna é nula.
datetime_precision cardinal_number Quando data_type identifica um tipo data, hora ou intervalo, a precisão declarada; nulo para todos os outros tipos de dado, ou se a precisão não for declarada.
interval_type character_data Ainda não implementado
interval_precision character_data Ainda não implementado
character_set_catalog sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
character_set_schema sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
character_set_name sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
collation_catalog sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
collation_schema sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
collation_name sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
domain_catalog sql_identifier Quando a coluna possui um tipo domínio, o nome do banco de dados onde o domínio está definido (sempre o banco de dados corrente), senão nulo.
domain_schema sql_identifier Quando a coluna possui um tipo domínio, o nome do esquema onde o domínio está definido, senão nulo.
domain_name sql_identifier Quando a coluna possui um tipo domínio, o nome do domínio, senão nulo.
udt_catalog sql_identifier Nome do banco de dados onde o tipo de dado da coluna (o tipo subjacente do domínio, quando aplicável) está definido (sempre o banco de dados corrente) (udt = tipo definido pelo usuário. N. do T.)
udt_schema sql_identifier Nome do esquema onde o tipo de dado da coluna (o tipo subjacente do domínio, quando aplicável) está definido
udt_name sql_identifier Nome tipo de dado da coluna (o tipo subjacente do domínio, quando aplicável)
scope_catalog sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
scope_schema sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
scope_name sql_identifier Se aplica a uma funcionalidade não disponível no PostgreSQL
maximum_cardinality cardinal_number Sempre nulo, porque as matrizes sempre possuem uma cardinalidade [a] máxima não definida no PostgreSQL
dtd_identifier sql_identifier O identificador do descritor do tipo de dado da coluna, único entre todos os descritores [b] de tipo de dado pertencentes à tabela. A utilidade principal é para fazer junção com outras instâncias destes identificadores (O formato específico do identificador não é definido, e também não há garantia que permaneça o mesmo nas versões futuras).
is_self_referencing character_data Se aplica a uma funcionalidade não disponível no PostgreSQL
Notas:
a. cardinalidade — O número de elementos da coleção. Os elementos não precisam necessariamente possuir valores distintos. Os objetos aos quais este conceito se aplica incluem as tabelas e os valores dos tipos coleção. (ISO-ANSI Working Draft) Foundation (SQL/Foundation), August 2003, ISO/IEC JTC 1/SC 32, 25-jul-2003, ISO/IEC 9075-2:2003 (E).(N. do T.)
b. descritor — Uma descrição codificada de um objeto SQL. Inclui todas as informações sobre o objeto requeridas por uma implementação em conformidade com o SQL. (Second Informal Review Draft) ISO/IEC 9075:1992, Database Language SQL- July 30, 1992 (N. do T.)

Uma vez que os tipos de dado podem ser definidos de várias maneiras no SQL, e o PostgreSQL possui maneiras adicionais de definir tipos de dado, sua representação no esquema de informações pode ser um tanto difícil. Supõe-se que o data_type da coluna identifique o tipo nativo subjacente da coluna. No PostgreSQL isto significa que o tipo é definido no catálogo do sistema pg_catalog. Esta coluna pode ser útil se o aplicativo puder tratar de forma especial os tipos de dado nativos bem conhecidos (por exemplo, formatar tipos numéricos de forma diferente, ou utilizar os dados nas colunas de precisão). As colunas udt_name, udt_schema e udt_catalog sempre identificam o tipo de dado subjacente da coluna, mesmo quando a coluna é baseada em um domínio (Uma vez que o PostgreSQL trata os tipos nativos da mesma maneira que os tipos definidos pelo usuário, os tipos nativos também aparecem aqui. É uma extensão ao padrão SQL). Estas colunas devem ser utilizadas se o aplicativo desejar processar os dados de forma diferente conforme o tipo, porque neste caso não vai importar se a coluna realmente se baseia em um domínio. Se a coluna for baseada em um domínio, a identidade do domínio é armazenada nas colunas domain_name, domain_schema e domain_catalog. Se for desejado agrupar as colunas com seus tipos de dado associados e tratar os domínios como tipos separados, pode ser utilizado coalesce(domain_name, udt_name), etc.

Exemplo: Consultar a visão columns. [4]

=> \x
Ativada a exibição expandida.

=> SELECT * FROM information_schema.columns WHERE table_schema='public';

-[ LINHA 1 ]-------------+-------------
table_catalog            | teste
table_schema             | public
table_name               | tbl_cardinal
column_name              | cardinal
ordinal_position         | 1
column_default           |
is_nullable              | NO
data_type                | integer
character_maximum_length |
character_octet_length   |
numeric_precision        | 32 <- Precisão de 32 bits
numeric_precision_radix  | 2  <- Sinaliza binário (bits)
numeric_scale            | 0
datetime_precision       |
interval_type            |
interval_precision       |
character_set_catalog    |
character_set_schema     |
character_set_name       |
collation_catalog        |
collation_schema         |
collation_name           |
domain_catalog           | teste
domain_schema            | public
domain_name              | cardinal_number
udt_catalog              | teste
udt_schema               | pg_catalog
udt_name                 | int4
scope_catalog            |
scope_schema             |
scope_name               |
maximum_cardinality      |
dtd_identifier           | 1
is_self_referencing      | NO

Notas

[1]

COLUMNS — visão — Identifica as colunas das tabelas definidas neste catálogo acessíveis a um determinado usuário ou grupo. (ISO-ANSI Working Draft) Information and Definition Schemas (SQL/Schemata), ISO/IEC 9075-11:2003 (E) (N. do T.)

[2]

O rowset COLUMNS identifica as colunas das tabelas (incluindo as visões) definidas no catálogo acessíveis por um determinado usuário. Microsoft OLE DB Programmer's Reference (N. do T.)

[3]

A visão COLUMNS contém uma linha para cada coluna que pode ser acessada pelo usuário corrente no banco de dados corrente. A visão INFORMATION_SCHEMA.COLUMNS é baseada nas tabelas do sistema sysobjects, spt_data type_info, systypes, syscolumns, syscomments, sysconfigures e syscharsets. SQL Server Books Online (N. do T.)

[4]

Exemplo escrito pelo tradutor, não fazendo parte do manual original.

SourceForge.net Logo CSS válido!