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