1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (187)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (27)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
      • TIL (1)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON

논리적 코딩

[SQL] 내부조인과 외부조인
📃 DATABASE/ORACLE

[SQL] 내부조인과 외부조인

2018. 1. 8. 22:51

1. 동등 조인(EQUI JOIN)

WHERE절에서 등호 연산자를 이용해 2개 이상의 테이블이나 뷰를 연결한 조인이다. WHERE절에 기술한 조건은 조인조건 이라고 부른다.


1
2
3
4
5
6
SELECT    A.EMPLOYEE_ID
        , A.EMP_NAME
        , A.DEPARTMENT_ID
        , B.DEPARTMENT_NAME
FROM    EMPLOYEES A, DEPARTMENTS B
WHERE    A.DEPARTMENT_ID = B.DEPARTMENT_ID;
cs



2. 세미 조인(SEMI JOIN)

서브 쿼리를 이용해 서브 쿼리에 존재하는 데이터만 메인 쿼리에서 추출하는 방법. IN과 EXISTS 연산자를 이용한다.


1
2
3
4
5
6
7
8
SELECT  DEPARTMENT_ID
        , DEPARTMENT_NAME
FROM    DEPARTMENTS A
WHERE   EXISTS ( SELECT  *
                 FROM    EMPLOYEES B
                 WHERE   A.DEPARTMENT_ID = B.DEPARTMENT_ID
                         AND B.SALARY > 3000 )
ORDER BY A.DEPARTMENT_NAME;
cs




3. 안티 조인(ANTI JOIN)

서브 쿼리의 테이블에는 없는 메인 쿼리 테이블의 데이터를 추출하는 방법이다. NOT IN과 NOT EXISTS 연산자를 이용한다.


1
2
3
4
5
6
7
8
9
SELECT  A.EMPLOYEE_ID
        , A.EMP_NAME
        , A.DEPARTMENT_ID
        , B.DEPARTMENT_NAME
FROM    EMPLOYEES A, DEPARTMENTS B
WHERE   A.DEPARTMENT_ID = B.DEPARTMENT_ID
        AND A.DEPARTMENT_ID NOT IN ( SELECT DEPARTMENT_ID
                                     FROM   DEPARTMENTS
                                     WHERE  MANAGER_ID IS NULL );
cs




4. 셀프 조인(SELF JOIN)

동일한 한 테이블을 사용해 조인하는 방법이다.


1
2
3
4
5
6
7
8
9
SELECT  A.EMPLOYEE_ID
        , A.EMP_NAME
        , B.EMPLOYEE_ID
        , B.EMP_NAME
        , A.DEPARTMENT_ID
FROM    EMPLOYEES A, EMPLOYEES B
WHERE   A.EMPLOYEE_ID < B.EMPLOYEE_ID
        AND A.DEPARTMENT_ID = B.DEPARTMENT_ID
        AND A.DEPARTMENT_ID = 20;
cs



5. 외부 조인(OUTER JOIN)

조인 조건에 만족하는 데이터뿐만 아니라, 어느 한 쪽 테이블에 조인 조건에 명시된 컬럼에 값이 없거나 해당 로우가 아예 없더라도 데이터를 모두 추출한다.


5-1. 일반 조인

1
2
3
4
5
6
SELECT  A.DEPARTMENT_ID
        , A.DEPARTMENT_NAME
        , B.JOB_ID
        , B.DEPARTMENT_ID
FROM    DEPARTMENTS A, JOB_HISTORY B
WHERE   A.DEPARTMENT_ID = B.DEPARTMENT_ID;
cs




5-2. 외부 조인

 조인 대상 테이블 중 데이터가 없는 테이블 조인 조건에 (+)을 붙인다.
 외부 조인의 조인 조건이 여러개일 때, 모든 조건에 (+)을 붙인다.
 한 번에 한 테이블에만 외부 조인을 할 수 있다.
 (+)연산자가 붙은 조건과 OR를 같이 사용할 수 없다.
 (+)연산자가 붙은 조건에는 IN 연산자를 같이 사용할 수 없다.(단, IN절에 포함되는 값이 1개일 때는 사용 가능)

1
2
3
4
5
6
SELECT  A.DEPARTMENT_ID
        , A.DEPARTMENT_NAME
        , B.JOB_ID
        , B.DEPARTMENT_ID
FROM    DEPARTMENTS A, JOB_HISTORY B
WHERE   A.DEPARTMENT_ID = B.DEPARTMENT_ID (+);
cs




6-1. 카타시안 조인(CATASIAN PRODUCT)

WHERE 절에 조인 조건이 없는 조인. 조인 조건이 없기 때문에 결과로 인출되는 행은 두 테이블의 행 수의 곱이다.


1
2
SELECT  COUNT(*)
FROM    EMPLOYEES A, DEPARTMENTS B;
cs





반응형
저작자표시 비영리 변경금지 (새창열림)

'📃 DATABASE > ORACLE' 카테고리의 다른 글

[SQL] 분석 함수  (0) 2018.01.15
[SQL] WITH절과 순환 서브쿼리  (1) 2018.01.15
[SQL] 계층형 쿼리  (0) 2018.01.09
[SQL] 집합 연산자  (0) 2018.01.04
[SQL] 데이터베이스 객체_시노님(SYNONYM)  (3) 2017.11.11
    '📃 DATABASE/ORACLE' 카테고리의 다른 글
    • [SQL] WITH절과 순환 서브쿼리
    • [SQL] 계층형 쿼리
    • [SQL] 집합 연산자
    • [SQL] 데이터베이스 객체_시노님(SYNONYM)
    1HOON
    1HOON

    티스토리툴바