오라클은 join을 매우 간단하게 할 수 있다.
select 컬럼명…..테이블명.컬럼명 , alias명.컬럼명….
from 테이블명 alias, 조인할 테이블명 alias, 조인할 테이블명 alias ….
where 조인조건 and 검색조건
Outer join
- 한쪽 테이블에만 레코드가 존재하더라도 조회됨
- left, right, full outer join
- ANSI : 테이블에 레코드가 있는 쪽을 join으로 선택한다
select
from 테이블명
[left | right | full] outer join 조인할테이블명
on 조인조건;
— 존재하는 모든 부서의 부서번호, 부서명, 위치, 사원번호, 사원명을 조회
select
from dept left outer join emp
left outer join emp
테이블에 레코드가 있는 쪽을 join으로 설정한다
Oracle outer join
조인조건에 ‘(+)’ 기호를 레코드가 없는 쪽에 붙인다
문법)
select 컬럼명.. 테이블명.컬럼명, alias 컬럼명
from 테이블명 alias, 조인할 테이블명 alias …
where 조인조건(alias.컬럼명(+)=alias.컬럼명)
self join
- 테이블 하나를 조인 설정하는것
- 테이블을 목적(값을 보여줄 목적테이블, 값을 비교할 목적의 테이블)에 따라 사용한다
select
from 테이블명 alias, 테이블명 alias
where 조인조건
— 사원 테이블에서 사원명이 ‘WARD’인 사원보다 연봉을 많이 수령하는 사원의 사원번호, 사원명, 연봉, 직무, 입사일을 조회
select e1.empno, e1.ename, e1.sal, e1.job, e1.hiredate
from emp e1, emp e2
where e1.sal > e2.sal and e2.ename = ‘WARD’;
- join조건을 잘못 설정하면 모든 행이 조회되는 cartesian product이 발생할 수 있다
백업 : dump 만들기
(DBMS의 객체를 외부로 내보내는것)
DOS창에서 수행
exp.exe 사용
사용법) exp -help → 도움말이 나온다
- 특정 테이블만 백업
exp userid=계정명/비번 tables=테이블명(공백,띄어쓰기없이 쓰기) file=파일명
- 계정이 생성한 모든 객체 백업
exp userid = 계정명/비번 full=y file=파일명
복구 : dump를 사용한 객체 복구
imp.exe사용
백업한 계정으로 복구를 수행한다
같은 이름의 객체가 존재하면 복구되지 않는다
사용법) imp -help → 도움말 나온다
- 특정 테이블만 복구
imp userid=계정명/비번 tables =복구할테이블명…file=백업파일명
- 모든 객체를 복구
imp userid=계정명/비번 full=y file=복구파일명