tables - sql nomi tabelle




Ottieni l'elenco di tutte le tabelle in Oracle? (13)

Come posso interrogare un database Oracle per visualizzare i nomi di tutte le tabelle al suo interno?


Per una migliore visualizzazione con sqlplus

Se stai usando sqlplus potresti voler impostare alcuni parametri per una visualizzazione migliore se le tue colonne vengono manchiate (queste variabili non dovrebbero persistere dopo l'uscita dalla sessione sqlplus ):

set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000

Mostra tutte le tabelle

È quindi possibile utilizzare qualcosa come questo per vedere tutti i nomi delle tabelle:

SELECT table_name, owner, tablespace_name FROM all_tables;

Mostra le tabelle che possiedi

Come menziona @Justin Cave, puoi usare questo per mostrare solo le tabelle che possiedi:

SELECT table_name FROM user_tables;

Non dimenticare le viste

Tieni presente che alcune "tabelle" potrebbero in realtà essere "visualizzazioni", quindi puoi anche provare a eseguire qualcosa del tipo:

SELECT view_name FROM all_views;

I risultati

Questo dovrebbe dare qualcosa che sembra abbastanza accettabile come:


È possibile utilizzare Oracle Data Dictionary per ottenere informazioni sugli oggetti Oracle.

Puoi ottenere l'elenco delle tabelle in diversi modi:

select * 
from dba_tables

o per esempio:

select * 
from dba_objects 
where object_type = 'TABLE' 

Quindi puoi ottenere le colonne della tabella usando il nome della tabella:

select * 
from dba_tab_columns

Quindi è possibile ottenere l'elenco delle dipendenze (trigger, viste e così via):

select * 
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name 

Quindi puoi ottenere l'origine del testo di questi oggetti:

select * from dba_source

E puoi usare USER o ALL invece di DBA se vuoi.


Comprese le visualizzazioni:

SELECT owner, table_name as table_view
  FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
  FROM DBA_VIEWS

Con uno di questi, puoi selezionare:

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM DBA_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM ALL_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

Di seguito è riportato uno snippet commentato di query SQL che descrive come le opzioni possono essere utilizzate:

-- need to have select catalog role
SELECT * FROM dba_tables;

-- to see tables of your schema
SELECT * FROM user_tables;

-- tables inside your schema and tables of other schema which you possess select grants on
SELECT * FROM all_tables;

Esiste 3 datadictinary per questo

DBA_TABLES descrive tutte le tabelle relazionali nel database.

SELECT owner, table_name
  FROM dba_tables

Descrizione delle tabelle relazionali accessibili all'utente

SELECT owner, table_name
  FROM all_tables

USER_TABLES descrive le tabelle relazionali di proprietà dell'utente corrente. Questa vista non mostra la colonna OWNER .

SELECT table_name
  FROM user_tables

La seguente query elenca solo i dati richiesti, mentre le altre risposte mi hanno dato i dati extra che mi hanno solo confuso.

select table_name from user_tables;


Prova a selezionare da user_tables che elenca le tabelle di proprietà dell'utente corrente.


Prova le viste del dizionario dati di seguito.

tabs
dba_tables
all_tables
user_tables

Stavo cercando di ottenere un elenco di tutti i nomi di colonne appartenenti a una tabella di uno schema ordinati in base all'ordine di id della colonna.

Ecco la query che sto usando: -

SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;

    select object_name from user_objects where object_type='TABLE';

----------------O------------------

    select * from tab;

----------------O------------------

    select table_name from user_tables;

select * from dba_tables

assegna tutte le tabelle di tutti gli utenti solo se l'utente con cui hai effettuato l'accesso ha i privilegi sysdba .





oracle