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
[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. |