클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

여러 테이블을 하나의 테이블처럼 사용하는 조인 2 - SQL-99 표준 문법으로 배우는 조인 본문

알고리즘 및 자료 관리/데이터베이스

여러 테이블을 하나의 테이블처럼 사용하는 조인 2 - SQL-99 표준 문법으로 배우는 조인

huenuri 2024. 8. 21. 17:24

이어서 조인에 대한 개념을 학습해본다. SQL문은 ISO/ANSI에서 관계형 데이터베이스 표준 언어로 지정된 후 표준 문법이 나왔다. 책에는 99 기준으로 나와있지만 현재는 더 많은 업데이트가 이루어졌을 것 같다.

 

학습 목표

  1. ANSI 표준 문법 조인 조건 학습하기
  2. 다양한 조인 조건 배우기
  3. ANSI 표준 문법과 오라클 문법의 차이 이해하기

학습 시간

새벽 6시 40분 ~ 7시 40분 <1시간 소요>


 

 

표준 문법 조인

ANSI 조인 문법

소괄호 안에 조인 조건을 사용한다. 콤마를 쓰게 되면 구분하기 힘들기에 이러한 방식을 많이 사용한다.

 

 

 

 

 

내부 조인

 

 

 

 

 

 

ON은 내부 조건, WHERE은 외부 조건을 기술한다.

 

 

 

 

 

 

 

실습 문제 1번

 

 

 

 

 

 

실습 문제 2번

 

JOBS를 조회하면 이렇게 ID와 TITLE을 출력할 수 있다.

 

이제 책에 나와있는 예제를 한번 살펴보기로 하자!


 

 

 

 

NATURE JOIN

등가 조인을 대신해 사용할 수 있는 조인 방식이다. 조인 대상이 되는 두 테이블에 이름과 자료형이 같은 열을 찾은 후, 그 열을 기준으로 등가 조인을 해주는 것이다.

EMP와 DEPT 테이블은 공통 열 DEPTNO를 가지고 있으므로 NATURE JOIN을 사용할 때 자동으로 DEPTNO 열 기준으로 등가 조인된다.
기존 등가 조인과 다르게 조인 긴준 열인 DEPTNO를 SELECT절에 명시할 때 테이블 이름을 붙이는 안되는 특성이 있다.

 

 

 

 

JOIN ~ USING

역시 등가 조인을 대신하는 조인 방식이다. 이때 WHERE절을 함께 사용할 수 있다.

 

 

 

JOIN ~ ON

기존 WHERE절에 있는 조인 조건식을 ON 키워드 옆에 작성한다. 조인 기준 조건식은 ON에 명시하고 그밖의 출력 행을 걸러내기 위해 WHERE 조건식을 따로 사용하는 방식이다.

 

실습 8-13

이 내용은 조금 전에 배웠던 내부 조인과 같은 방식이다.

 

 

 

 

CROSS JOIN

이 조인은 시험에 많이 출제되니 꼭 기억해두자! 조인 조건이 없으니 모든 행이 출력되어 2800개가 넘는 행 출력되었다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이 조인은 현업에서는 거의 사용하지 않지만 연말 보고서 작성할 때 가끔 사용하는 정도이다.

 

 

 

 

 

OUTTER JOIN

NULL 값까지 모두 JOIN하고 싶을 때 사용한다.

 

 

 

 

 

 

 

 

 

 

 

표준문법과 오라클 문법은 크게 다르지 않은데, 표준문법에서는 조인의 이름을 명시해주고, 오라클에서는 각 조인에 해당되는 공간에 + 기호를 붙여주면 된다.

 

 

 

 

 

 

 

 

 

 

 

오라클 문법에서는 FULL OUTTER JOIN은 하지 않는다.

 

 

 

 

 

 

실습 문제 풀기

 

매니저 아이디가 200이라는 말은 그 사람의 상사가 200번이라는 뜻이다.

 

이와 같은 조인 조건을 사용하면 매니저ID와 이름을 출력할 수 있다.

 

 

 

 

실습 8-14

비슷한 문제인데 사원과 해당 사원의 직속 상관을 출력할 수 있다.


 

 

 

3개 이상의 테이블을 조인할 때

1과 2를 이어준 후 2과 3을 AND로 이어주면 된다.
3개의 테이블을 조인했을 때 조인 조건은 2개나 나오게 되는데, 이러한 문제가 자주 출제된다.

 

 

 

 

 

실습 문제 풀기

CROSS JOIN : 12개
INNER JOIN : 2개(같은 것만 출력)
LEFT OUTTER JOIN : 4개
RITHGT OUTTER JOIN : 3개
FULL OUTTER JOIN : 5개(왼쪽 오른쪽 NULL값 모두 출력)


 

 

 

학습을 마치고

내가 예상했던 시간에 모두 마칠 수 있어 기쁘다. JOIN의 개념도 이제 어느정도 정리가 되었다. 선생님은 JOIN만큼 쉬운 게 없다고 하셨지만 내게 별로 쉽다는 생각이 들지 않았다.
아마도 이쪽을 잘하는 사람의 경우 데이터베이스가 쉽게 느껴지는 것 같다. 내가 어제 이 책으로 공부할 때도 짝꿍은 DB가 엄청 쉽다고 했었다.

이제 50분도 남지 않은 시간동안 연습문제를 풀어보려고 한다~