Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso descrivere una tabella in Oracle senza utilizzare il comando DESCRIBE?

Stai cercando USER_TAB_COLUMNS - tutte le colonne e le loro descrizioni nello schema in cui viene eseguita la query - o ALL_TAB_COLUMNS - lo stesso tranne che per tutte le tabelle che l'utente ha il permesso di visualizzare.

Una query tipica potrebbe essere:

select *
  from user_tab_columns
 where table_name = 'MY_TABLE'
 order by column_id

column_id è l'"ordine" della colonna nella tabella.

Dovresti assicurarti che 'MY_TABLE' sia in maiuscolo a meno che tu non abbia aggiunto tabelle con maiuscolo (una cattiva idea), nel qual caso devi usare qualcosa come = "MyTable" .

In particolare desc è equivalente a quanto segue che ho rubato da ss64, una buona risorsa Oracle:

select column_name as "Name"
     , nullable as "Null?"
     , concat(concat(concat(data_type,'('),data_length),')') as "Type"
  from user_tab_columns
 where table_name = 'MY_TABLE';

Puoi trovare tutto questo tipo di visualizzazione select * from dictionary , che è il livello più alto del dizionario dei dati o guardando la documentazione.

C'è anche il DBA_TAB_COLUMNS , che è lo stesso di ALL_TAB_COLUMNS , ma per ogni tabella nel database. Ciò presuppone che tu abbia i privilegi per visualizzare sia esso che le tabelle. Se non hai accesso a questa tabella, devi ottenere il tuo DBA per concederti il ​​SELECT ANY DICTIONARY privilegio.