sql >> データベース >  >> RDS >> Oracle

Oracleのすべてのテーブルのリストを取得しますか?

    SELECT owner, table_name
      FROM dba_tables
    

    これは、DBA_TABLESにアクセスできることを前提としています。 データディクショナリビュー。これらの特権を持っていないが必要な場合は、DBAがそのテーブルに対する特権を明示的に付与するように要求するか、DBAがSELECT ANY DICTIONARYを付与するように要求できます。 特権またはSELECT_CATALOG_ROLE ロール(どちらの場合も、任意のデータディクショナリテーブルをクエリできます)。もちろん、SYSなどの特定のスキーマを除外することもできます。 およびSYSTEM おそらく気にしないOracleテーブルが多数あります。

    または、DBA_TABLESにアクセスできない場合 、ALL_TABLESを介してアカウントがアクセスできるすべてのテーブルを確認できます ビュー:

    SELECT owner, table_name
      FROM all_tables
    

    ただし、これはデータベースで使用可能なテーブルのサブセットである可能性があります(ALL_TABLES ユーザーにアクセスが許可されているすべてのテーブルの情報が表示されます)。

    アクセスできるテーブルではなく、自分が所有するテーブルのみに関心がある場合は、USER_TABLESを使用できます。 :

    SELECT table_name
      FROM user_tables
    

    USER_TABLES以降 所有しているテーブルに関する情報のみがあり、OWNERはありません。 列–所有者は、定義上、あなたです。

    Oracleには、多数のレガシーデータディクショナリビューもあります-TABDICTTABS 、およびCAT たとえば、それを使用できます。一般に、スクリプトをOracle 6にバックポートする必要が絶対にない限り、これらのレガシービューを使用することはお勧めしません。Oracleはこれらのビューを長い間変更していないため、新しいタイプのオブジェクトで問題が発生することがよくあります。たとえば、TAB およびCAT ビューは両方とも、[DBA|ALL|USER]_TABLESの間に、ユーザーのごみ箱にあるテーブルに関する情報を表示します。 ビューはすべてそれらを除外します。 CAT TABLE_TYPEを使用したマテリアライズドビューログに関する情報も表示されます あなたが本当に望んでいるものではない可能性が高い「テーブル」の。 DICT テーブルと同義語を組み合わせて、オブジェクトの所有者を教えてくれません。



    1. オラクルのカーソルとは

    2. DBMS_SQLを使用してレコードを挿入するOracleDynamicSQLの例

    3. SQLiteエラーに複数の行を挿入します(エラーコード=1)

    4. IFステートメントの条件としての動的SQL(EXECUTE)