728x90
반응형

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 조인조건 (+)

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,