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 |