MySQL データベースでは、外部キーは、1 つのテーブル内の 1 つ以上のカラムが別のテーブルのカラムを参照して、マスター テーブルとスレーブ テーブルの間の関係を形成できることを意味します。外部キーは、データの整合性と一貫性を確保するための重要な手段の 1 つです。しかし、実際の開発では、外部キーに関連付けられたデータをクエリする必要があることが多く、外部キーを含むクエリ操作ではいくつかの問題に注意する必要があります。
この記事では、MySQL クエリの外部キーに関する関連知識を詳しく紹介します。
1. 外部キーの概要
外部キーまたは関連キーとも呼ばれる外部キーは、データの整合性と一貫性を維持するために MySQL データベースで使用される制約です。あるテーブルの列を別のテーブルの列に関連付けます。
テーブルに別のテーブルとの外部キー関係がある場合、それらはマスター テーブルとスレーブ テーブルの間の関係を形成します。マスターテーブルの列は主キーと呼ばれ、スレーブテーブルの列は外部キーと呼ばれます。
外部キー制約は 2 つのカテゴリに分類できます:
1. カスケード更新 (CASCADE UPDATE): プライマリ テーブルのプライマリ キーが更新されると、セカンダリ テーブルの外部キーはそれに応じて更新されます。
2. カスケード削除 (CASCADE DELETE): 主テーブルの主キーが削除されると、それに応じて副テーブルの外部キーも削除されます。
2. 外部キー クエリ
1. 単一の外部キーをクエリする
テーブルの列内の外部キーに関連付けられたデータをクエリする必要がある場合、 INNER JOIN を使用すると、関連するクエリが実行されます。具体的な操作は次のとおりです。
SELECT 表1.列1, 表2.列2 FROM 表1 INNER JOIN 表2 ON 表1.外键列 = 表2.主键列
このうち、テーブル 1 とテーブル 2 は関連付ける必要があるテーブル、列 1 はテーブル 1 のクエリ対象の列、列 2 は関連付けられる列です。テーブル 2 でクエリが実行され、外部キー列はテーブル 2 に関連付けられているテーブル 1 の列であり、主キー列はテーブル 2 の主キー列です。
例:
2 つのテーブルがあり、1 つは学生テーブル、もう 1 つは成績テーブルです。学生テーブルには学生番号フィールドがあり、成績テーブルには学生テーブルの学生番号フィールドに関連する外部キー フィールドがあります。成績テーブル内の学生の名前、科目、成績をクエリする必要があります。具体的な操作は次のとおりです:
SELECT s.name, c.subject, c.score FROM student s INNER JOIN score c ON s.sid = c.sid
2. 複数の外部キーをクエリする
複数の外部キーをクエリする必要がある場合テーブル内のキーの関係 データを収集するとき、複数の INNER JOIN を使用して関連するクエリを実行できます。具体的な操作は次のとおりです。
SELECT 表1.列1, 表2.列2, 表3.列3, … FROM 表1 INNER JOIN 表2 ON 表1.外键列1 = 表2.主键列1 INNER JOIN 表3 ON 表2.外键列2 = 表3.主键列2 …
このうち、テーブル 1、テーブル 2、テーブル 3 が関連付けが必要なテーブル、列 1 がテーブル 1 のクエリ対象の列、列 2 です。は、表 2 でクエリされる列です。列 3 は、テーブル 3 でクエリされる列です。外部キー列 1 は、テーブル 2 に関連付けられているテーブル 1 の列です。外部キー列 2 は、テーブル 2 に関連付けられているテーブル 2 の列です。はテーブル 3 に関連付けられており、主キー列 1 はテーブル 2 の列です。 の主キー列、主キー列 2 はテーブル 3 の主キー列です。
例:
テーブルが 3 つあり、1 つは学生テーブル、1 つは科目テーブル、1 つは成績テーブルです。学生テーブルと科目テーブルにはそれぞれ id フィールドがあります。成績テーブルには、学生テーブルと科目テーブルの id フィールドに関連する 2 つの外部キー フィールド、学生 ID と科目 ID があります。次に、成績テーブル内の生徒の名前、科目、および成績をクエリする必要があります。具体的な操作は次のとおりです:
SELECT s.name, se.subject, c.score FROM student s INNER JOIN score c ON s.sid = c.sid INNER JOIN subject se ON c.subject_id = se.id
3. 外部キーをクエリする際の注意事項
外部キーを使用してクエリを実行する場合クエリを実行する場合は、次のいくつかの側面に注意する必要があります:
1. 関連テーブルがすでに存在していることを確認してください。
外部キー関係を確立する前に、両方のテーブルがすでに存在していることを確認する必要があります。そうしないと、外部キー関係の作成時にエラーが発生します。
2. 外部キー列と主キー列のデータ型と長さが一致していることを確認してください。
外部キーの関連付けを確立するときは、関連付けられた外部キー列と主キー列のデータ型と長さが一致していることを確認する必要があります。一貫性がない場合、エラーが発生します。同時に、クエリを作成するときも注意する必要があります。そうしないと、クエリ結果に問題が発生する可能性があります。
3. 外部キー列では NULL 値を避けてください。
外部キー クエリを実行するときは、外部キー列に NULL 値を含めないでください。 NULL 値が存在すると、一貫性のないクエリ結果が発生します。
4. 大規模なデータ結合を避けてください。
複数テーブルのクエリを実行する場合は、大量のデータ結合を避けるように注意してください。そうしないと、クエリのパフォーマンスが重大な影響を受けます。
5. 外部キー関係のカスケード操作に注意してください。
外部キー関係を使用してクエリを実行する場合は、削除操作または更新操作が関連テーブルに悪影響を及ぼさないように、外部キー制約のカスケード操作に注意する必要があります。
4. まとめ
この記事の導入により、MySQL 外部キー クエリの基本的な概念と操作方法、そして解決すべき課題については理解できたと思います。外部キークエリを実行するときの注意。実際の開発では、特定のビジネス ニーズとデータベース テーブル構造の設計に基づいて、データ クエリに外部キー関係を合理的に適用する必要があります。これにより、クエリの効率が向上するだけでなく、データの整合性と一貫性も確保できます。
以上がmysqlクエリの外部キーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。