* 오라클 자체 조인문이 아닌 ANSI 쿼리문으로 진행했습니다.
조인은 두 개 이상의 테이블을 서로 묶어 하나의 결과 집합으로 만들어 내는 것을 의미한다.
조인의 종류에는 INNER JOIN, LEFT/RIGHT/FULL OUTER JOIN, SELF JOIN 등이 있는데 이번 포스팅에서는 INNER JOIN에 대해 알아보겠습니다.
아래와 같은 테이블 두 개가 있다고 가정하자.
왼쪽은 MEMBER 테이블이고 오른쪽은 NOTICE 테이블이다.
NOTICE 테이블의 WRITER_ID 컬럼은 MEMBER 테이블의 ID 컬럼을 참조하고 있는 상태이다.
MEMBER 테이블은 NOTICE 테이블을 만들어냈기 때문에 '부모 테이블'이라고 한다.
MEMBER 테이블과 NOTICE 테이블을 시각적으로 합치기 위한 방법은 어떻게 될까?
테이블을 서로 합치기 위해서는 두 개의 테이블의 튜플의 개수가 같아야만 한다.
그래서 MEMBER 테이블의 튜블의 개수를 가상으로 NOTICE 테이블과 맞춘다.
위의 이너 조인을 진행하기 위해서는 쿼리문은 다음과 같다.
SELECT MEMBER.ID, MEMBER.NAME, NOTICE.ID, NOTICE.TITLE, NOTICE.WRITER_ID
FROM MEMBER INNER JOIN NOTICE ON MEMBER.ID = NOTICE.WRITER_ID;
만약 테이블 명이 길어 가독성이 떨어진다면, 각 테이블에 별칭(Alias)을 주어 다음과 같은 쿼리문을 작성할 수도 있다.
SELECT M.ID, M.NAME, N.ID, N.TITLE, N.WRITER_ID
FROM MEMBER M INNER JOIN NOTICE N ON M.ID = N.WRITER_ID;
Q. 공통적이지 않은 부분이 존재하는 테이블끼리 이너 조인을 한다면?
이너 조인은 두 개의 테이블이 공통된 부분만(즉, 참조되는 것들) 합치는 것을 의미한다.
그렇다면 아래와 같은 테이블(MEMBER, NOTICE)이 존재한다면 어떻게 해야할까?
간단하게 생각하면 된다.
이너 조인은 '공통된 부분'만 합치기 때문에 현재 참조되지 않거나 참조하지 않는 것들(YJS, JUNG, KANG, DRAGON)은 배제하고 조인을 진행한다.
이번 포스팅은 youtu.be/BZPX-arrwHI을 바탕으로 진행했습니다.
'Programming > 데이터베이스' 카테고리의 다른 글
[MySQL] 제약조건을 무시하고 FOREIGN KEY 삭제하기 (0) | 2021.05.13 |
---|---|
[오라클 데이터베이스] 아우터 조인(OUTER JOIN)이란? (0) | 2020.12.12 |
[오라클 데이터베이스] ROW_NUMBER()을 통해 ROWNUM을 추출해보자(Feat. 서브쿼리, 윈도우 함수, 순위 함수) (0) | 2020.08.12 |
[오라클 데이터베이스] - 트랜잭션 처리를 위한 COMMIT과 ROLLBACK (0) | 2019.10.30 |
[오라클 데이터베이스] NULL 관련 함수 (NVL/NVL2/NULLIF)와 DECODE 함수 (1) | 2019.10.13 |