[DataBase] Join

Bik_Kyun·2022년 3월 22일
0

1. Inner Join

1-1) Cross Join

교차 조인은 두 테이블의 Cartesian Product(카티션 곱)연산을 한 결과이다.
특별한 조건없이 테이블 A의 각 행과 테이블 B의 각 행을 다 조합한 결과이다.

조인 SQL 구문은 두가지 표현법으로 만들 수 있다.

  • 명시적 표현법
SELECT *
FROM employees
	CROSS JOIN dept_emp;
  • 암묵적 표현법
SELECT *
FROM employees, dept_emp;

1-2) Inner Join

가장 많이 사용되는 조인 구문중에 하나.
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

profile
비진

0개의 댓글