SQL/JOIN

JOIN(3)

jjhim531 2024. 8. 23. 12:40
반응형

  [ [ JOIN ] ]  

두개 이상의 테이블에서 데이터를 조회하고자 할 때 사용되는 구문

조회 결과는 하나의 결과(RESULT SET)를 반환한다.

관계형 데이터베이스에서는 최소한의 데이터를 각각의 테이블에 담고 있음

(무작정 다 조회해 오는게 아니라 각 테이블간 연결고리(외래키)를 통해 데이터를 매칭시켜 조회해야한다)

JOIN은 크게 "오라클 전용구문"    "ANSI 구문"

 

 [ 용어정리 ] 

오라클 전용 구문   ANSI 구문
등가조인
(EQUAL JOIN)
 내부조인
 (INNER JOIN) -> JOIN USING/ON
포괄조인
 LEFT, RIGHT
외부조인
 LEFT, RIGHT, FULL
자체조인
비증가 조인
JOIN ON

 

  < < 등가조인(NON EQUAL JOIN) > >  

 

매칭시킬 컬럼에 대한 조건 작성시 ' = '를 사용하지 않는 조인문

ANSI 구문사용시 JOIN ON만 사용가능

EX) 사원명, 급여, 급여레벨 조회

* ANSI

SELECT
    emp_name,
    salary,
    sal_level
FROM
         employee
    JOIN sal_grade ON ( salary >= min_sal
                        AND salary <= max_sal );

* ORACLE

SELECT
    emp_name,
    salary,
    sal_level
FROM
    employee,
    sal_grade
WHERE
    salary BETWEEN min_sal AND max_sal;

 

 

  < < 자체 조인 > >  

같은 테이블을 다시한번 조인하는 경우

EX) 전체사원의 사원사번, 사원명, 사원부서코드 -->  EMPLOYEE  E
                          사수사번, 사수명, 사수부서코드 -->  EMPLOYEE  M

SELECT
    e.emp_id,
    e.emp_name,
    e.dept_code,
    m.emp_id,
    m.emp_name,
    m.dept_code
FROM
    employee e
    LEFT JOIN employee m ON ( e.manager_id = m.emp_id );

  < < 다중 조인 > >  

2개 이상의 테이블을 가지고 JOIN할 수 있다.

EX) 사번, 사원명, 부서명, 직급명

SELECT
    emp_id,
    emp_name,
    dept_title,
    job_name
FROM
         employee
    JOIN department ON ( dept_code = dept_id )
    JOIN job USING ( job_code );
728x90
반응형