sql >> Databasteknik >  >> RDS >> Oracle

Få lista över alla bord i Oracle?

SELECT owner, table_name
  FROM dba_tables

Detta förutsätter att du har tillgång till DBA_TABLES dataordbokvy. Om du inte har dessa privilegier men behöver dem, kan du begära att DBA uttryckligen ger dig privilegier på den tabellen, eller att DBA ger dig SELECT ANY DICTIONARY privilegium eller SELECT_CATALOG_ROLE roll (som båda skulle tillåta dig att fråga vilken dataordbokstabell som helst). Naturligtvis kanske du vill utesluta vissa scheman som SYS och SYSTEM som har ett stort antal Oracle-tabeller som du förmodligen inte bryr dig om.

Alternativt, om du inte har tillgång till DBA_TABLES , kan du se alla tabeller som ditt konto har åtkomst till genom ALL_TABLES visa:

SELECT owner, table_name
  FROM all_tables

Även om det kan vara en delmängd av tabellerna som är tillgängliga i databasen (ALL_TABLES visar dig informationen för alla tabeller som din användare har fått åtkomst till).

Om du bara bryr dig om de tabeller du äger, inte de som du har tillgång till, kan du använda USER_TABLES :

SELECT table_name
  FROM user_tables

Sedan USER_TABLES har bara information om tabellerna som du äger, den har ingen OWNER kolumn – ägaren, per definition, är du.

Oracle har också ett antal äldre dataordboksvyer-- TAB , DICT , TABS och CAT till exempel-- som kan användas. I allmänhet skulle jag inte föreslå att du använder dessa äldre vyer om du inte absolut behöver backportera dina skript till Oracle 6. Oracle har inte ändrat dessa vyer på länge så de har ofta problem med nyare typer av objekt. Till exempel, TAB och CAT vyerna visar båda information om tabeller som finns i användarens papperskorg medan [DBA|ALL|USER]_TABLES visningar filtrerar alla bort dem. CAT visar även information om materialiserade vyloggar med en TABLE_TYPE av "TABELL" som sannolikt inte är vad du verkligen vill ha. DICT kombinerar tabeller och synonymer och berättar inte vem som äger objektet.



  1. Hur man bäst får någons 'rank' från en poängtabell med php och mysql utan looping

  2. Hur räknar man dagar utom söndagar mellan två datum i Postgres?

  3. Hur ställer jag in sortering för en anslutning i SQL Server?

  4. Returnera rader från INSERT med ON CONFLICT utan att behöva uppdatera