나만 알 수 없어서 만든 블로그

1-3. DATABASE (JOIN 내부/외부, 연산자) 본문

개발 기본 지식

1-3. DATABASE (JOIN 내부/외부, 연산자)

코딩낙타 2022. 3. 24. 16:09

JOIN (내부/외부), 연산자

참고 링크: https://goddaehee.tistory.com/62

 조인

  • 테이블의 공통 컬럼(외래키 등)을 통하여 테이블을 결합한 후 데이터 처리하는 것
  • 내부 조인, 외부 조인, ANSI 조인 (INNER JOIN, OUTER JOIN)

SELECT FROM을 이용한 조인

SELECT  MEM.MEM_ID, MEM.NAME, MEM.DEPART_ID, DEPART.DEPART_NAME
FROM     MEM, DEPART
WHERE MEM.DEPART_ID = DEPART.DEPART_ID;

ANSI 표준 조인

JOIN절을 명시적으로 선언하여 질의문을 작성 가능

 

SELECT 컬럼이름1, 컬럼이름2, ㆍㆍㆍ
FROM    테이블명1
JOIN    테이블명2
ON        테이블명1.컬럼명 = 테이블명2.컬럼명;

SELECT A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME
FROM    MEM A
JOIN    DEPART B
ON     A.DEPART_ID = B.DEPART_ID

 

OUTER 조인

  • EQUI JOIN 문장들의 한 가지 제약점은 그것들이 조인을 생성하려 하는 두 개의 테이블의 두 개 컬럼에서 공통된 값이 없다면 테이블로부터 데이터 반환하지 못함
  • 정상적으로 조인 조건을 만족하지 못하는 행들을 보기 위해 OUTER JOIN을 사용
  • OUTER JOIN의 연산자는 (+)
  • 조인시킬 값이 없는 조인측에 (+)를 위치
  • OUTER JOIN 연산자는 표현식의 한쪽에만 가능

 

SELECT  A.MEM_ID, A.NAME, A.DEPART_ID, B.DEPART_NAME, C.LOG_TIME
FROM	MEM A
	,DEPART B
	,MEM_MOD_LOG C
WHERE   A.DEPART_ID = B.DEPART_ID
AND     A.MEM_ID = C.MEM_ID (+)
AND       A.NAME = '사자';

-- 데이터가 없을 수도 있는 쪽 JOIN 컬럼에 (+)를 추가하여 OUTER JOIN이 가능

FULL OUTER JOIN

양쪽 테이블에 다 Outer Join을 거는 것을 TWO-WAY OUTER JOIN 또는 FULL OUTER JOIN 이라고 함