(1) JOIN 이란?
- 일상생활에서 '조인'이라는 단어는 각기 다른 두 개의 집단이 합해질 때 주로 쓰인다.
- 각기 다른 테이블을 한 번에 보여줄 때 쓰이는 쿼리이다.
(2) EQUI JOIN
- EQUI JOIN은 Equal(=) 조건으로 JOIN하는 것으로 가장 흔히 볼 수 있는 JOIN의 방식이라고 할 수 있다.
(3) Non EQUI JOIN
- Non EQUI JOIN은 Equal(=) 조건이 아닌 다른 조건 (BEWEEN, >, >=, <, <=)으로 JOIN하는 방식이다.
(4) 3개 이상 TABLE JOIN
- JOIN 쿼리를 좀 더 확장해서 3개 이상의 테이블을 JOIN할 수도 있다.
(5) OUTER JOIN
- OUTER JOIN은 앞서 본 JOIN과는 다르게 JOIN 조건에 만족하지 않는 행들도 출력되는 형태이다.
- LEFT OUTER JOIN의 경우 LEFT TABLE과 RIGHT TABLE의 데이터 중 JOIN에 성공한 데이터와 JOIN에 성공하지
못한 나머지 LEFT TABLE의 데이터가 함께 출력된다.
- Oracle에서는 모든 행이 출력되기 테이블의 반대편 테이블의 옆에 (+) 기호를 붙여 작성해주면 된다.
[08] STANDARD JOIN
- DBMS에도 벤더가 여러 개 존재한다. RDBMS를 벤더별로 구분해보자하면 Oracle, SQL Server(MSSQL), MariaDB, PostgreSQL 등이 있는데, 벤더마다 SQL 문법에 차이가 너무 클 경우 호환성 이슈가 발생하고 SQL을 사용하는 사람들 입장에서도 효율성이 떨어지기 때문에 표준이 되는 ANSI SQL을 지정하게 되었다. STANDARD JOIN은 ANSI SQL 중 하나로 쉽게 말해 Oracle에서도 돌아가고 MySQL에서도 돌아가는 JOIN 쿼리라고 생각하면 된다.
* STANDARD JOIN보다는 ANSI JOIN, 표준 조인이라는 말이 많이 쓰임
(1) INNER JOIN
- JOIN 조건에 충족하는 데이터만 출력되는 방식이다.
- JOIN 조건을 ON절에 사용하여 작성해야 한다.
(2) OUTER JOIN
- JOIN 조건에 충족하는 데이터가 아니어도 출력될 수 있는 방식이다.
1) LEFT OUTER JOIN
- SQL에서 왼쪽에 표기된 테이블의 데이터는 무조건 출력되는 JOIN 이다.
- 오른쪽 테이블에 JOIN되는 데이터가 없는 ROW들은 오른쪽 테이블 컬럼의 값이 NULL로 출력된다.
2) RIGHT OUTER JOIN
- SQL에서 오른쪽에 표기된 테이블의 데이터는 무조건 출력되는 방식이다.
- 왼쪽 테이블에 JOIN되는 데이터가 없는 Row들은 왼쪽 테이블 컬럼의 값이 NULL로 출력된다.
3) FULL OUTER JOIN
- 왼쪽, 오른쪽 테이블의 데이터가 모두 출력되는 방식이다.
LEFT OUTER JOIN과 RIGHT OUTER JOIN의 합집합이라고 이해하면 쉽다. (중복값은 제거)
(3) NATURAL JOIN
- A테이블과 B테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN이 되는 방식이다.
- Oracle에서는 USING 조건절을 이용하여 같은 이름을 가진 컬럼 중 원하는 컬럼만 JOIN에 이용할 수 있다.
- SELECT 절에서 USING 절로 정의된 컬럼 앞에는 별도의 ALIAS나 테이블명을 붙이지 않아야 한다.
(4) CROSS JOIN
- CROSS JOIN은 A테이블과 B 테이블 사이에 JOIN 조건이 없는 경우, 조합할 수 있는 모든 경우를 출력하는 방식이다.
다른말ㄹ고 Cartesian Product라고 표현하기도 한다.
'자격증 > SQLD' 카테고리의 다른 글
SQL 기본 및 활용 - SQL활용 - 뷰(View) / 집합 연산자 (0) | 2024.03.03 |
---|---|
SQL 기본 및 활용 - SQL활용 - 서브쿼리 (Subquery) (0) | 2024.03.02 |
SQL 기본 및 활용 - SQL기본 - GROUP BY, HAVING 절 / ORDER BY 절 (2) | 2024.02.29 |
SQL 기본 및 활용 - SQL기본 - WHERE절 (0) | 2024.02.29 |
[SQLD] 2024 SQLD 일정 공유 및 준비 (변경사항) (0) | 2024.02.28 |