< JOIN >
- 두 개 이상의 테이블에서 데이터를 같이 조회하고자 할 때 사용하는 구문
- 조회 결과는 하나의 결과물(ResultSet)로 나옴
- 여러개의 테이블 간의 관계를 맺어서 조회 가능
- 테이블 간 "연결고리"에 해당하는 컬럼을 매칭시켜 조회함
오라클 전용 구문 | ANSI(미국 국립표준협회) 구문 (오라클 + 다른 DBMS) |
등가조인 (EQUAL JOIN) | 내부조인 (INNER JOIN) |
자연조인 (NATURAL JOIN) | |
포괄조인 (LEFT OUTER) (RIGHT OUTER) |
외부조인 (OUTER JOIN) |
왼쪽 외부조인 (LEFT OUTER JOIN) | |
오른쪽 외부조인 (RIGHT OUTER JOIN) | |
전체 외부조인 (FULL OUTER JOIN) | |
카테시안곱(CARTESIAN PRODUCT) | 교차조인(CROSS JOIN) |
자체조인(SELF JOIN) |
< 카테시안곱 (CARTESIAN PRODUCT) >
- 모든 테이블의 각 행들이 서로 매핑된 데이터 조회 (곱집합)
- 두 테이블의 행들이 모두 곱해진 조합 출력 => 방대한 데이터 출력 - 과부하 위험
(사용하지 않도록 주의!!)
-- EMPLOYEE 테이블 23행, DEPARTMENT 테이블 9행 = 총 207행의 결과 조회됨!!
--> ORACLE 구문 <--
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT;
--> ANSI 구문 <--
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
CROSS JOIN DEPARTMENT;
< 비등가 조인 (NON EQUAL JOIN) >
- '='을 사용하지 않는 JOIN문
- 지정해주는 컬럼값이 정확하게 일치하는 경우가 아니라, "범위"에 포함되는 경우 매칭
-- 사원명, 급여, 급여등급(SAL_LEVEL)*
-- * SAL_GRADE 테이블에 존재. 급여 등급의 최솟값과 최댓값 기재
--> ORACLE 구문 <--
SELECT EMP_NAME, SALARY, S.SAL_LEVEL
FROM EMPLOYEE E, SAL_GRADE S
WHERE SALARY BETWEEN MIN_SAL AND MAX_SAL;
-- WHERE MIN_SAL <= SALARY AND SALARY <= MAX_SAL; -- BETWEEN AND로 간단하게 작성 가능
--> ANSI 구문 <--
SELECT EMP_NAME, SALARY, S.SAL_LEVEL
FROM EMPLOYEE
JOIN SAL_GRADE S ON(SALARY BETWEEN MIN_SAL AND MAX_SAL);
'개발 > SQL' 카테고리의 다른 글
[SQL] Oracle - 집합연산자(Set Operator) (0) | 2022.09.28 |
---|---|
[SQL] Oracle - (JOIN) 자체조인 (SELF JOIN) / 다중조인 (0) | 2022.09.28 |
[SQL] Oracle - (JOIN) 포괄조인, 외부조인, 아우터조인 (0) | 2022.09.28 |
[SQL] Oracle - (JOIN) 등가조인, 이퀄조인, 내부조인, 이너조인 (0) | 2022.09.28 |
[SQL] Oracle - 실행 순서 / GROUP BY / HAVING (0) | 2022.09.28 |