| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 프로그래머스
- join
- transformer
- 연구
- ChatGPT
- 분산
- 그래프
- leetcode
- deepseek
- ABAE
- gpt1
- paper review
- SQL
- 논문리뷰
- 알고리즘
- 자연어처리
- Aspect
- dfs
- Bert
- 파이썬
- GPT
- SQL 첫걸음
- 코딩테스트
- LLM
- 백준
- NLP
- MySQL
- outer join
- 머신러닝
- 가상환경
- Today
- Total
huginn muninn
[SQL] Standard Join - Inner Join, Outer Join, Natural Join, Cross Join, 본문
[SQL] Standard Join - Inner Join, Outer Join, Natural Join, Cross Join,
_maddy 2024. 5. 15. 02:571. Standard Join
DBMS에는 여러 벤더가 존재한다. RDBMS를 벤더별로 구분해보면 Oracle, SQL, Server(MSSQL), MariaDB, PostgreSQL 등이 있는데 벤더마다 SQL 문법에 차이가 너무 클 경우 호환성 이슈가 발생하고 SQL을 사용하는 사람들 입장에서도 효율성이 떨어지기 때문에 표준이 되는 ANSI SQL을 지정하게 되었다.
Standard Joindms ANSI SQL 중 하나로 쉽게 말해 Oracle에서도 돌아가고 MySQL에서도 돌아가는 JOIN 쿼리라고 생각하면 된다. (Standard join 보다는 ANSI JOIN, 표준 조인이라는 말이 많이 쓰임)
(1) INNER JOIN
Join 조건에 충족하는 데이터만 출력되는 방식. 앞서 본 equi join과 다른 점은 join 조건을 on 절을 사용해 작성해야한다는 점이다.

SELECT
emp.employee_id,
emp.first_name,
emp.last_name,
dept.department_name
FROM
employees emp
INNER JOIN
departments dept
ON
emp.department_id = dept.department_id;
이 쿼리는 다음과 같은 과정으로 동작한다:
- employees 테이블과 departments 테이블을 INNER JOIN 합니다.
- JOIN 조건은 emp.department_id = dept.department_id입니다.
- 두 테이블에서 공통된 department_id 값을 가진 행들만 선택하여 결과 집합을 생성합니다.
- 결과 집합에는 employee_id, first_name, last_name, department_name 컬럼이 포함됩니다.
(2) OUTER JOIN



Outer Join에는 총 3가지 종류가 있다:
- Left Outer Join
- 왼쪽 테이블의 모든 행을 포함하고, 오른쪽 테이블의 매칭되는 행을 가져온다.
- 오른쪽 테이블에 매칭되는 행이 없으면 NULL 값이 출력된다.
- Right Outer Join
- 오른쪽 테이블의 모든 행을 포함하고, 왼쪽 테이블의 매칭되는 행을 가져온다.
- 왼쪽 테이블에 매칭되는 행이 없으면 NULL 값이 출력된다.
- Full Outer Join
- 양쪽 테이블의 모든 행을 포함한다.
- 어느 한 쪽 테이블에만 데이터가 있는 경우 NULL 값이 출력된다.
- left outer join과 right outer join의 합집합, (중복값은 제거)
(3) Natural Join
Natural Join은 두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 자동으로 등가 조인(EQUI JOIN)을 수행하는 방식입니다. 즉, 두 테이블에 공통된 컬럼이 있다면 해당 컬럼들의 값이 일치하는 행들만 결과 집합에 포함.
잘 안쓰여서 아래 예시로 퉁치겠다.

만약 강해린의 job을 아이돌이 아닌 고양이로 바꾼다면?

강해린은 job 컬럼이 동일하지 않은 데이터를 가지고 있기 때문에 join시 출력되지 않는다.
(4) Cross Join
Cross Join은 두 테이블의 모든 행들의 조합을 생성하는 가장 기본적인 조인 방식. 즉, 첫 번째 테이블의 모든 행과 두 번째 테이블의 모든 행을 조합하여 결과 집합을 만든다. 이를 때로는 Cartesian Product라고도 부름. (카다시안 곱) 그래서 cross join시 행의 개수가 조인하는 테이블의 행의 개수를 곱한 값과 같다.

위의 사진을 보면 쉽게 이해할 수 있다.
'데이터베이스 > SQL' 카테고리의 다른 글
| [SQL] Top-N 쿼리, 셀프 조인, 계층 쿼리, (0) | 2024.05.18 |
|---|---|
| [SQL] 서브쿼리의 개념과 종류 (0) | 2024.05.15 |
| [SQL] JOIN 기본개념과 EQUI JOIN, Non EQUI JOIN) (0) | 2024.05.15 |
| [SQL] 정규화 (Normalization) (0) | 2024.05.02 |
| [SQL] 데이터 분석을 위한 SQL 레시피 - 3장 6강 (0) | 2023.08.01 |