반응형
조인이란 하나 이상의 테이블을 조인해서 보고싶을 때 사용한다.
방법 : 조인 조건은 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 |