데이터베이스/SQL
[SQL] JOIN 기본개념과 EQUI JOIN, Non EQUI JOIN)
_maddy
2024. 5. 15. 02:12
1. EQUI JOIN
Equi join은 두 개의 테이블을 조인할 때, 두 테이블 간의 조인 조건이 등호(=)로 연결되는 조인 유형. 이는 두 테이블 간의 특정 열 값이 서로 일치하는 경우에만 해당된다.
SELECT *
FROM 테이블1
JOIN 테이블2 ON 테이블1.열 = 테이블2.열;
예를 들어, 사원 테이블과 부서 테이블을 Equi join하여 사원 정보와 부서 정보를 함께 조회할 수 있다:
SELECT 사원.이름, 사원.부서ID, 부서.부서명
FROM 사원
JOIN 부서 ON 사원.부서ID = 부서.부서ID;
이 쿼리는 사원 테이블의 부서ID 열과 부서 테이블의 부서ID 열이 일치하는 경우에만 결과를 반환한다.
Equi join은 데이터베이스 쿼리에서 가장 일반적으로 사용되는 조인 유형 중 하나이다. 두 테이블 간의 관계가 명확할 때 유용하게 사용할 수 있다.
2. Non EQUI JOIN
Non Equi Join은 테이블 간 조인 조건이 등호(=)가 아닌 다른 비교 연산자(>, <, >=, <=, !=, BETWEEN 등)를 사용하는 조인 유형. 이는 두 테이블의 열 값이 정확히 일치하지 않더라도 다른 조건으로 연결할 수 있게 해준다.
SELECT *
FROM 테이블1
JOIN 테이블2 ON 테이블1.열 > 테이블2.열;
위 코드는 다음과 같은 과정으로 동작한다.
- 테이블1과 테이블2를 조인합니다.
- 테이블1의 특정 열 값이 테이블2의 동일한 열 값보다 큰 경우에만 결과에 포함됩니다.
- 조인된 결과에는 두 테이블의 모든 열이 포함됩니다.
3. OUTER JOIN

- Outer Join은 두 테이블을 조인할 때, 한 쪽 테이블에만 데이터가 있어도 결과를 출력하는 조인 방식.
- 즉, 조인 조건에 맞지 않는 행도 결과에 포함되어 출력.
Outer Join의 종류 Outer Join에는 총 3가지 종류가 있다:
- Left Outer Join
- 왼쪽 테이블의 모든 행을 포함하고, 오른쪽 테이블의 매칭되는 행을 가져온다.
- 오른쪽 테이블에 매칭되는 행이 없으면 NULL 값이 출력된다.
- Right Outer Join
- 오른쪽 테이블의 모든 행을 포함하고, 왼쪽 테이블의 매칭되는 행을 가져온다.
- 왼쪽 테이블에 매칭되는 행이 없으면 NULL 값이 출력된다.
- Full Outer Join
- 양쪽 테이블의 모든 행을 포함한다.
- 어느 한 쪽 테이블에만 데이터가 있는 경우 NULL 값이 출력된다.
오라클에서는 모든 행이 출력되는 테이블의 반대편 테이블의 옆에 (+) 기호를 붙여 코드를 작성해주면 된다.
<LEFT OUTER JOIN - ORACLE>
SELECT d.deptno, d.dname, e.empno, e.ename
FROM dept d, emp e
WHERE d.deptno = e.deptno(+);
위 코드는 LEFT outer join의 예시 코드이다.
- 부서 테이블(DEPT)의 모든 행을 포함하고, 사원 테이블(EMP)의 매칭되는 행을 가져온다.
- 사원 테이블에 매칭되는 행이 없으면 NULL 값이 출력된다.