Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich eine Tabelle in Oracle beschreiben, ohne den DESCRIBE-Befehl zu verwenden?

Sie suchen nach USER_TAB_COLUMNS - alle Spalten und ihre Beschreibungen im Schema, in dem die Abfrage ausgeführt wird - oder ALL_TAB_COLUMNS - das gleiche, außer für alle Tabellen, zu deren Anzeige der Benutzer berechtigt ist.

Eine typische Abfrage könnte sein:

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

column_id ist die "Reihenfolge" der Spalte in der Tabelle.

Sie sollten sicherstellen, dass „MY_TABLE“ groß geschrieben wird, es sei denn, Sie haben Tabellen mit Groß- und Kleinschreibung hinzugefügt (eine schlechte Idee), in diesem Fall müssen Sie so etwas wie = "MyTable" verwenden .

Insbesondere desc entspricht dem Folgenden, das ich von ss64, einer guten Oracle-Ressource, gestohlen habe:

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';

Sie können alle diese Art von Ansichten finden, indem Sie select * from dictionary , das ist die oberste Ebene des Datenwörterbuchs, oder indem Sie sich die Dokumentation ansehen.

Es gibt auch den DBA_TAB_COLUMNS , was dasselbe ist wie ALL_TAB_COLUMNS , aber für jede Tabelle in der Datenbank. Dies setzt voraus, dass Sie über die Berechtigungen zum Anzeigen sowohl dieser als auch der Tabellen verfügen. Wenn Sie keinen Zugriff auf diese Tabelle haben, müssen Sie Ihren DBA bitten, Ihnen das SELECT ANY DICTIONARY zu gewähren Privileg.