
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 JOIN과RIGHT 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 학생.학과코드 = 학과.학과코드;





近期评论