본문 바로가기

[DB]DataBase/[SQL]

[SQLD] JOIN 조인

728x90
반응형

JOIN(조인)

두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 조인(JOIN)이라고 하며, 일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 조인이 성립된다.

하지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 조인이 성립 된다.

  • 여러 테이블의 데이터를 사용하여 동시에 출력하거나 참조할 경우 사용
  • FROM절에 조인할 테이블 나열
  • ORACLE 표준은 테이블 나열 순서가 중요하지 않지만, ANSI 표준은 OUTER JOIN시 순서 중요
  • WHERE 절에서 조인 조건을 작성(ORACLE 표준)
  • 동일한 열 이름이 여러 테이블에 존재할 경우 열 이름 앞에 테이블 이름이나 테이블 Alias 붙임
  • N개의 테이블을 조인하려면 최소 N-1 개의 조인 조건 필요
  • ORACLE 표준과 ANSI 표준이 서로 다름

 

조인 종류

  • 조건의 형태에 따라
    • EQUI JOIN(등가 조인)
      • 조인 조건이 동등 조건인 경우
    • NON EQUI JOIN
      • 조인 조건이 동등 조건이 아닌 경우
  • 조인 결과에 따라
    • INNER JOIN
      • 조인 조건에 성립하는 데이터만 출력하는 경우
    • OUTER JOIN
      • 조인 조건에 성립하지 않는 데이터도 출력하는 경우
      • LEFT/RIGHT/FULL OUTER JOIN으로 나뉨
  • NATURAL JOIN
    • 조인 조건 생략 시 두 테이블에 같은 이름으로 자연 연결되는 조인
  • CROSS JOIN
    • 조인 조건 생략 시 두 테이블의 발생 가능한 모든 행을 출력하는 조인
  • SELF JOIN
    • 하나의 테이블을 두 번 이상 참조하여 연결하는 조인

 

EQUI JOIN(등가 조인)

EQUI JOIN 문장

WHERE 절에 JOIN 조건을 넣는다.

  • 조인 조건으로 '=' (equal) 비교를 통해 같은 값을 가지는 행을 연결하여 결과를 얻음
  • SQL 명령문에서 가장 많이 사용하는 조인 방법
  • FROM 절에서 조인하고자 하는 테이블을 모두 명시
    • 테이블 별칭(Alias) 사용 가능
  • WHERE 절에 두 테이블의 공통 컬럼에 대한 조인 조건을 나열

NON-EQUI JOIN

NON-EQUI JOIN 문장

테이블을 연결하는 조인 컬럼에 대한 비교조건이 '<', BETWEEN A AND B 와 같이 '=' 조건이 아닌 연산자를 조건에 사용하는 조인

 

SELF JOIN

  • 한 테이블 내 각 행끼리 관계를 갖는 경우 조인
  • 한 테이블을 참조할 때마다 명시
  • 테이블명이 중복되므로 반드시 테이블 별칭 사용

ex) EMPLOYEES 테이블에서 각 직원이름과 매니저 이름을 함께 출력

SELF JOIN 예시

 

 

 

세 테이블 이상 조인

  • 세 테이블 간의 관계를 잘 파악하여 모든 테이블이 연결 되도록 조인 조건을 명시
  • N개 테이블을 조인할 경우 최소 N-1 개의 조인 조건이 필요
    • 만약 필수 조인 조건이 하나라도 생략될 경우, 카티시안곱이 발생하여 정상 조인보다 더 많은 수의 행이 리턴됨
반응형

'[DB]DataBase > [SQL]' 카테고리의 다른 글

[SQLD] 표준 조인  (0) 2024.05.05
[SQLD] 순수 관계 연산자  (0) 2024.05.03
[SQLD] ORDER BY절  (1) 2024.04.27
[SQLD] GROUP BY, HAVING절  (0) 2024.04.27
[SQLD] WHERE절  (0) 2024.04.25