sql >> Databasteknik >  >> RDS >> Oracle

Hur kan jag beskriva en tabell i Oracle utan att använda kommandot DESCRIBE?

Du letar efter USER_TAB_COLUMNS - alla kolumner och deras beskrivningar i schemat som frågan exekveras i - eller ALL_TAB_COLUMNS - samma utom för alla tabeller som användaren har behörighet att visa.

En typisk fråga kan vara:

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

column_id är "ordningen" för kolumnen i tabellen.

Du bör se till att 'MY_TABLE' är versaler om du inte har lagt till tabeller med skiftläge (en dålig idé) i vilket fall du behöver använda något som = "MyTable" .

Närmare bestämt desc motsvarar följande som jag stal från ss64, en bra Oracle-resurs:

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

Du kan hitta all den här typen av vyer genom att select * from dictionary , som är den översta nivån i dataordboken eller genom att titta på dokumentationen.

Det finns också DBA_TAB_COLUMNS , vilket är samma som ALL_TAB_COLUMNS , men för varje tabell i databasen. Detta förutsätter att du har behörighet att se både den och tabellerna. Om du inte har tillgång till den här tabellen måste du få din DBA för att ge dig SELECT ANY DICTIONARY privilegium.



  1. Använda isql med en anslutningssträng

  2. Hur man kontrollerar replikeringsfailover för MySQL och MariaDB

  3. Returnera en lista över databaser i SQLite

  4. Spåra PostgreSQL med perf