[DQL]結合
サイン
趙仁とは何ですか.これは、2つ以上のテーブルを接続してデータを取得する方法です.
🧐 サインには2つの方法があります.
-- 1번 WHERE절을 이용하는 JOIN
SELECT *
FROM student st, school sc
WHERE st.stuno = sc.stuno;
-------------------------------
-- 2번 ON절을 이용하는 JOIN
SELECT *
FROM student st JOIN school sc
ON st.stuno = sc.stuno;
WHERE節との結合とANSI方式を用いたJOINとの結合の方法を比較し,学習するピアツーピアジョイン(EQUI JOIN)
列の値が一致する行を接続することによって結果を生成する結合です.最も一般的な=の結合です.
SELECT *
FROM stuedent st JOIN school sc
ON st.stuno = sc.stuno; --공통된 컬럼
非等価結合(NON-EQUI JOIN)
同じカラムではなく、異なる条件で結合します.
SELECT *
FROM stuedent st JOIN school sc
ON st.score BETWEEN sc.lograde AND sc.higrade; --범위안의 값!
① INNER JOIN
同じ名前の2つのコラムで扱うJOIN、INNERキーワードは省略できます.
SELECT *
FROM student st, school sc
WHERE st.stuno = sc.stuno;
-------------------------------
SELECT *
FROM student st JOIN school sc
ON st.stuno = sc.stuno;
② OUTER JOIN
非等価結合の場合、1つのカラムに値がない場合、そのローはクエリされませんが、結合条件を満たさないローはOUTER JOINを使用してクエリされます.NULLがあっても無条件出力!
結合条件を満たす値がない場合は、クエリーする方向に(+)を使用します.
SELECT *
FROM stuedent st, school sc
WHERE stuedent st(+) = school sc;
-------------------------------------------
SELECT *
FROM stuedent st RIGHT OUTER JOIN school sc
ON st.stuno = sc.stuno;
-------------------------------------------
SELECT *
FROM student st1, student st2
WHERE st1.leaderno = st2.stuno(+); --left outer join
LEFTOUTER JOIN:結合実行時に左側の表のデータを読み出し、右側の表からJOINターゲットデータを読み出します.右側に同じ値がない場合はNULL
RIGHT OUTER JOIN:連結を行う場合、右側の表のデータを読み出し、左の表からJOINターゲットデータを読み出します.左側に同じ値がない場合はNULL
FULL OUTER JOIN:結合実行時、左、右の表の全てのデータを読み出し、JOIN生成結果(重複データ削除)
③ NATURAL JOIN
等価結合と似ていますが、USING条件節、ON条件節、WHERE節でJOIN条件を定義することはできません
使用する同名コラム
④USING条件節
FROM節を使用したUSING条件節は、同名のコラムの中で、希望するコラムにのみ選択的にEQUIJOIN
同名のコラム
ALIASやテーブル名などの接頭辞X
SELECT st.stuno, st.stuname, sc.majorname
FROM student st INNER JOIN school sc
ON st.stuno = sc.stuno;
------------------------------------
SELECT st.stuno, st.stuname, sc.majorname
FROM student st INNER JOIN school sc
USING (majorname); --sc.majorname 에러!
⑤ON条件節
JOINの叙述部分と非JOINの叙述部分を分けて分かりやすく、コラム名が異なっていてもJOIN条件を使うメリットがあります
任意のJOIN条件を指定し、異なる名前のコラム名をJOIN条件として使用するか、JOINコラムを指定する
ALIASやテーブル名などの接頭辞を使用して、SELECT用のコラムを論理的に明確に指定する必要があります.
⑥ CROSS JOIN
WHERE節にJOIN条件を追加することは可能ですが、この場合、CROSS JOINではなくINNERJOINのような結果になりますので、CROSS JOINの使用は推奨されません
同じテーブルのデータを区切り値に基づいてカウントする
各カラムの結果は、
数学と英語の国語
学生
↓デカルト乗
学生科目
⑦ SELF JOIN
自分のテーブルと等価結合が発生する
aliasを使用して2つのテーブルを結合する
ex)従業員を担当する上司を検索...
Reference
この問題について([DQL]結合), 我々は、より多くの情報をここで見つけました https://velog.io/@kyy806/sql-조인テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol