- 01 STANDARD JOIN
- 02 서브쿼리
- 03 뷰(View)
01 STANDARD JOIN

1. INNER JOIN
- JOIN 조건에 충족하는 데이터만 출력되는 방식
- JOIN 조건을 ON 절을 사용하여 작성해야 한다.
2. OUTER JOIN
- JOIN 조건에 충족하는 데이터가 아니어도 출력될 수 있는 방식

1) LEFT OUTER JOIN
- SQL에서 왼쪽에 표기된 테이블의 데이터는 무조건 출력되는 JOIN

2) RIGHT OUTER JOIN
- SQL에서 오른쪽에 표기된 테이블의 데이터는 무조건 출력되는 방식

3) FULL OUTER JOIN
- 왼쪽, 오른쪽 테이블의 데이터가 모두 출력되는 방식
- LEFT OUTER JOIN과 RIGHT OUTER JOIN의 합집합. 단, 중복값은 제거
3. NATURAL JOIN
- A 테이블과 B 테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN 이 되는 방식
- SQL Server(MSSQL)에서는 지원하지 않는다.

4. CROSS JOIN
- A 테이 블과 B 테이블 사이에 JOIN 조건이 없는 경우, 조합할 수 있는 모든 경우를 출력하는 방식
= Cartesian Product
CHAPTER 2. SQL 활용
02 서브쿼리(Subquery)

서브쿼리란?
- 하나의 쿼리 안에 존재하는 또 다른 쿼리
- 바깥에 있는 엄마쿼리 = 메인쿼리
- 안에 있는 아기쿼리 = 서브쿼리

1. 스칼라 서브쿼리(Scalar Subquery)
- 주로 SELECT 절에 위치
- 컬럼이 올 수 있는 대부분 위치에 사용 가능
- 컬럼 대신 사용되 므로 반드시 하나의 값만을 반환해야 하며 그렇지 않은 경우 에러를 발생
2. 인라인 뷰(Inline View)
- FROM 절 등 테이블명이 올 수 있는 위치에 사용 가능
3. 중첩 서브쿼리(Nested Subquery)
- WHERE 절과 HAVING 절에 사용
메인쿼리와의 관계에 따라 구분
1) 비연관 서브쿼리
2) 연관 서브쿼리
1) 비연관 서브쿼리 (Un-Correlated Subquery)
- 서브쿼리 내에 메인쿼리의 컬럼이 존재하지 않 는다.
2) 연관 서브쿼리 (Correlated Subquery)
- 서브쿼리 내에 메인쿼리의 컬럼이 존재한다
반환하는 데이터 형태에 따라 구분
1) 단일 행 서브쿼리
2) 다중 행 서브쿼리
3) 다중 컬럼 서브쿼리
1) 단일 행 서브쿼리 (Single Row Subquery)
- 서브쿼리가 1 건 이하의 데이터를 반환
- 단일 행 비교 연산자와 함께 사용
e.g. =, <, >, <=, >=, <>
2) 다중 행 서브쿼리 (Multi Row Subquery)
- 서브쿼리가 여러 건의 데이터를 반환
- 다중 행 비교 연산자와 함께 사용
e.g. IN. ALL, ANY, SOME, EXISTS
3) 다중 컬럼 서브쿼리 (Multi Column Subquery)
- 서브쿼리의 결과로 여러 개의 컬럼이 반환
- 메인쿼리의 조건과 동시에 비교
03 뷰(View)
뷰(view)란?
- 특정 SELECT 문에 이름을 붙여서 재사용이 가능하도록 저장해놓은 오브젝트
※주의 : 뷰는 가상 테이블이다. 따라서 실제 데이터를 저장하지는 않고 해당 데이터를 조회해오는 SELECT 문만 가지고 있다.