mysqlクエリの外部キー

WBOY
リリース: 2023-05-23 11:32:37
オリジナル
3088 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート