[DataBase] Join



1. Inner Join


1-1) Cross Join


クロス結合は2つのテーブルCartesian積演算の結果である.
これは,特に条件がなく,表Aの各行と表Bの各行を組み合わせた結果である.

SQL文を結合するには、2つの表現で作成できます.
  • 明示表現
  • SELECT *
    FROM employees
    	CROSS JOIN dept_emp;
  • 黙示法
  • SELECT *
    FROM employees, dept_emp;

    1-2) Inner Join


    最もよく使われる結合フレーズの1つです.
    2つのテーブルの列を結合して新しいテーブルを生成します.
    Cross Joinを実行した結果,結合条件文を満たすレコードを返すと考えられる.
  • 明示表現
  • SELECT *
    FROM employees
    	INNER JOIN dept_emp
        	ON employees.emp_no = dept_emp.emp_no;
  • 黙示法
  • SELECT *
    FROM employees, dept_emp
    WHERE employees, emp_no = dept_emp.emp_no;

    2. Outer Join


    汎用カラム名に基づいて結果セットを作成する内部結合とは異なります.
    外部結合は、条件文で不満足な行を表す結合です.
    したがって,結合を行う場合,片側のテーブルにデータがなくても結合結果に含める.

    2-1) Left Outer Join


    左外部ジョインは、テーブルAのすべてのデータとテーブルBに一致するレコードとを含むジョインです.
  • 表記
    SELECT *
    FROM table1
    	LEFT OUTER JOIN table2
        	ON table1.n = table2.n;
        

  • 2-2) Right Outer Join


    右外部ジョインは、テーブルBのすべてのデータと、テーブルAに一致するレコードとのジョインです.
  • 表記
    SELECT *
    FROM table1
    	RIGHT OUTER JOIN table2
        	ON table1.n = table2.n;
      

  • 2-3) Full Outer Join


    完全外部結合はMySQLでUNIONを使用して実現できます.
  • 表記法
  • # 방법 1 : Join과 Union
    SELECT *
    FROM table1
    	LEFT OUTER JOIN table2
        	ON table1.n = table2.n
    UNION
    SELECT *
    FROM table1
    	RIGHT OUTER JOIN table2
        	ON table1.n = table2.n;
    # 방법 2 : Union All과 Exclusive Join
    SELECT *
    FROM table1
    	LEFT OUTER JOIN table2
        	ON table1.n = table2.n
    UNION ALL
    SELECT *
    FROM table1
    	RIGHT OUTER JOIN table2
        	ON table1.n = table2.n
    WHERE table1.n IS null;

    3. Self Join


    セルフサインは自分でサインしたサインです.
  • 表記法
  • SELECT A.first_name AS EmployeeName1, B.first_name AS EmployeeName2, A.dept_no
    FROM employees AS A, employees AS B
    WHERE A.emp_no <> B.emp_no
    AND A.dept_no = B.dept_no;

    <コメント>
    https://advenoh.tistory.com/23