Gidhub BE Developer

Join (2)

2017-10-08
goodGid

Concept

Join은 2개의 테이블에 대해 연관된 튜플들을 결합하여 새로운 릴레이션을 반환

  • JOIN은 크게 INNER & OUTER JOIN 으로 구분됨

OUTER JOIN

  • Join 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 방법
  • LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN이 있다.

LEFT OUTER JOIN

  • INNER JOIN의 결과를 구한 후, 우측 릴레이션의 어떤 튜플과도 맞지 않는 좌측 릴레이션에 있는 튜플들에
    NULL 값을 붙여 INNER JOIN의 결과에 추가
SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1 LEFT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1, 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명(+);

RIGHT OUTER JOIN

  • INNER JOIN의 결과를 구한 후, 좌측 릴레이션의 어떤 튜플과도 맞지 않는 우측 릴레이션에 있는 튜플들에
    NULL 값을 붙여 INNER JOIN의 결과에 추가
SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1 RIGHT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;
SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1, 테이블명2
ON 테이블명1.속성명(+) = 테이블명2.속성명;

  • Inner Join은 두 릴레이션에서 관련 있는 튜플만 표시
  • Left Outer Join은 좌측 릴레이션기준이 되어 좌측 릴레이션에 있는 튜플은 모두 표시
    우측 릴레이션에서는 관련 있는 튜플만 표시
  • Right Outer Join은 우측 릴레이션기준이 되어 우측 릴레이션에 있는 튜플은 모두 표시
    좌측 릴레이션에서는 관련 있는 튜플만 표시

  • Outer Join에서 '+'를 사용하면 Inner Join과 동일한 형식으로 사용 가능.
    Left일 때조건문의 우측에, Right일 때조건문의 좌측에 ‘+’를 붙힘

FULL OUTER JOIN

  • LEFT OUTER JOINRIGHT OUTER JOIN을 합쳐 놓은 것
SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1 FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;

Example

Q. <학생> 테이블과 <학과> 테이블에서 학과코드값이 같은 튜플을 Join하여 학번, 이름, 학과코드, 학과명을
출력하는 SQL문을 작성하시오. 이 때 학과코드가 입력되지 않은 학생도 출력하시오.

Select 학번, 이름, 학생.학과코드, 학과명
From 학생 Left Outer Join 학과
On 학생.학과코드 = 학과.학과코드;
Select 학번, 이름, 학생.학과코드, 학과명
From 학생, 학과
Where 학생.학과코드 = 학과.학과코드(+);

Q. <학생> 테이블과 <학과> 테이블에서 학과코드값이 같은 튜플을 Join하여 학번, 이름, 학과코드, 학과명을 출력하는 SQL문을 작성하시오. 이 때 학과코드가 입력 안 된 학생이나 학과명이 없는 학과코드 모두 출력하시오.

Select 학번, 이름, 학생.학과코드, 학과명
From 학생 Full Outer Join 학과
On 학생.학과코드 = 학과.학과코드;

Back : Join (1)

Next : SQL

Comments

Content