SQL Serverで特定のテーブルを参照するすべての外部キーを一覧表示する方法

2024-04-02

SQL Serverで特定のテーブルを参照するすべての外部キーを一覧表示する方法

このチュートリアルでは、SQL Server Management Studio (SSMS) と Transact-SQL (T-SQL) クエリを使用して、特定のテーブルを参照するすべての外部キーを一覧表示する方法を説明します。

方法

SSMS を使用

  1. SSMS を開き、データベースに接続します。
  2. オブジェクト エクスプローラーで、テーブル フォルダーを展開します。
  3. 特定のテーブルを右クリックし、プロパティ を選択します。
  4. 関係 ページを選択します。
  5. 参照している グリッドには、選択したテーブルを参照するすべての外部キーが表示されます。

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 テーブルを参照するすべての外部キーを一覧表示するには、次の方法を使用できます。

  1. SSMS を開き、AdventureWorks2019 データベースに接続します。
  2. オブジェクト エクスプローラーで、テーブル フォルダーを展開し、Sales.SalesOrderDetail テーブルを選択します。
  3. 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 DatabaseSpySQL Power Architect などのデータベーススキーマツールは、テーブルとそのリレーションシップを視覚的に表示することができます。これらのツールを使用して、特定のテーブルを参照するすべての外部キーを簡単に特定できます。

スクリプトを使用する

ApexSQLRed Gate などのサードパーティ製ツールは、特定のテーブルを参照するすべての外部キーを一覧表示するスクリプトを提供しています。これらのスクリプトは、SSMS または T-SQL クエリ エディターで実行できます。

オンラインツールを使用する

DB FiddleSQLZoo などのオンラインツールは、SQL クエリを実行して結果を表示することができます。これらのツールを使用して、特定のテーブルを参照するすべての外部キーを一覧表示する T-SQL クエリを実行できます。

方法の比較

方法优点缺点
SSMS と T-SQL クエリ標準のツール複雑な場合がある
データベーススキーマツール視覚的にわかりやすいツールが必要
スクリプト簡単スクリプトが必要
オンラインツール手軽インターネット接続が必要

sql sql-server t-sql


CREATE TABLEステートメントのWITHオプションを使って外部キーを作成する

SQL Serverで外部キーを作成するには、以下の方法があります。T-SQL を使用して外部キーを作成するSQL Server Management Studio (SSMS) を起動し、データベースに接続します。オブジェクト エクスプローラー で、子テーブルを選択します。...


SQL Server LIKE 句のエスケープ処理 - 角かっこを含むパターン検索

SQL Server の LIKE 句は、文字列のパターン検索に使用できます。角かっこ [] は、文字範囲を指定するために使用できますが、LIKE 句自体でも特殊文字として扱われます。そのため、角かっこを検索条件として使用するには、エスケープする必要があります。...


USER-DEFINED DATA TYPEを使って時間(hh:mm)を保存する独自のデータ型を作成する方法

SQL Serverデータベースで時間(hh:mm)を保存する方法はいくつかあります。それぞれの方法には利点と欠点があり、最適な方法は要件によって異なります。主な方法TIMEデータ型: 時間のみを保存する場合は、TIMEデータ型が最適です。これは24時間形式で時間を表し、ストレージスペースも効率的に使用できます。...


SQL初心者でも安心!T-SQLで部分文字列の出現位置を検索する方法

方法 1: REVERSE と CHARINDEX を使用する検索対象文字列を反転させます。反転させた文字列で部分文字列を検索します。検索結果を元の文字列の長さから引きます。部分文字列を検索対象文字列の末尾に繰り返します。検索対象文字列の先頭から部分文字列の長さ * 反復回数分だけ切り取ります。...


SQLでUNIONとORDER BYを使って結果を結合し、希望の順序で表示する方法

SQLで複数のSELECT結果を結合するUNIONは、データ分析やレポート作成でよく使用されます。しかし、UNIONで結合した結果をそのまま表示すると、ソート順序がバラバラになってしまうことがあります。そこで、今回の記事では、UNIONとORDER BYを組み合わせて、結合結果を希望の順序で表示する方法を解説します。...


SQL SQL SQL Amazon で見る



INFORMATION_SCHEMAデータベースを使って外部キーを確認する方法

MySQLでは、INFORMATION_SCHEMAデータベースを使用して、テーブルまたはカラムに関連するすべての外部キーを簡単に確認できます。以下の2つの方法を紹介します。方法1:REFERENTIAL_CONSTRAINTSテーブルを使用する


SQL Server:SELECTを使ってストアドプロシージャの出力結果をカスタマイズ

SQL Server でストアドプロシージャを実行すると、結果セットが返されます。この結果セットは、テーブルと同様に、複数の列と行で構成されています。このチュートリアルでは、T-SQL の SELECT ステートメントを使用して、ストアドプロシージャの結果セットから特定の列を選択する方法を説明します。


SQL Serverデータベースのスキーマ変更前に知っておくべきこと:外部キー依存関係の重要性

SQL Server における外部キーは、リレーショナルデータベースの重要な整合性制約です。外部キーは、あるテーブル (参照テーブル) の列を、別のテーブル (参照されるテーブル) の主キー列にリンクすることで、データの整合性を保ちます。外部キー依存関係とは、あるオブジェクト (参照側オブジェクト) が別のオブジェクト (参照される側オブジェクト) に依存している状態を指します。具体的には、参照側オブジェクトが参照される側オブジェクトのスキーマ変更に影響を受ける場合を指します。


T-SQL と SSMS を使用して SQL Server で外部キーを簡単に見つける

SQL Server Management Studio を使用するオブジェクト エクスプローラーで、外部キーを表示したいデータベースを展開します。テーブルを右クリックし、 [デザイン] を選択します。[テーブル デザイナー] ウィンドウが開きます。


SSMSとT-SQLスクリプトによるSQL Serverテーブルの列削除

SQL Serverで既存のテーブルから列を削除するには、ALTER TABLE ステートメントを使用します。このステートメントは、テーブルの構造を変更するために使用されます。手順SQL Server Management Studio (SSMS) などのツールを使用して、SQL Serverに接続します。