Detalhando uma tabela no Oracle

Detalhando uma tabela no Oracle

Overview

Navegar pelas diferenças entre bancos de dados pode ser um desafio, especialmente para quem está migrando de SQL Server para Oracle. Este post é um guia rápido e descomplicado para entender como acessar informações de tabelas no Oracle, com dicas úteis inclusive para quem usa outros SGBDs. Vamos desbravar juntos esses comandos!

Para quem está acostumado a utilizar o SQL Server, a procedure sp_help está sempre disponível para recuperarmos os detalhes de alguma tabela. No Oracle a coisa muda um pouco de figura. Abaixo estão algumas opções para conseguir esta informação.

A primeira (e talvez a mais utilizada) forma de se conseguir estas informações é usando o comando abaixo:

desc nome_da_tabela;
--ou
describe nome_da_tabela;

O problema deste comando é que ele não é um statement SQL em si, ou seja, não irá funcionar em todos os lugares. Aliás, provavel que só funcione no SQL*Plus ou SQL Developer. O DBeaver Community, por exemplo (até a versão 4.1.2) não suporta estes comandos.

Para resolver este problema, você pode utilizar o comando abaixo:

select * from all_tab_columns  where table_name = 'nome_da_tabela' order by column_id;

Esta consulta retornará as colunas abaixo. Os nomes são bem intuitivos, então não vou explicá-los (a menos que apareçam dúvidas).

  • OWNER
  • TABLE_NAME
  • COLUMN_NAME
  • DATA_TYPE
  • DATA_TYPE_MOD
  • DATA_TYPE_OWNER
  • DATA_LENGTH
  • DATA_PRECISION
  • DATA_SCALE
  • NULLABLE
  • COLUMN_ID
  • DEFAULT_LENGTH
  • DATA_DEFAULT
  • NUM_DISTINCT
  • LOW_VALUE
  • HIGH_VALUE
  • DENSITY
  • NUM_NULLS
  • NUM_BUCKETS
  • LAST_ANALYZED
  • SAMPLE_SIZE
  • CHARACTER_SET_NAME
  • CHAR_COL_DECL_LENGTH
  • GLOBAL_STATS
  • USER_STATS
  • AVG_COL_LEN
  • CHAR_LENGTH
  • CHAR_USED
  • V80_FMT_IMAGE
  • DATA_UPGRADED
  • HISTOGRAM

Extra!

Para conseguir este resultado em outros SGBDs, utilize os comandos abaixo:

sqlite3: .schema nome_da_tabela
Postgres: \d nome_da_tabela
MySQL: describe nome_da_tabela

Espero ter ajudado.