SQL FOREIGN KEY: SQL Server での作成方法と例

外部キーとは何ですか?

A 外部キー SQL Server 内で参照整合性を強制する方法を提供します。 簡単に言うと、外部キーは、あるテーブルの値が別のテーブルに必ず存在することを保証します。

FOREIGN KEY の規則

  • SQL 外部キーでは NULL を使用できます。
  • 参照されるテーブルは親テーブルと呼ばれます
  • SQLでは外部キーを持つテーブルを子テーブルと呼びます。
  • 子テーブルの SQL 外部キーは、親テーブルの主キーを参照します。
  • この親子関係は「参照関係」と呼ばれるルールを強制します。 Integrityに設立された地域オフィスに加えて、さらにローカルカスタマーサポートを提供できるようになります。」

以下のSQLの外部キーの例は、図とともに、FOREIGN KEYに関する上記のすべてのポイントをまとめたものです。

SQL における FOREIGN KEY のルール
外部キーの仕組み

SQLでFOREIGN KEYを作成する方法

を作成できます 外部キー SQLサーバーで 2通りの方法:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

親テーブル: たとえば、「Course」として既存の親テーブルがあるとします。 Course_ID と Course_name は、Course_Id を主キーとする XNUMX つの列です。

SQLでFOREIGN KEYを作成する

子テーブル: XNUMX 番目のテーブルを子テーブルとして作成する必要があります。 「Course_ID」と「Course_Strength」の XNUMX つの列。 ただし、「Course_ID」は外部キーとなります。

ステップ1) 「テーブル」を右クリック>「新規」>「テーブル…」

SQLでFOREIGN KEYを作成する

ステップ2) XNUMX つの列名を「Course_ID」と「Course_Strength」として入力します。 「Course_Id」列を右クリックします。 次に、「関係」をクリックします。

SQLでFOREIGN KEYを作成する

ステップ3) In '外部キー関係、' クリック '追加'

SQLでFOREIGN KEYを作成する

ステップ4) 「テーブルと列の仕様」で、をクリックします。 「…」アイコン

SQLでFOREIGN KEYを作成する

ステップ5) 「COURSE」として「Primary Key Table」を選択し、ドロップダウンから「Foreign Key Table」として作成中の新しいテーブルを選択します。

SQLでFOREIGN KEYを作成する

ステップ6) 「主キー テーブル」 – 「主キー テーブル」列として「Course_Id」列を選択します。

「外部キー テーブル」 - 「外部キー テーブル」列として「Course_Id」列を選択します。 「OK」をクリックします。

SQLでFOREIGN KEYを作成する

ステップ7) ソフトウェアの制限をクリック Add(追加する)

SQLでFOREIGN KEYを作成する

ステップ8) テーブル名に「Course_Strength」を指定し、クリックします。 [OK]

SQLでFOREIGN KEYを作成する

結果: の間に親子関係を設定しました。 'コース'「コース_強度」。

SQLでFOREIGN KEYを作成する

T-SQL: T-SQL を使用して親子テーブルを作成する

親テーブル: もう一度考えてみましょう。「Course」というテーブル名を持つ既存の親テーブルがあります。

Course_ID と Course_name は、Course_Id を主キーとする XNUMX つの列です。

T-SQL を使用して親子テーブルを作成する

子テーブル: XNUMX 番目のテーブルを子テーブルとして「Course_Strength_TSQL」という名前で作成する必要があります。

子テーブル Course_Strength_TSQL の XNUMX つの列としての「Course_ID」と「Course_Strength」。 ただし、「Course_ID」は外部キーとなります。

以下は、FOREIGN KEY を使用してテーブルを作成する構文です。

構文:

CREATE TABLE childTable
(
  column_1 datatype [ NULL |NOT NULL ],
  column_2 datatype [ NULL |NOT NULL ],
  ...

  CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n)
    [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ]
    [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] 
);

