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
반응형