sql >> Database >  >> RDS >> Oracle

Hoe kan ik een tabel in Oracle beschrijven zonder de opdracht DESCRIBE te gebruiken?

U zoekt naar USER_TAB_COLUMNS - alle kolommen en hun beschrijvingen in het schema waarin de query wordt uitgevoerd - of ALL_TAB_COLUMNS - hetzelfde behalve voor alle tabellen die de gebruiker mag bekijken.

Een typische vraag zou kunnen zijn:

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

column_id is de "volgorde" van de kolom in de tabel.

Je moet ervoor zorgen dat 'MY_TABLE' met een hoofdletter wordt geschreven, tenzij je tabellen met hoofdletters hebt toegevoegd (een slecht idee). In dat geval moet je iets als = "MyTable" gebruiken .

Specifiek desc is gelijk aan het volgende dat ik heb gestolen van ss64, een goede Oracle-bron:

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

Je kunt dit soort weergaven vinden door select * from dictionary , het hoogste niveau van de datadictionary of door de documentatie te bekijken.

Er is ook de DBA_TAB_COLUMNS , wat hetzelfde is als ALL_TAB_COLUMNS , maar voor elke tabel in de database. Dit veronderstelt dat u de privileges hebt om zowel de tabel als de tabellen te bekijken. Als u geen toegang heeft tot deze tabel, moet u uw DBA verkrijgen om u de SELECT ANY DICTIONARY te verlenen. voorrecht.



  1. SQL Server-vergrendelingen - andere vergrendelingen die u moet kennen

  2. Wanneer hebben kolom- of tabelnamen van Postgres aanhalingstekens nodig en wanneer niet?

  3. MySQL Tabellen maken met buitenlandse sleutels die errno geven:150

  4. Selecteer gegevens tussen een datum/tijdbereik