上記のパラメータの説明は次のとおりです。

  • childTable は、作成されるテーブルの名前です。
  • column_1、column_2 - テーブルに追加される列。
  • fkey_name - 作成する外部キー制約の名前。
  • child_column1、child_column2…child_column_n -parentTable の主キーを参照する chidTable 列の名前。
  • parentTable - 子テーブルでキーが参照される親テーブルの名前。
  • parent_column1、parent_column2、…parent_column3 - 親テーブルの主キーを構成する列。
  • 削除時。 オプションのパラメータ。 親データの削除後に子データがどうなるかを指定します。 このパラメータの値には、NO ACTION、SET NULL、CASCADE、または SET DEFAULT などがあります。
  • ON UPDATE - オプションのパラメータ。 親データの更新後に子データに何が起こるかを指定します。 このパラメータの値には、NO ACTION、SET NULL、CASCADE、または SET DEFAULT などがあります。
  • NO ACTION - ON DELETE および ON UPDATE と一緒に使用されます。 これは、親データの更新または削除後に子データには何も起こらないことを意味します。
  • CASCADE - ON DELETE および ON UPDATE と一緒に使用されます。 親データが削除または更新された後に、子データが削除または更新されます。
  • SET NULL - ON DELETE および ON UPDATE と一緒に使用されます。 親データが更新または削除された後、子は null に設定されます。
  • SET DEFAULT - ON DELETE および ON UPDATE と一緒に使用されます。 親データを更新または削除すると、子データはデフォルト値に設定されます。

SQL の外部キーの例を見て、外部キーとして XNUMX つの列を持つテーブルを作成してみましょう。

SQL の外部キーの例

クエリ:

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

ステップ1) 「実行」をクリックしてクエリを実行します。

SQLの外部キー

結果: の間に親子関係を設定しました。 'コース'「コース_強度_TSQL」。

SQLの外部キー

ALTER TABLE の使用

次に、SQL で外部キーを使用する方法と、ALTER TABLE ステートメントを使用して SQL サーバーに外部キーを追加する方法を学びます。以下の構文を使用します。

ALTER TABLE childTable
ADD CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);

上記で使用したパラメータの説明は次のとおりです。

  • childTable は、作成されるテーブルの名前です。
  • column_1、column_2 - テーブルに追加される列。
  • fkey_name - 作成する外部キー制約の名前。
  • child_column1、child_column2…child_column_n -parentTable の主キーを参照する chidTable 列の名前。
  • parentTable - 子テーブルでキーが参照される親テーブルの名前。
  • parent_column1、parent_column2、…parent_column3 - 親テーブルの主キーを構成する列。

テーブルを変更して外部キーを追加する例:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

fkey_student_admission という名前の外部キーを部門テーブルに作成しました。 この外部キーは、students テーブルの入学列を参照します。

クエリの例 FOREIGN KEY

まず、親テーブルのデータ、COURSE を見てみましょう。

クエリ:

SELECT * from COURSE;

クエリの例 FOREIGN KEY

次に、子テーブルに行を挿入しましょう。 「コース_強度_TSQL」。

XNUMX 種類の行を挿入してみます

  1. 最初のタイプでは、子テーブルの Course_Id が親テーブルの Course_Id に存在します。 つまり、Course_Id = 1 および 2
  2. 5 番目のタイプは、子テーブルの Course_Id が親テーブルの Course_Id に存在しません。 つまり、Course_Id = XNUMX

クエリ:

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

クエリの例 FOREIGN KEY

結果: 一緒にクエリを実行して、親テーブルと子テーブルを確認しましょう。

Course_strength テーブルには、Course_ID 1 と 2 の行が存在します。 一方、Course_ID 5 は例外です。

クエリの例 FOREIGN KEY

製品概要

  • 外部キーのすべての値は、次の一部である必要があります。 主キー 他のテーブルの。
  • 当学校区の MySQL 外部キーは、同じテーブル内の別の列を参照できます。この参照は自己参照として知られています。
  • SQL 外部キー制約 : テーブル間のリンクと、外部キー列に挿入される無効なデータを保護するために使用されます。
  • 外部キーは、Create Table、Alter Table、または SQL Server Management Studio.
  • 主キーと外部キーの違いは次のとおりです。 ここをクリック