◈ 등가조인 (=EQUI 조인은 "="을 사용해서 두 테이블을 연결한다.)
조인은 여러 개의 릴레이션을 사용하여 새로운 릴레이션을 만드는 과정이다.
조인의 가장 기본은 교집합을 만드는 것.
두 개의 테이블 간에 일치하는 것을 조인한다.
SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
다음과 같이 조인하여 사용할 수 있다.
등가조인에서
select * from emp,dept where emp.deptno=dept.deptno and emp.ename LIKE '고%';
와 같이 where절에 다음과 같이 and를 추가할 수 있다.
등가조인을 한 후에 실행계획을 확인해서 내부적으로 두 개의 테이블을 어떻게 연결했는지 확인할 수 있다.
위의 예에서 보면 dept 테이블과 emp 테이블 전체를 읽은 다음에 해시함수를 사용하여 두 개의 테이블을 연결한 것이다.
해시함수는 테이블을 해시 메모리에 적재한 후에 해시함수로써 연결하는 방법이다.
해시조인은 등가조인만 사용 가능한 방법이다.
◈ INNER JOIN (=Inner Join은 ON구를 사용하여 테이블을 연결한다.)
SELECT * FROM EMP INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
◈ INTERSECT 연산
이 연산은 두 개의 테이블에서 교집합을 조회한다.
예를 들어,
select deptno from emp intersect select deptno from dept;
공통된 속성 deptno가 출력된 것을 확인할 수 있다.
◈ 비등가조인(= 두 테이블 사이에서 "="를 사용하지 않고, ">","<",">=","<=" 등을 사용한다)
-> 비등가조인은 정확하게 일치하지 않는 것을 조인하는 것
◈◈◈ OUTER JOIN
(외부조인, 두 개의 테이블 간에 교집합(=등가조인)을 조회하고 한쪽 테이블에만 있는 데이터도 포함시켜서 조회한다)
예를 들어, DEPT 테이블과 EMP 테이블을 Outer Join하면 DEPTNO가 같은 것을 조회하고,
DEPT 테이블에만 있는 DEPTNO도 포함시킨다. 즉 같은 것만 연결하여 보여주는 것이 아니라, dept 테이블에만 있는
2019번의 행도 함께 출력된다.
아래의 오라클 데이터베이스의 Outer Join 예를 보자.
SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO (+)= DEPT.DEPTNO;
full outer 조인은 왼쪽과 오른쪽의 테이블을 모두 보여주는 것이고, left outer join, right outer join은 말 그대로 왼쪽, 오른쪽 테이블의 고유한 속성만 추가하여 보여주는 것을 의미한다.
◈ CROSS JOIN (= 조인 조건 구 없이 2개의 테이블을 하나로 조인)
조인구가 없기 때문에 카테이션 곱이 발생한다.
예를 들어, 14개의 행이 있는 테이블과 4개의 행이 있는 테이블을 CROSS JOIN 할 경우,
56개의 행을 가진 릴레이션이 출력된다.
SELECT * FROM EMP CROSS JOIN DEPT; 와 같이 사용한다.
'데이터베이스' 카테고리의 다른 글
[ORACLE 10일차]Subquery (1) (0) | 2019.01.16 |
---|---|
[ORACLE 9일차] UNION, MINUS, Connect by (0) | 2019.01.15 |
[ORACLE 7일차] TCL (0) | 2019.01.13 |
[ORACLE 6일차] DCL (0) | 2019.01.12 |
[ORACLE 5일차] DML (4) (0) | 2019.01.11 |