この記事では、SQL データベースのテーブルの列に外部キーを追加する方法を学びます。
の 外部キー SQL では、データベース内の 2 つのテーブルのレコードを結合するために使用されます。あるテーブルで FOREIGN KEY として定義された列は、同じデータベース内の別のテーブルでは PRIMARY KEY である必要があります。
次の 2 つの方法で、列に外部キーを簡単に追加できます。
- Create table ステートメントを使用して外部キーを追加する
- Alter Table ステートメントを使用して外部キーを追加する
SQL テーブルの列に FOREIGN KEY を追加する場合は、以下の手順を指定された順序で実行する必要があります。
- システム内にデータベースを作成します。
- 同じデータベース内に 2 つのテーブルを作成します。
- 外部キーを追加する前のテーブル構造を表示します。
- テーブルに外部キーを追加します。
- テーブル構造を表示します。
ここで、例を使用して上記の手順を説明します。
ステップ 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;