<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;
'ORACLE' 카테고리의 다른 글
ORACLE 04. SELECT_ JOIN _비등가 조인/ 자체조인/카테시안곱 (0) | 2022.11.17 |
---|---|
ORACLE 04. SELECT_ JOIN _외부조인 (0) | 2022.11.17 |
ORACLE 03. SELECT _ 집계함수 , 집합연산자 (0) | 2022.11.17 |
ORACLE 03. SELECT _ HAVING절 (0) | 2022.11.16 |
ORACLE 03. SELECT _ GROUP BY절 (0) | 2022.11.16 |