SQL/JOIN

JOIN(1)

jjhim531 2024. 8. 21. 11:28
반응형

  [ [ JOIN ] ]  

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

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

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

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

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

 

 [ 용어정리 ] 

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

 

 < < 등가조인(EQUAL JOIN) / 내부조인(INNER JOIN) > > 

연결시키는 컬럼의 값이 일치하는 행들만 조회

(일치하는 값이 없는 행은 조회 제외)


* ANSI구문
-- FROM절에 기준이되는 테이블 하나 기술
-- JOIN절에 같이 조인하고자하는 테이블 기술 + 매칭시킬 컬럼에대한 조건
-- JOIN USING / JOIN ON

 

 

 < 연결할 두 컬럼명이 다른 경우 : JOIN ON > 

EX) 전체 사원들의 사번, 사원명, 부서코드, 부서명(EMPLOYEE : DEPT_CODE / DEPARMENT : DEPT_ID)

SELECT
    emp_id,
    emp_name,
    dept_code,
    dept_title
FROM
         employee
    JOIN department ON ( dept_code = dept_id );

 

 

 < 연결할 두 컬럼명이 동일한 경우 : JOIN USING > 

EX) 전체 사원들의 사번, 사원명, 직급코드, 직급명

SELECT
    emp_id,
    emp_name,
    e.job_code,
    job_name
FROM
         employee e 
    JOIN job j ON ( e.job_code = j.job_code );
    --두 쿼리의 코드명이 같이 때문에 JOIN ON을 쓰려면 별칭을 부여해서 구분해준다.
SELECT
    emp_id,
    emp_name,
    job_code,
    job_name
FROM
         employee
    JOIN job USING ( job_code );
    -- USING을 쓴다면 별칭은 필요없다.

 

※ 오라클 전용구문

* FROM절에 조회하고자하는 테이블들 나열(, 로 구분)
* WHERE절에 매칭시킬 컬럼에 대한 조건을 제시

728x90
반응형