huginn muninn

[SQL] JOIN 기본개념과 EQUI JOIN, Non EQUI JOIN) 본문

데이터베이스/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. 테이블1과 테이블2를 조인합니다.
  2. 테이블1의 특정 열 값이 테이블2의 동일한 열 값보다 큰 경우에만 결과에 포함됩니다.
  3. 조인된 결과에는 두 테이블의 모든 열이 포함됩니다.

 

3. OUTER JOIN

 

  • Outer Join은 두 테이블을 조인할 때, 한 쪽 테이블에만 데이터가 있어도 결과를 출력하는 조인 방식.
  • 즉, 조인 조건에 맞지 않는 행도 결과에 포함되어 출력.

Outer Join의 종류 Outer Join에는 총 3가지 종류가 있다:

  1. Left Outer Join
    • 왼쪽 테이블의 모든 행을 포함하고, 오른쪽 테이블의 매칭되는 행을 가져온다.
    • 오른쪽 테이블에 매칭되는 행이 없으면 NULL 값이 출력된다.
  2. Right Outer Join
    • 오른쪽 테이블의 모든 행을 포함하고, 왼쪽 테이블의 매칭되는 행을 가져온다.
    • 왼쪽 테이블에 매칭되는 행이 없으면 NULL 값이 출력된다.
  3. 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 값이 출력된다.