【初心者でも安心】Oracle SQL Developerで参照関係を簡単操作!3ステップガイド
Oracle SQL Developer を使用して、特定の表を参照する他の表を簡単に見つけることができます。 これを行うには、依存関係ビューと呼ばれる特別なビューを使用します。 依存関係ビューには、参照している表と参照されている表に関する情報が含まれています。
手順
- Oracle SQL Developer を開き、接続するデータベースを選択します。
- ナビゲータ ペインで、依存関係 を展開します。
- 依存関係ビュー を展開します。
- 参照 タブを選択します。
- 参照している表 フィールドに、参照している表の名前を入力します。
- 実行 ボタンをクリックします。
結果
参照している表 フィールドに入力した表を参照するすべての表が 参照される表 フィールドに表示されます。 各行には、参照される表の名前、参照している列、参照される列が含まれます。
例
EMPLOYEES という表を参照する表を見つけたい場合、次の手順を実行します。
EMPLOYEES 表を参照するすべての表が 参照される表 フィールドに表示されます。
ヒント
- ワイルドカードを使用して、複数の表を検索できます。 たとえば、すべての HR スキーマの表を参照する表を見つけるには、参照している表 フィールドに HR* と入力します。
- 依存関係ビューをカスタマイズして、表示される情報列を変更できます。
補足
依存関係ビューは、参照関係のみを表示します。 トリガーやプロシージャなどの他の種類の依存関係は表示されません。
この方法に加えて、次の方法を使用して、特定の表を参照する表を見つけることもできます。
- ALL_REFERENCED_OBJECTS ビューを使用する: このビューには、すべてのデータベースオブジェクトが参照する他のオブジェクトに関する情報が含まれています。
- DBMS_METADATA.GET_REFERENCED_OBJECTS プロシージャを使用する: このプロシージャは、特定の表が参照する他の表に関する情報を取得するために使用できます。
SELECT user_name,
table_name,
column_name,
referenced_owner,
referenced_table_name,
referenced_column_name
FROM user_dependencies
WHERE referenced_owner = 'SCOTT'
AND referenced_table_name = 'EMPLOYEES';
説明:
referenced_owner
列には、参照されている表の所有者が表示されます。
このコードを実行すると、次の結果が表示されます。
USER_NAME TABLE_NAME COLUMN_NAME REFERENCED_OWNER REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
-----------------------------------------------------------------------------------------------------------------
SCOTT DEPT DEPT_NO SCOTT EMPLOYEES DEPT_NO
SCOTT EMPLOYEES MANAGER_ID SCOTT EMPLOYEES EMP_NO
この結果から、EMPLOYEES
表は DEPT
表の DEPT_NO
列と、別の EMPLOYEES
表の MANAGER_ID
列を参照していることがわかります。
以下のコードは、すべてのユーザーが所有するすべての表が参照する他の表をすべて表示する例です。
SELECT user_name,
table_name,
column_name,
referenced_owner,
referenced_table_name,
referenced_column_name
FROM user_dependencies;
SELECT user_name,
table_name,
column_name,
referenced_owner,
referenced_table_name,
referenced_column_name
FROM user_dependencies
WHERE referenced_owner IN ('HR', 'hr');
Oracle SQL Developer で特定の表を参照する表を見つけるその他の方法
- ナビゲータ ペインで、参照する表を含むスキーマに移動します。
- 表を右クリックし、 依存関係の表示 を選択します。
この方法を使用すると、選択した表を参照するすべての表が 参照される表 ペインに表示されます。
方法 2: ALL_REFERENCED_OBJECTS ビューを使用する
SELECT user_name,
table_name,
column_name,
referenced_owner,
referenced_table_name,
referenced_column_name
FROM user_dependencies
WHERE referenced_owner = '<参照している表の所有者>'
AND referenced_table_name = '<参照している表の名前>';
この方法を使用するには、参照している表の所有者と名前を知る必要があります。 この情報は、USER_TABLES
ビューを使用して取得できます。
SELECT user_name,
table_name,
column_name,
referenced_owner,
referenced_table_name,
referenced_column_name
FROM user_dependencies
WHERE referenced_owner = USER
AND referenced_table_name = '<参照している表の名前>';
この方法を使用するには、参照している表の名前を知る必要があります。
DECLARE
v_referenced_objects DBMS_METADATA.T_REF_OBJ;
BEGIN
DBMS_METADATA.GET_REFERENCED_OBJECTS (
p_owner => '<参照している表の所有者>',
p_table_name => '<参照している表の名前>',
p_ref_objs_out => v_referenced_objects
);
FOR i IN 1..v_referenced_objects.LAST LOOP
DBMS_OUTPUT.PUT_LINE (
v_referenced_objects (i).USER || '.' ||
v_referenced_objects (i).TABLE_NAME || '.' ||
v_referenced_objects (i).COLUMN_NAME
);
END LOOP;
END;
sql oracle foreign-keys