JOIN

여러 테이블을 묶어서 필요한 데이터를 찾을 수 있는 방법을 말함.

 

예를 들어 회사 내에 구매팀에서 일하는 사람이 누군인 지 알아보고 싶다고 하자.

A테이블에 사원들의 이름과 부서번호가 있고 B테이블은 부서번호와 부서의 이름이 있다.

이 경우 A,B테이블에 모두 접근해야 구매팀에서 일하는 사람을 찾을 수 있다.

 

B테이블에서 구매팀의 부서번호를 알아 낸뒤 

그 번호를 이용하여 A테이블에서 찾아야한다.

이 경우 SELECT를 두 번 입력해서 검색해야하는 번거로운 문제가 발생한다.

 

하지만, A와 B테이블을 묶어 C테이블을 만든다면 내가 찾고자 하는 데이터가 모두 포함되어 있어

SELECT를 두 번 입력해야되는 불편함을 피할 수 있다.

 

 JOIN 의 종류
종류   설명
오라클 조인 CARTESIAN PRODUCT 조인 조건을 생략하거나 조인이 잘못된 경우 발생된다.
EQUI 조인 기본 키(Primary Key)와 참조키(Foreign Key)을 사용하여 반드시 조건이 일치하는 데이터만 조회하는 방법이다.
NON-EQUI 조인 조건이 반드시 일치하지 않더라도 범위에 포함되는 경우에 조회하는 방법이다.

** 조인 종류는 이것보다 더 많지만 금일 배운 내용만 기재하였습니다.

 

CARTESIAN PRODUCT

다음과 같은 경우 CARTESIAN PRODUCT 가 발생한다.

- 조인 조건이 생략된 경우

- 조인 조건이 잘못된 경우

- 첫 번째 테이블의 모든 행이 두 번째 테이블의 모든 행이 조인되는 경우

 

만일 CARTESIAN PRODUCT가 실행된다면 양쪽 ROW의 개수를 곱한 결과를 반환한다. 

EX) SELECT EMPNO, ENAME, DEPT.DNAME, LOC
     FROM DEPT, EMP; 

 

EQUI JOIN

EQUI JOIN 방법

- SELECT 절은 검색할 열 이름을 명시

- FROM절은 데이터베이스가 ACCESS해야 하는 두 개의 테이블을 입력

- WHERE절은 테이블의 조인 조건을 명시

- 양쪽 테이블에 공통으로 존재하는 열 이름을 열 이름앞에 테이블명을 기술함.

EX) DEPT.DEPTNO

 

1)

SELECT * 
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;

 

2) 

SELECT S.GRADE, COUNT(*)
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL 
AND S.GRADE = 2
GROUP BY S.GRADE;

'DataBase > DQL' 카테고리의 다른 글

6/30 SQL 서브쿼리  (0) 2021.06.30
6/30 SQL ANSI  (0) 2021.06.30
6/29 SQL 그룹함수 보충  (0) 2021.06.29
6/28 SQL 그룹함수  (0) 2021.06.28
6/28 SQL 조건문  (0) 2021.06.28

+ Recent posts