개발자가 되고 싶은 개발자

[Oracle] Join 본문

Dev/DataBase

[Oracle] Join

Fullth 2020. 4. 23. 23:34

오랜만에 글을 작성해봅니다.

 

업무 파악을 위해 분석기간에 투입되어 업무를 배우고,

이제 슬슬 설계단계에 오다 보니 DB를 볼 일이 많아졌습니다.

 

실무에서의 쿼리문을 보니 학교에서 자바를 배우고 처음 실무에서 스프링을 접할 때 느낌이었습니다.

(이게 뭐지...? 내가 배운 자바는, DB는 이게 아닌데!)

 

보통 한 테이블에 몇 십개의 컬럼은 기본이고, JOIN도 끝이 보이지 않은 AND로 이어져있었습니다.

우선 익숙치 않은 테이블 명들이 화면을 채우고 있으니, 그냥 단순 나열되어 있는거지만 일단 당황부터...

 

그래서 더 늦기전에 조인의 개념에 대해 다시 정리해보려고 합니다. 

 

https://www.dofactory.com/sql/join

 

SQL JOIN | JOIN Syntax | JOIN Differences | 3 tables | Examples

 

www.dofactory.com

dofactory 라는 사이트를 통해 조인에 대해 정리해보도록 하겠습니다.

(영어는 못하지만 자주 찾아보다 보면, 보통 비슷한 맥락들이 많아서 구글신과 함께 하면 생각보다는 잘 읽히는 것 같습니다.

그 핑계라고 영어공부를 안하는 나아는 진짜...)

 

<개념 >

  • 조인은 두 테이블의 레코드를 결합합니다. 
  • 레코드는 행을 뜻합니다. 로우 또는 튜플이라고도 불립니다. (사람마다, 문서마다 다르게 표현되니 셋 다 외워두시는게 좋습니다.) 
  • 조인은 두 테이블 안의 연관된 컬럼 값을 찾습니다. 컬럼은 어트리뷰트(attribute)라고도 불립니다.
  • 쿼리에는 조인 연산이 없을수도 있고, 한 개 혹은 여러개의 조인 연산이 있을 수 있습니다.
  • Inner Join(내부조인)은 Join과 같습니다. Inner키보드는 적어도, 안적어도 됩니다.

<종류>

주로 사용되는 조인의 종류에는 4가지가 있습니다.

  • 일반적으로 사용되는 INNER JOIN = 내부 조인 = 조인 (INNER을 생략하기도 합니다.)
  • LEFT JOIN = LEFT OUTER JOIN
  • RIGHT JOIN = RIGHT OUTER JOIN
  • FULL JOIN = FULL OUTER JOIN

 

LEFT, RIGHT, FULL사이에는 OUTER가 들어갑니다. INNER, OUTER은 선택적으로 넣어줍니다.

아래의 벤 다이어그램을 보면 쉽게 이해가 가실겁니다.

<예시>

참조한 링크의 예시를 번역해서 위에서 보셨던 조인의 종류들을 알아보겠습니다.

주문 테이블
ID (KEY)
주문일자
주문번호
고객아이디
총주문
고객 테이블
ID (KEY)
이름
주문번호
전화번호

다시 정리해보자면, 조인은 서로 다른 두 테이블을 하나의 테이블 처럼 엮어서 추출할 때 사용합니다.

그 중 내부조인(INNER JOIN)은 두 테이블의 공통적인 값을 추출할 때 사용합니다.

(INNER, 내부의 뜻은 위 그림의 '벤 다이어그램의 안(내부)'를 생각하시면 됩니다. )

 

SELECT 주문번호, 성, 이름
FROM 주문테이블 JOIN 고객테이블
ON 주문테이블.주문번호 = 고객테이블.주문번호

위처럼 작성할 수 있겠습니다.

 

'Dev > DataBase' 카테고리의 다른 글

[SQL] Subquery error  (0) 2020.10.29
[Mybatis] If문 Null 처리  (0) 2020.10.26
[Oracle] ORA-00918  (0) 2020.06.24
[Oracle] ojdbc  (0) 2020.03.24
[Oracle] Issue  (0) 2020.02.24