logo

SQLに外部キーを追加する方法

この記事では、SQL データベースのテーブルの列に外部キーを追加する方法を学びます。

外部キー SQL では、データベース内の 2 つのテーブルのレコードを結合するために使用されます。あるテーブルで FOREIGN KEY として定義された列は、同じデータベース内の別のテーブルでは PRIMARY KEY である必要があります。

次の 2 つの方法で、列に外部キーを簡単に追加できます。

  1. Create table ステートメントを使用して外部キーを追加する
  2. Alter Table ステートメントを使用して外部キーを追加する

SQL テーブルの列に FOREIGN KEY を追加する場合は、以下の手順を指定された順序で実行する必要があります。

  1. システム内にデータベースを作成します。
  2. 同じデータベース内に 2 つのテーブルを作成します。
  3. 外部キーを追加する前のテーブル構造を表示します。
  4. テーブルに外部キーを追加します。
  5. テーブル構造を表示します。

ここで、例を使用して上記の手順を説明します。

ステップ 1: データベースを作成する

構造化照会言語では、データベースの作成が構造化テーブルをデータベースに保存するための最初のステップです。

次の SQL 構文を使用してデータベースを作成します。

 CREATE DATABASE Database_Name; 

を作成するとします。 乗り物 データベース。このためには、構造化照会言語で次のコマンドを入力する必要があります。

 CREATE DATABASE Vehicles; 

ステップ 2: データベースに 2 つのテーブルを作成する

ここで、データベースにテーブルを作成するには、次の SQL 構文を使用する必要があります。

 CREATE TABLE table_name ( column_Name_1 data type (size of the column_1), column_Name_2 data type (size of the column_2), column_Name_3 data type (size of the column_3), ... column_Name_N data type (size of the column_1) ); 

次の SQL クエリは、 車_詳細 のテーブル 乗り物 データベース。

 CREATE TABLE Cars_Details ( Car_Number INT AUTO_INCREMENT PRIMARY KEY, Model INT, Cars_Name VARCHAR (20), Colour VARCHAR (20), ); 

次のクエリは作成します 車_価格_詳細 のテーブル 乗り物 データベース:

 CREATE TABLE Cars_Price_Details ( Model INT NOT NULL PRIMARY KEY, Cars_Price INT NOT NULL ); 

ステップ 3: 外部キーを追加する前のテーブル構造の表示

テーブルの作成とデータの挿入後、SQL アプリケーションに次のクエリを入力すると、両方のテーブルの構造を表示できます。

 DESC Cars or DESCRIBE Cars ; 

分野 タイプ ヌル デフォルト 余分な
車番号 INT いいえ ヌル 自動増加
モデル INT はい - ヌル -
車名 バーチャー(20) はい - ヌル
バーチャー(20) はい - ヌル -

 DESC Cars_Price_Details; 

分野 タイプ ヌル デフォルト 余分な
車のモデル INT いいえ ヌル -
車_価格 INT いいえ - ヌル

ステップ 4: テーブルの列に外部キーを追加する

テーブルの作成時に外部キーを追加する場合は、SQL で次の CREATE TABLE 構文を使用する必要があります。

 CREATE TABLE table_name1 ( Column_Name_1 data type (size of the column_1), Column_Name_2 data type (size of the column_2), ......, Column_Name_N data type (size of the column_N) FOREIGN KEY REFERENCES Table_Name2 (Column_Name) ) ; 

次のクエリは、Cars_Details テーブルの 'Model' 列に FOREIGN KEY を追加します。

 CREATE TABLE Cars_Details ( Car_Number INT AUTO_INCREMENT, Model INT FOREIGN KEY REFERENCES Cars_Price_Details (Car_Model), Cars_Name VARCHAR (20), Color VARCHAR (20) UNIQUE, Price INT NOT NULL ) ; 

SQL 結合のこのクエリ 車_詳細 のテーブル 車_価格_詳細 外部キーを使用してテーブルを作成します。

ステップ 5: 外部キー追加後のテーブル構造を表示する

で実行したクエリの結果を確認するには 4番目ステップ、 SQL で次の DESC コマンドを入力する必要があります。

 DESC Cars_Details; 

分野 タイプ ヌル デフォルト 余分な
車番号 INT はい 主要な ヌル 自動増加
モデル INT いいえ 外国 ヌル -
車名 バーチャー(20) はい - ヌル -
バーチャー(20) はい - ヌル -
価格 INT いいえ - ヌル -
平均 INT いいえ - 0 -

上記の出力に示されているように、Model 列が外部キーとして作成されます。

外部キーを既存のテーブルに追加する

外部キーを既存のテーブルに追加する場合は、SQL で次の ALTER 構文を使用する必要があります。

 ALTER TABLE Table_Name1 ADD CONSTRAINT ForeignKey_Name FOREIGN KEY (Column_Name) REFERENCES Table_Name2 (Column_Name); 

次のクエリは、Cars_Details テーブルがデータベース システムにすでに存在する場合に、Model 列に FOREIGN KEY を追加します。

 ALTER TABLE Cars_Details ADD CONSTRAINT FK_Cars_Details FOREIGN KEY (Model) REFERENCES Cars_Price_Details (Car_Model); 

SQL 結合におけるこの ALTER クエリ 車_詳細 のテーブル 車_価格_詳細 外部キーを使用してテーブルを作成します。

テーブルから外部キーを削除する

テーブルの列から外部キーを削除したい場合は、次のコマンドを使用する必要があります。 変更 SQL の構文:

 ALTER TABLE Table_Name DROP FOREIGN KEY Foreign_Key_Name; 

次のクエリは、作成された FOREIGN KEY を Cars_Details テーブルの Model 列から削除します。

 ALTER TABLE Cars DROP FOREIGN KEY FK_Cars_Details;