ホームページ > データベース > mysql チュートリアル > 複数テーブルの結合クエリで使用されるステートメントは何ですか?

複数テーブルの結合クエリで使用されるステートメントは何ですか?

醉折花枝作酒筹
リリース: 2023-01-06 11:18:16
オリジナル
6617 人が閲覧しました

mysql では、「内部結合」ステートメントを使用して、複数テーブルの内部結合クエリを実行できます。使用する必要があるのは、テーブル 1 の「select * from table inner join table. field = table 2」だけです。 . フィールド;" ステートメント。 2 つのテーブルのレコードを結合し、一致する関連フィールドを持つレコードを返します。

複数テーブルの結合クエリで使用されるステートメントは何ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

内部結合

結合または内部結合

SQL ステートメント: Student.Num=score.Stu_id の学生内部結合スコアから * を選択;

Thisこのステートメントは次と同等です: select * from Student,score where Student.ID=course.ID;

#拡張情報:

外部接続

# 1. 左結合左結合または左外部結合

SQL ステートメント: Student.Num=score.Stu_id;

2 の学生左結合スコアから * を選択します。右結合右結合または右外部join

SQL ステートメント: Student.Num=score.Stu_id の学生右結合スコアから * を選択;

3. 完全な外部結合完全結合または完全外部結合

SQLステートメント: select * from Student full join saw onstudent.Num=score.Stu_id;

上記の 3 つの方法により、異なるテーブルを 1 つの大きなテーブルに結合でき、後続のクエリを実行できます。操作はより簡単です。

select * from Student,score; の場合は、結果が非​​常に煩雑になるため、このステートメントは使用しないでください。

クロス結合

クロス結合。クエリ条件を指定する句のないクロス結合で、2 つのテーブルのデカルト積が生成されます。

SQL ステートメント: 学生の相互結合スコアから * を選択;

異なる構造のテーブル接続

2 つのテーブルに多対多の関係がある場合、次のことを確立する必要があります。中間テーブル Student_score の場合、中間テーブルには少なくとも 2 つのテーブルの主キーが必要です。

SQL ステートメント: select s.Name,C.Cname from students_score as sc left join students as s on s.Sno=sc.Sno left join saw as c on c.Cno=sc.Cno

select C_name,grade from student left join score on student.Num=score.Stu_id where name='李五一';
ログイン後にコピー

赤い部分は中間テーブルで、2 つのテーブルの内容をすべて集めた一般的なテーブルです。

UNION 演算子は、2 つ以上の選択ステートメントの結果セットを結合するために使用されます。

UNION 内の SELECT ステートメントには同じ数の列が必要であり、各列のデータ型も同様である必要があり、各 SELECT ステートメント内の列の順序も同じである必要があります。

select Num from student union select Stu_id from score;
ログイン後にコピー

union 演算子はデフォルトで重複をチェックします。重複値が許可される場合は、union all を使用できます。同じ構造を持つ 2 つのテーブルの場合、union を使用してそれらを 1 つのテーブルにマージすることもできます。

select * from student1 union select *from student2;
ログイン後にコピー

Subquery

クエリに必要な条件が別の選択ステートメントの結果である場合があります。つまり、サブクエリは利用される。

1. IN キーワードを使用したサブクエリ

SQL ステートメント: select * from students where Num IN(stu_id をスコアから選択);

2. EXISTS キーワードを使用した内部クエリサブクエリ

exists は true 値を返します。true が返された場合、外側のクエリはクエリを実行します。それ以外の場合、外側のクエリはクエリを実行しません。

SQL ステートメント: select * from students where names(select * from core where C_name='computer');

3. 任意のキーワードを使用したサブクエリ

次の限り使用しますANY キーワードの 1 つが満たされると、この条件を通じて外側のクエリが実行されます。

SQL ステートメント: select sname,(date_format(from_days(now())-to_days(birthday)),'%Y') 0) as 'age' from students where 誕生日>ANY(学生から誕生日を選択where bumen='Computer ScienceDepartment');

4. ALL キーワードを使用したサブクエリ

ALL キーワードを使用するには、外側のクエリ Query# を実行する前に、すべての内側のクエリ ステートメントによって返されるすべての結果を満たす必要があります。

##SQL ステートメント: select sname,(date_format(from_days(now())-to_days(birthday)),'%Y') 0) as 'age' from students where 誕生日>ALL(select 誕生日 from students where bumen='コンピュータ サイエンス部門');

関連学習の推奨事項:

mysql チュートリアル

(ビデオ)

以上が複数テーブルの結合クエリで使用されるステートメントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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