SQL Serverで特定のテーブルを参照するすべての外部キーを一覧表示する方法
SQL Serverで特定のテーブルを参照するすべての外部キーを一覧表示する方法
このチュートリアルでは、SQL Server Management Studio (SSMS) と Transact-SQL (T-SQL) クエリを使用して、特定のテーブルを参照するすべての外部キーを一覧表示する方法を説明します。
方法
SSMS を使用
- SSMS を開き、データベースに接続します。
- オブジェクト エクスプローラーで、テーブル フォルダーを展開します。
- 特定のテーブルを右クリックし、プロパティ を選択します。
- 関係 ページを選択します。
- 参照している グリッドには、選択したテーブルを参照するすべての外部キーが表示されます。
T-SQL クエリを使用
SELECT
fk.TABLE_NAME AS '参照テーブル',
fk.CONSTRAINT_NAME AS '外部キー制約名',
fk.COLUMN_NAME AS '参照列',
pk.TABLE_NAME AS '参照先テーブル',
pk.COLUMN_NAME AS '参照先列'
FROM
sys.foreign_keys fk
INNER JOIN
sys.primary_keys pk ON fk.referenced_object_id = pk.object_id
WHERE
fk.referenced_table_name = 'テーブル名';
このクエリは、以下の情報を表示します:
- 参照テーブル: 外部キーを含むテーブルの名前
- 外部キー制約名: 外部キーの名前
- 参照列: 外部キー列の名前
例
AdventureWorks2019 データベースの Sales.SalesOrderDetail テーブルを参照するすべての外部キーを一覧表示するには、次の方法を使用できます。
- SSMS を開き、AdventureWorks2019 データベースに接続します。
- オブジェクト エクスプローラーで、テーブル フォルダーを展開し、Sales.SalesOrderDetail テーブルを選択します。
- SalesOrderDetail テーブルを右クリックし、プロパティ を選択します。
SELECT
fk.TABLE_NAME AS '参照テーブル',
fk.CONSTRAINT_NAME AS '外部キー制約名',
fk.COLUMN_NAME AS '参照列',
pk.TABLE_NAME AS '参照先テーブル',
pk.COLUMN_NAME AS '参照先列'
FROM
sys.foreign_keys fk
INNER JOIN
sys.primary_keys pk ON fk.referenced_object_id = pk.object_id
WHERE
fk.referenced_table_name = 'SalesOrderDetail';
参照テーブル | 外部キー制約名 | 参照列 | 参照先テーブル | 参照先列
-----------------|-------------------|---------|-------------------|------------
SalesOrderHeader | FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID | SalesOrderID | SalesOrderHeader | SalesOrderID
このチュートリアルでは、SSMS と T-SQL クエリを使用して、特定のテーブルを参照するすべての外部キーを一覧表示する方法を説明しました。
SELECT
fk.TABLE_NAME AS '参照テーブル',
fk.CONSTRAINT_NAME AS '外部キー制約名',
fk.COLUMN_NAME AS '参照列',
pk.TABLE_NAME AS '参照先テーブル',
pk.COLUMN_NAME AS '参照先列'
FROM
sys.foreign_keys fk
INNER JOIN
sys.primary_keys pk ON fk.referenced_object_id = pk.object_id
WHERE
fk.referenced_table_name = 'テーブル名';
SELECT
fk.TABLE_NAME AS '参照テーブル',
fk.CONSTRAINT_NAME AS '外部キー制約名',
fk.COLUMN_NAME AS '参照列',
pk.TABLE_NAME AS '参照先テーブル',
pk.COLUMN_NAME AS '参照先列'
FROM
sys.foreign_keys fk
INNER JOIN
sys.primary_keys pk ON fk.referenced_object_id = pk.object_id
WHERE
fk.referenced_table_name = 'SalesOrderDetail';
参照テーブル | 外部キー制約名 | 参照列 | 参照先テーブル | 参照先列
-----------------|-------------------|---------|-------------------|------------
SalesOrderHeader | FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID | SalesOrderID | SalesOrderHeader | SalesOrderID
説明
SELECT
ステートメントは、返される列を指定します。FROM
句は、データを取得するテーブルを指定します。INNER JOIN
は、sys.foreign_keys
テーブルとsys.primary_keys
テーブルを結合します。WHERE
句は、referenced_table_name
列が指定されたテーブル名に一致する行をフィルター処理します。
使用方法
このクエリを SSMS または T-SQL クエリ エディターで実行できます。
注意
- このクエリは、すべてのデータベースで動作するわけではありません。
- このクエリは、データベースのスキーマが変更された場合は変更する必要があります。
改善点
- クエリをより読みやすくするために、列名をエイリアスに変更できます。
- クエリ結果をさらにフィルタ処理するために、
WHERE
句に追加の条件を追加できます。
特定のテーブルを参照するすべての外部キーを一覧表示する方法
データベーススキーマツールを使用する
Altova DatabaseSpy や SQL Power Architect などのデータベーススキーマツールは、テーブルとそのリレーションシップを視覚的に表示することができます。これらのツールを使用して、特定のテーブルを参照するすべての外部キーを簡単に特定できます。
スクリプトを使用する
ApexSQL や Red Gate などのサードパーティ製ツールは、特定のテーブルを参照するすべての外部キーを一覧表示するスクリプトを提供しています。これらのスクリプトは、SSMS または T-SQL クエリ エディターで実行できます。
オンラインツールを使用する
DB Fiddle や SQLZoo などのオンラインツールは、SQL クエリを実行して結果を表示することができます。これらのツールを使用して、特定のテーブルを参照するすべての外部キーを一覧表示する T-SQL クエリを実行できます。
方法の比較
方法 | 优点 | 缺点 |
---|---|---|
SSMS と T-SQL クエリ | 標準のツール | 複雑な場合がある |
データベーススキーマツール | 視覚的にわかりやすい | ツールが必要 |
スクリプト | 簡単 | スクリプトが必要 |
オンラインツール | 手軽 | インターネット接続が必要 |
sql sql-server t-sql