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

2024-04-04

SQL Serverで外部キーを作成する方法

SQL Serverで外部キーを作成するには、以下の方法があります。

T-SQL を使用して外部キーを作成する

-- 子テーブルを作成
CREATE TABLE 子テーブル (
  子テーブルID INT PRIMARY KEY,
  親テーブルID INT,
  FOREIGN KEY (親テーブルID) REFERENCES 親テーブル (親テーブルID)
);

-- 親テーブルを作成
CREATE TABLE 親テーブル (
  親テーブルID INT PRIMARY KEY,
  親テーブル名 VARCHAR(50)
);
  1. SQL Server Management Studio (SSMS) を起動し、データベースに接続します。
  2. オブジェクト エクスプローラー で、子テーブルを選択します。
  3. デザイナー タブをクリックします。
  4. 関係 ペインで、新しい関係 を選択します。
  5. 主キーと外部キーの選択 ダイアログボックスで、親テーブル子テーブル を選択します。
  6. 主キー外部キー の列を選択します。
  7. OK をクリックします。

外部キー制約 を作成すると、以下のメリットがあります。

  • データの整合性を保つことができます。
  • 親テーブル子テーブル の列のデータ型が一致する必要があります。
  • 親テーブル の列に NULL 値が許可されていない場合は、子テーブル の列にも NULL 値を許可できません。
  • 親テーブル の列が UNIQUE 制約を持つ場合は、子テーブル の列にも UNIQUE 制約を持つ必要があります。



-- 子テーブルを作成
CREATE TABLE 子テーブル (
  子テーブルID INT PRIMARY KEY,
  親テーブルID INT,
  FOREIGN KEY (親テーブルID) REFERENCES 親テーブル (親テーブルID)
);

-- 親テーブルを作成
CREATE TABLE 親テーブル (
  親テーブルID INT PRIMARY KEY,
  親テーブル名 VARCHAR(50)
);



SQL Serverで外部キーを作成する他の方法

ALTER TABLE ステートメントを使用する

ALTER TABLE 子テーブル
ADD FOREIGN KEY (親テーブルID)
REFERENCES 親テーブル (親テーブルID);

この方法は、既存のテーブルに外部キーを追加する場合に便利です。

CREATE TABLE ステートメントの WITH オプションを使用する

CREATE TABLE 子テーブル (
  子テーブルID INT PRIMARY KEY,
  親テーブルID INT,
  CONSTRAINT FK_子テーブル_親テーブル FOREIGN KEY (親テーブルID) REFERENCES 親テーブル (親テーブルID)
);

GUI ツールを使用する

SQL Server Management Studio (SSMS) 以外にも、さまざまな GUI ツールを使用して外部キーを作成することができます。これらのツールは、初心者にとって使いやすいというメリットがあります。


sql sql-server t-sql


パフォーマンスを向上させる!INSERT INTO ... VALUES (SELECT ... FROM ...) のインデックス活用

INSERT INTO . .. VALUES (SELECT . .. FROM . ..) は、SQL で最も強力なデータ操作ステートメントの一つです。このステートメントは、SELECT ステートメントの結果に基づいて、新しいデータを既存のテーブルに挿入するために使用されます。つまり、別のテーブルや複雑な条件に基づいて、データを選択的に挿入することができます。...


【データベース管理者必見】PostgreSQLで外部キーをサッと一覧表示する方法

このコマンドを実行すると、テーブルに関する詳細情報が表示されます。その中に、外部キーに関する情報も含まれています。Table: 外部キーを持つテーブル名Column: 外部キー列名Foreign Key: 外部キー制約名References: 参照先のテーブル名(括弧内に参照先の列名)...


初心者でも安心!PostgreSQLでTIMESTAMPから日付部分を取り出す4つの方法

PostgreSQLでは、キャスト演算子を使用して、タイムスタンプ型を文字列型に変換し、日付部分のみを抽出することができます。上記のように、CAST関数を使用して、timestamp_columnをdate型に変換することで、日付部分のみを取得できます。...


MySQLで迷ったらコレ!MIN関数・CASE式・GREATEST関数を使いこなして2つの値の最小値/最大値をスマートに取得

MIN() 関数 は、指定した列の中で最小値を返す関数です。 2 つの値の最小値を取得するには、次のように MIN() 関数と比較演算子を使用します。このクエリは、value1 と value2 の小さい方の値を min_value というエイリアスで返します。...


MariaDB: NOT NULL Enum列の値チェックを徹底する!厳格モード、デフォルト値、トリガー/プロシージャ/制約の比較

MariaDBで、NOT NULL制約付きのENUM列に値が指定されていない場合にエラーを発生させる方法について説明します。方法以下の2つの方法があります。厳格モードを使用するMariaDBの厳格モードを使用すると、無効な値が挿入されたり、NOT NULL制約に違反したりすると、エラーが発生します。...