[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条件を定義することはできません
  • SQL Serverでサポートされていない機能
  • プレフィックスX
  • ALIASまたはテーブル名
    使用する同名コラム
  • 接続条件の制御が困難な欠点
  • ④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)従業員を担当する上司を検索...