Translate

domingo, 12 de novembro de 2017

Procurar tabelas que contenham uma coluna com um nome especifico - Postgresql

Para pesquisar quais as tabelas contém uma coluna com um nome específico, vamos utilizar a view "columns".

Esta view já está localizada por padrão no catálogo de objetos do Postgresql, em information_schema.

O information_schema é um padrão ANSI, que contém views que fornecem informações sobre o banco de dados: tabelas, views, colunas e procedures.

 Veja a sua localização na imagem abaixo:



1º) Exemplo:

Procurar todas as tabelas que contenham a coluna "cod_uf "?

SELECT 
table_name
FROM information_schema.columns
WHERE column_name  =  'cod_uf';

Ao executarmos a consulta acima, será retornado o resultado exibido na imagem abaixo:


Logo, a coluna "cod_uf ", pode ser encontrada na tabela "tb_municipio" e "tb_estado".

Legenda:
  • table_name: indica qual tabela a coluna pertence;
  • column_name: armazena o nome da coluna;
  • columns: esta view por padrão armazena informações sobre as colunas do banco; 

2º) Exemplo:

Procurar todas as tabelas que contenham colunas iniciadas por "cod_"?

SELECT 
table_name,
column_name
FROM information_schema.columns
WHERE column_name  LIKE  'cod_%';

Ao executarmos a consulta acima, será retornado o resultado exibido na imagem abaixo:



Logo existem colunas iniciadas por "cod_ " nas tabelas "tb_ordem_servico", "tb_municipio" e "tb_estado".

3º) Exemplo:

Além de procurar todas as tabelas que contenham colunas iniciadas por "cod_", vamos mostrar o tipo de dado de cada coluna.

Para isso vamos incluir na consulta a coluna data_type

SELECT 
table_name,
column_name,
data_type 
FROM information_schema.columns
WHERE column_name  LIKE  'cod_%'

Ao executarmos a consulta acima, será retornado o resultado exibido na imagem abaixo:



Observações finais:

Existem mais colunas na view "columns", que podem ser utilizadas na sua consulta. Para visualizar todas, utilize "*":

SELECT 
*
FROM information_schema.columns;

Para saber mais sobre o assunto acesse:

https://www.postgresql.org/docs/9.3/static/infoschema-columns.html

Um comentário: