2008. 8. 18. 23:46

Chap 7. 조인

외래키는 중복 될 수 있다.

EQUI JOIN
조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치되는 행을 연결하여 결과를 생성하는 조인 방법
주의 사항 : 컬럼의 이름이 같을 경우, 혼돈이 오기 때문에 컬럼명 앞에 테이블명을 기술한다.

ex )                                                 
select *                                            deptno(공통) 컬럼을 중심으로
from emp, dept                                   emp테이블과 dept테이블을 조인해서
where emp.deptno = dept.deptno;        결과를 출력

특정 컬럼을 추출하기 위해서는
select ename, dname                         emp 테이블의 ename(이름),
from emp, dept                                   dept 테이블의 dname(부서명)을
where emp.deptno = dept.deptno;         deptno(공통) 컬럼을 중심으로 출력

별칭 부여
select e.ename, d.dname, e.deptno, d.deptno
from emp e, dept d
where e.deptno=d.deptno;
emp테이블을 e(별칭)로 dept테이블을 d(별칭)로 하여 해당 테이블의 컬럼을
e.ename, d.dname로 명시하고 결과값을 출력

EQUI JOIN에 AND 연산을 추가하여 검색
select ename, dname                       emp 테이블의 이름이 SCOTT인 사람의
from emp e, dept d                           이름과 부서명을 출력
where e.deptno=d.deptno
and e.ename='SCOTT';

NON-EQUI JOIN
특정 범위 내의 결과값을 출력하기 위해 WHERE 절에 조인 조건에 연산자를 사용하거나
BETWEEN AND 연산자를 사용할 수 있다.

SELF JOIN
자신의 테이블만으로는 원하는 결과를 알아낼 수 없는 경우, 테이블이 두 개 존재하는 것처럼 자기 자신의 테이블과 조인하는 것을 SELF JOIN이라 한다. 이 경우 FROM 절에 같은 테이블 이름을 두 번 반복하게 되므로 반드시 테이블 별칭을 사용해야 한다.
select employee.ename || '의 매니저는' || manager.ename
from emp employee, emp manager
where employee.mgr=manager.empno;
질의 사항
where 절을 이해하지 못하겠음
employee테이블의 mgr컬럼(번호)과 manager의 empno컬럼(번호)이 동일한지 확인하고
왜 select manager.ename || '의 매니저는' || employee.ename 이렇게 하면 안되는 것인지

OUTER JOIN
외부 조인은 조인 조건에 만족하지 못하였더라도 해당 행을 나타내고 싶을 때 사용한다.
외부 조인은 "(+)" 연산자를 사용하여 NULL 값이기에 배제된 행을 결과에 포함시킬 수 있다.

'수업 > 오라클 + PL/SQL' 카테고리의 다른 글

Chap3,4 SQLPLUS 명령어 & 연산자  (1) 2008.08.20
Chap 2. SQL의 기본  (2) 2008.08.20
Chap 8. 서브쿼리  (0) 2008.08.20
Chap 6. 그룹함수  (0) 2008.08.14
Chap 5. SQL 주요 함수  (0) 2008.08.13