受講しているクラスで苦労しています。DESCRIBE コマンドと同じように動作する Oracle スクリプトを作成する必要があります。私たちが使用している本では、データ ディクショナリの操作方法が非常に不十分にしか説明されていません。答えを探すのではなく、正しい方向へのポイントです。
4 に答える
あなたが探しているUSER_TAB_COLUMNS
- すべての列、およびクエリが実行されるスキーマ内のそれらの説明 - またはALL_TAB_COLUMNS
- ユーザーが表示する権限を持つすべてのテーブルを除いて同じ。
典型的なクエリは次のとおりです。
select *
from user_tab_columns
where table_name = 'MY_TABLE'
order by column_id
column_id
テーブル内の列の「順序」です。
大文字と小文字を区別してテーブルを追加していない限り (悪い考えです)、「MY_TABLE」が大文字であることを確認する必要があります= "MyTable"
。
具体的には、優れた Oracle リソースであるss64desc
から盗んだ次のものと同等です。
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';
この種のビューはすべて、データ ディクショナリselect * from dictionary
のトップ レベルである によって、またはドキュメントを参照することによって見つけることができます。
もありDBA_TAB_COLUMNS
、これは と同じですがALL_TAB_COLUMNS
、データベース内のすべてのテーブル用です。これは、それとテーブルの両方を表示する権限があることを前提としています。このテーブルにアクセスできない場合は、DBA にSELECT ANY DICTIONARY
権限を付与してもらう必要があります。
テーブルの再作成に使用できるコマンド全体を取得することもできます。
select dbms_metadata.get_ddl('TABLE','<my table name>','<table owner>') from dual;
Oracle には、データベース構造に関するメタデータを含む一連のテーブルがあります。テーブルのテーブルがあります。ビューのテーブル。列のテーブル。USER_TABLES (スキーマ内のテーブル)、ALL_TABLES (表示権限があるテーブル)、DBA_TABLES (権限がある場合はすべてのテーブル) などのビューを使用して、これらのテーブルをクエリできます。より一般的に言えば、多くのデータベース ベンダーは、ベンダー間でメタ データの一貫したビューを提供する「情報スキーマ」をサポートしています。ここで「ALL_TABLES」を検索し、利用可能な他のすべての情報を参照してくださいhttp://docs.oracle.com/cd/B28359_01/server.111/b28320/toc.htm