Gidhub BE Developer

Join (1)

2017-10-08
goodGid

Concept

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

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

INNER JOIN

  • EQUI JOINNON-EQUI JOIN으로 구분됨

EQUI 조인

  • EQUI JOIN은 JOIN 대상 테이블에서 공통 속성을 기준으로 ‘=’ 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성
  • EQUI JOIN에서 JOIN 조건이 ‘=’일 때 동일 속성이 2번 나타나게 되는데, 이 중 중복된 속성을 제거하여 1번만 표기하는 방법을 NATURAL JOIN이라 한다.
  • EQUI JOIN에서 연결 고리가 되는 공통 속성JOIN 속성이라 한다.

– WHERE절을 이용한 EQUI JOIN의 표기 형식

SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명;

– NATURAL JOIN을 이용한 EQUI JOIN의 표기 형식

SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1 NATURAL JOIN 테이블명2;

– JOIN ~ USING절을 이용한 EQUI JOIN의 표기 형식

SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1 JOIN 테이블명2 USING(속성명);

Example

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

Select 학번, 이름, 학생.학과코드, 학과명
From 학생, 학과
Where 학생.학과코드 = 학과.학과코드;
Select 학번, 이름, 학생.학과코드, 학과명
From 학생 Natural Join 학과;
Select 학번, 이름, 학생.학과코드, 학과명
From 학생 Join 학과 Using(학과코드);
  • 테이블을 조인하여 사용할 때 한 테이블에만 있는 속성은 테이블명을 생략할 수 있지만 두 테이블에 모두 속해 있는 속성은 반드시 속성명을 테이블명과 함께 표시해야 한다.

  • Natural Join조인할 속성지정하지 않기 때문에 조인하려는 두 테이블에는 같은 이름, 같은 속성의 도메인이 반드시 존재해야 한다. <학생> 테이블과 <학과>테이블에는 같은 이름의 속성과 범위가 같은 도메인을 갖는 학과코드가 있기 때문에 Natural Join이 가능


NON-EQUI 조인

  • NON-EQUI은 JOIN 조건에 ‘=’ 조건이 아닌 나머지 비교 연산자를 사용하는 JOIN 방법이다.
SELECT [테이블명1.]속성명, [테이블명2.]속성명
FROM 테이블명1, 테이블명2
WHERE (NON-EQUI JOIN 조건);

Q. <학생> 테이블과 <성적등급> 테이블을 Join하여 각 학생의 학번, 이름, 성적, 등급을
출력하는 SQL문을 작성하시오.

SELECT 학번, 이름, 성적, 등급
FROM 학생, 성적등급
WHERE 학생.성적 BETWEEN 성적등급.최저 AND 성적등급.최고;

Back : Index

Next : Join (2)

Comments

Content