Published 2022. 11. 17. 18:30

<JOIN>

하나 이상의 테이블에서 데이터를 조회하기 위해 사용되고 수행결과는 하나의 Result Set으로 나옴 

관계형 데이터베이스는 최소한의 데이터로 각각의 테이블에 담고 있음( 중복을 최소화 하기 위해 최대한 쪼개서 관리함)  
 => 관계형 데이터베이스에서 SQL문을 이용한 테이블간 "관계"를 맺는 방법 

<JOIN 용어 정리>

오라클 전용 구문  ANSI구문 
등가조인 
(EQUAL JOIN)
내부조인(INNER JOIN) => JOIN USING/ ON
자연조인(NATURAL JOIN) => JOIN USING
포괄조인
(LEFT OUTER)
(RIGHT OUTER)
왼쪽 외부조인(LEFT OUTER JOIN)
오른쪽 외부조인(RIGHT OUTER JOIN)
전체 외부조인(FULL OUTER JOIN)

자체조인(SELF JOIN)
비등가조인(JOIN EQUAL JOIN)
JOIN ON 
카테시안 곱(CARTESIAN PRODUCT) 교차조인(CROSS JOIN)

 

1.  등가 조인 (EQUAL JOIN) / 내부조인 (INNER JOIN)

>> 오라클 전용 구문 (등가조인)

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

1) 연결할 두 컬럼명이 다른경우 

SELECT EMP_ID,EMP_NAME,DEPT_CODE, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE = DEPT_ID;

>>일치하는 값이 없는 행은 조회에서 제외됨 
-- DEPT_CODE NULL인 사원은 조회안됨, 부서들 중 부서코드가 D3,D4,D7 조회안됨

2) 연결할 두컬럼명이 같을 경우

-- 테이블에 별칭 부여해서 이용하는 방법 
SELECT EMP_ID, EMP_NAME,E.JOB_CODE,JOB_NAME
FROM EMPLOYEE E, JOB J
WHERE E.JOB_CODE= J.JOB_CODE;

 

>> ANSI구문 (내부조인)

- FROM절에 기준이 되는 테이블을 하나만 기술한 후 JOIN절에 같이 조회하고자하는테이블을 기술하고
   매칭시킬 컬럼에 대한 조건 기술
--JOIN ON, JOIN USING(두컬럼명이 같을 경우) 

 1) 연결할 두 컬럼명이 다른 경우
- JOIN ON 으로만 가능 !!

SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE
FROM EMPLOYEE
/*INNER*/ JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);



2) 연결할 두 컬럼명이 같은경우

-방법 1) 테이블명 또는 별칭을 이용해서 하는 방법

SELECT EMP_ID, EMP_NAME,E.JOB_CODE, JOB_NAME
FROM EMPLOYEE E
JOIN JOB J ON (E.JOB_CODE = J.JOB_CODE);


-방법2) JOIN USING구문 사용하는 방법 (두 컬럼명이 일치할때만 사용가능)

SELECT EMP_ID, EMP_NAME,JOB_CODE, JOB_NAME
FROM EMPLOYEE 
JOIN JOB USING (JOB_CODE); --  ambiguously발생 x

 

* 자연조인(NATURAL JOIN) : 각 테이블마다 동일한 컬럼이 딱 한개만 존재하고 이를 매칭시켜서 조회하고자 할 때

SELECT EMP_ID, EMP_NAME,JOB_CODE, JOB_NAME
FROM EMPLOYEE 
NATURAL JOIN JOB;

 

복사했습니다!