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

Hvordan kan jeg beskrive en tabel i Oracle uden at bruge kommandoen DESCRIBE?

Du leder efter USER_TAB_COLUMNS - alle kolonnerne og deres beskrivelser i skemaet, som forespørgslen udføres i - eller ALL_TAB_COLUMNS - det samme bortset fra alle tabeller, som brugeren har tilladelse til at se.

En typisk forespørgsel kan være:

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

column_id er "rækkefølgen" af kolonnen i tabellen.

Du bør sikre dig, at 'MY_TABLE' er stort, medmindre du har tilføjet tabeller med store og små bogstaver (en dårlig idé), i hvilket tilfælde du skal bruge noget som = "MyTable" .

Specifikt desc svarer til følgende, som jeg stjal fra ss64, en god Oracle-ressource:

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 finde alt denne slags visninger ved at select * from dictionary , som er det øverste niveau i dataordbogen eller ved at se i dokumentationen.

Der er også DBA_TAB_COLUMNS , hvilket er det samme som ALL_TAB_COLUMNS , men for hver tabel i databasen. Dette forudsætter, at du har rettighederne til at se både det og tabellerne. Hvis du ikke har adgang til denne tabel, skal du få din DBA til at give dig SELECT ANY DICTIONARY privilegium.



  1. Bestil efter COUNT pr. værdi

  2. Sådan fungerer Cotd() i PostgreSQL

  3. Hvordan vælger jeg en hel række, der har det største ID i tabellen?

  4. SQL-injektion, der kommer omkring mysql_real_escape_string()