반응형
# 목적
- Join 문법 및 종류에 대한 간단 정리
Join 이란?
- 데이터베이스에서 두 개 이상의 테이블을 연결지어서 데이터를 조회하는 작업
Join 문법
1. Oracle Join
- 오라클에서만 사용되는 문법
- 형식)
SELECT A.컬럼명, B.컬럼명
FROM 테이블1 A, 테이블2 B
WHERE A.컬럼명 = B.컬럼명;
2. ANSI Join
- RDBMS에서 공통적으로 사용하는 표준 문법
- 형식)
SELECT A.컬럼명, B.컬럼명
FROM 테이블1 A JOIN 테이블2 B
ON A.컬럼명 = B.컬럼명;
Join의 종류
* 아래부터 모든 예시는 Oracle Join 방식으로 작성함
1. 등가조인(Equi Join)
- 조인 조건에서 Equal (=) 연산자를 사용하는 조인 방식
- 조인에 참여하는 테이블에서 특정 컬럼이 같은 값을 가지고 있는 행끼리 조인함
-- STUDENT 테이블과 PROFESSOR 테이블 조인해서
-- 학생의 이름과 지도교수 이름 조회하기
SELECT S.NAME 학생이름, P.NAME 지도교수명
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO; -- 조건식
2. 비등가조인(Non_Equi Join)
- 조인조건을 지정할 때 조인 대상테이블에서 같은 값을 가진 데이터를 가져오는 대신, 크거나 작은 경우의 조건으로 데이터를 조회하는 조인 방식
-- STUDENT 테이블, SCORE 테이블, HAKJUM 테이블을 조인해서
-- 학생이름, 점수, 학점 조회하기
SELECT S.NAME, O.TOTAL, H.GRADE
FROM STUDENT S, SCORE O, HAKJUM H
WHERE S.STUDNO = O.STUDNO
AND O.TOTAL >= H.MIN_POINT
AND O.TOTAL <= H.MAX_POINT;
3. 포괄조인(Outer Join)
- 한쪽 테이블에는 데이터가 있고, 다른쪽 테이블에는 데이터가 없는 경우에 데이터가 있는 쪽 테이블의 내용을 전부 조회하는 조인 방식
- 모든 행을 조회하는 테이블의 반대쪽 조인조건에 포괄조인 기호 (+)를 추가함
-- STUDENT 테이블과 PROFESSOR 테이블을 조인해서
-- 학생이름, 지도교수이름 조회하기 (단, 지도교수가 정해지지 않은 학생도 조회)
SELECT S.NAME 학생명, P.NAME 교수명
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO(+) -- 데이터가 없는 쪽 테이블에 (+) 기호 붙이면 됨
4. 셀프조인(Self Join)
- 조인 대상이 되는 테이블이 같은 테이블일 때 발생하는 조인 방식
- 같은 테이블끼리 조인하기 때문에 서로 역할을 나눠 별칭을 정하고, 그 역할에 맞게 조인조건을 정의해야 함
- 같은 테이블끼리 조인하기 때문에 조회하는 컬럼명이 동일한 경우에 적절한 별칭을 붙이는 것을 권장
-- EMPLOYEES 테이블에서 사원이름과 그 사원의 상사이름 조회하기
SELECT E.EMPLOYEE_NAME AS 사원이름, M.EMPLOYEE_NAME AS 상사이름
FROM EMPLOYEES E, EMPLOYEES M
WHERE E.MANAGER_ID = M.EMPLOYEE_ID
< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >
🔗 velog 버전 보기 : https://velog.io/@ryuneng2/DB-Join-조인
'BackEnd > Database' 카테고리의 다른 글
[DB] Transaction(트랜잭션) - Commit, Rollback (0) | 2025.01.20 |
---|---|
[DB] SubQuery(서브쿼리) (0) | 2025.01.20 |
[DB] Oracle의 내장함수 - 그룹함수(다중행 함수)와 GROUP BY(그룹화) (0) | 2025.01.20 |
[DB] Oracle의 내장함수 - 단일행 함수 (0) | 2025.01.20 |
[DB] Oracle의 데이터 타입 (0) | 2025.01.20 |