학습자료(~2017)/오라클

5. 오라클 - 조인

단세포소년 2011. 3. 11. 01:32
반응형

조인이란 하나 이상의 테이블을 조인해서 보고싶을 때 사용한다.
방법 : 조인 조건은 WHERE 절에 기술, 똑같은 열 이름이 하나 이상의 테이블에 존재 한다면 모호성을 없애기 위해 열 이름 앞에 테이블 이름을 붙여야 한다.
중복되지 않는 열 이름이라 할지라도 열이름 앞에 테이블 이름을 붙이면 성능 향상
2개 이상의 테이블을 조인할 수 있다.


EQUIJOIN
 - > PRIMARY KEY , FOREIGN KEY 와 같이 같은 값이 존재하는 테이블끼리 조인
예 ) emp 테이블과 dept 테이블에 deptno 라는 같은 데이터형의 컬럼이 존재한다면
SELECT emp.empno, emp.ename, emp.deptno, dept.dname FROM emp, dept WHERE emp.deptno = dept.deptno AND sal > 2000 ;


TABLE ALIAS 사용
테이블명이 길거나 테이블명이 같다면 별명을 붙여 짧게 혹은 구별하여 사용할수 있다.
예) SELECT e.empno , e.ename, e.deptno , d.dname FROM emp e, dept d WHERE e.deptno = d.deptno ;
테이블 별칭을 사용하면 SQL문장을 간단하게 작성가능하다. (컬럼 별칭을 사용하는 것과 흡사된다.)



NON-EQUIJOIN
 - > 동일한 data를 가진 column이 없는 table간에 join을 하고자 할 때 사용함
예) SELECT e.empno, e.ename, e.sal , s.grade FROM emp e, salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal;



OUTER JOIN
 - > 두개의 테이블에서 공통된 컬럼이 없거나 또는 컬럼에서 같은 값이 없다면 JOIN문을 사용하여도 원하는 결과값을 얻어오지 못한 다. 때문에 한쪽의 값이 없더라도(null) 결과값이 나올 수 있게 해주는 조건문이다. 어느 한쪽의 컬럼을 기준으로 공통된 값을 얻어 오고, 공통된 값이 없더라도 기준이 되는 컬럼만큼은 결과값으로 찾아오게 된다.

emp
 empno ename deptno 
 7782 CLARK  10 
 7369 SMITM 20
 7499 ALLEN  30

dept
 deptno dname loc 
 10 ACCOUN  NEW YORK 
 20 RESEARCH JP 
 30 SALES KR
 40 OPERATION OR 

예) SELECT e.empno, e.ename, d.deptno, d.dname FROM emp e, dept d WHERE e.deptno(+) = d.deptno;
 - > (+) 는 행 수가 부족한 테이블 쪽에 붙여준다.(의미상 부족한 행을 더 있는것 처럼 보이게 하라는 뜻 같다.)
결과
 e.empno  e.ename   d.deptno   d.dname 
 7782  CLARK  10   ACCOUN 
 7369  SMITM  20  RESEARCH
 7499  ALLEN   30  SALES
     40  OPERATION


예) SELECT e.empno, e.ename, d.deptno, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno;
결과
 e.empno e.ename  d.deptno  d.dname 
 7782  CLARK 10  ACCOUN 
7369  SMITM  20  RESEARCH
7499  ALLEN  30  SALES





SELF JOIN
 - > 자기 자신과 조인하는 구문이다. 자기 자신의 테이블을 구분하기 위해 테이블 별칭(alias)과 컬럼 별칭을 사용해야한다.
예) SELECT w.ename worker, m.ename manager FROM emp w, emp m WHERE w.mgr = m.empno;





Cartesian Product - > 모든 경우수 발생
 - > Query의 From절에 2개 이상의 Table이 있고, 두 Table 사이의 유효한 Join 조건이 기술되어 있지 않은 경우에는 두 Table의 모든 행들이 무조건 결합하여 Table들에 존재하는 행 갯수를 곱한 만큼의 결과값이 반환되는 것을 Cartesian Product(카테시안 곱)라고 한다.
 
. 조인 조건이 생략되거나 잘못된 경우 Cartesian Product가 발생
. 조인 되는 모든 테이블의 모든 행이 조인 되는 경우 Cartesian Product 가 발생한다.
. Cartesian Product 가 발생하면 잘못된 결과를 얻을 수 있으므로 WHERE 절에 정확한 조인 조건을 써야한다
. Cartesian Product 를 외도적으로 사용할 수도 있다.

반응형

'학습자료(~2017) > 오라클' 카테고리의 다른 글

7. 오라클 - 테이블 스페이스  (0) 2011.03.11
6. 오라클 - Sub Query  (0) 2011.03.11
4.오라클 - 그룹, 함수  (0) 2011.03.11
3. 오라클 - 데이터 제한 및 정렬  (0) 2011.03.10
2. 오라클 - 기본 질의문  (0) 2011.03.10