1) 서브쿼리
쿼리문안에 쿼리문이 있는것
단수행 서브쿼리(조회되는 서브쿼리 하나)와 복수행 서브쿼리(조회되는 행 여러개)로 나누어 진다.
서브쿼리는 ()로 묶어서 사용
insert, update, delete, select, create에도 사용가능
주의) 테이블 복사시 제약사항은 복사되지 않는다. (not null은 복사된다.)
primary key의 not null은 복사되지 않는다.
* insert
단수행 서브쿼리
1) insert into 테이블명(칼럼명...) values(서브쿼리(단일행만 나오는 쿼리));
2) insert into 테이블명(서브쿼리(칼러명들이 복사할 테이블의 칼럼명과 일치));
* update
단수행 서브쿼리
update 테이블명 set 칼럼명=서브쿼리 where 칼러몀=서브쿼리
*delete
단수행 서브쿼리
delete from 테이블명 where 칼럼명=서브쿼리
*select
단수행 및 복수행 모두 사용가능
단수행, where절
복수행 - 조회한 칼럼의 2차원 조회가능(조회된 칼럼으로 다시 조회가능)
select 칼러명 from 테이블명 where 칼러명=서브쿼리
select 서브쿼리에서 가져온 칼럼명 from 서브쿼리
2) rownum(pseudo column)
가상번호. 실제 칼럼은 아니지만 칼럼처럼 사용가능하면 가상번호를 얻어내는 가상칼럼이라고 할수 있다.
rownum은 where절에 조건을 1~5행은 검색된 레코드가 있지만 2~5행은 검색된 레코드가 없다.
* 번호가 없는 테이블에서 번호를 가지고 조회하려면
- 가상의 번호를 부여하고 그 가상번호를 실제 칼럼처럼 인식하고 사용할수 있게 만들면 됨
3) join
정규화(1nf, 2nf, 3nf, bcnf, 등등) 로 나뉘어진 테이블(하나이상)에서 레코드를 얻어내는것
하나의 테이블에서 조회하는 것보다는 속도가 느리다.
inner join, outter join, cross join, natural join등 여러 조인 방법이 있다.
* 오라클 백업 파일 복구
Administor>imp help=y (명령어 종류)
Administor>imp userid=scott/tiger file=f:/dev/query/car.dmp full=y
① inner join
양쪽 테이블에 동일한 데이터가 있는 것만 검색
-- 차량의 옵션중에 '경진이차'이 있는 차량의 차량명, 옵션, 배기량, 제조사, 제조국 조회
select c_mod.name, c_mod.car_option, c_mod.car_cc, c_mak.maker, c_cou.country
from car_model c_mod
inner join car_maker c_mak
on c_mod.model = c_mak.model
inner join car_country c_cou
on c_mak.maker = c_cou.maker
where c_mod.car_option like '%경진이차%';
② 오라클inner join
-- 모델명이 그랜저인 차량의 제조사, 차량명, 배기량, 옵션 조회(car_maker, car_model)
select cmd.name, cmd.car_option, cmd.car_cc, cmk.maker, cct.country
from car_maker cmk, car_model cmd, car_country cct
where cmk.model = cmd.model
and cmk.maker = cct.maker
and cmd.car_option like '%경진이차%'
③ Outter join
한쪽 테이블에만 데이터가 있어도 검색가능
select 칼럼명
from 테이블명
Outter(생략가능) left join 조인할테이블명
right
on 조인조건
* 주의사항
from 테이블명 left/right join 테이블명
left/right : 어떤 테이블에 데이터가 있는가를 기준으로 left/right를 정한다.
primary key가 있는 테이블을 기준으로 left/right를 정한다.
④ 오라클 Outter join
데이터가 없는 테이블에 (+)기호를 붙인다.
select 칼럼명
from 테이블명, 조인할 테이블명
where 조인조건 (+)
'SQL > ORACLE' 카테고리의 다른 글
[오라클함수] 오라클 함수 정리 (0) | 2014.06.11 |
---|---|
오라클 - 데이터 가져오기편 3 (0) | 2014.06.11 |
오라클 - 데이터 가져오기편 2 (0) | 2014.06.11 |
ROWID, PLS_INTEGER, BINARY_INTEGER (0) | 2014.06.11 |
INDEX_DESC 힌트 절 (0) | 2014.06.11 |
컬럼 데이터 유형 (0) | 2014.04.23 |
alter system [switch logfile] 과 [archive log current] 의 차이요 (0) | 2014.04.23 |
Count(*) 와 NVL(Max(RowNum),0) 차이점... (0) | 2014.04.12 |