.SELF JOIN
: 조인은 서로 다른 두개 이상의 테이블을 연결하기도 하지만
하나의 테이블 내에서 조인을 해야 함 자료를 얻는 경우도 있습니다.
셀프 조인은 자기 자신과 조인하는 경우입니다.
.OUTER JOIN
: outer join 은 2개 이상의 테이블이 조인될 때 어느 한 쪽 테이블에는
해당하는 테이터가 존재하지 않는데 다른 쪽의 테이블에는 존재하는 경우 그 데이터는
출력되지 않는 문제를 해결하기 위해 사용되는 조인 기법이다.
: 필요시에 꼭 써야 하는 OUTER JOIN이지만 필요없을 때는 쓰지 말아야한다.
outer join은 모든 데이터를 다 가지고 올 때 full scan 을 하기 때문에
DB에 무리를 가할 수 있다. 자주 쓰지 않는 게 좋다.
ANSI
: select e.ename, d.dname
from emp e NATURAL JOIN dept d
where e.ename like '%T%';
.SUB Query(서브 쿼리)
: 서브 쿼리는 하나의 select 문장의 절 안에 포함된
또 하나의 select 문 입니다.
그렇기 때문에 서브 쿼리문을 포함하고 있는
쿼리문을 메인 쿼리, 포함된 또 하나의 쿼리문을 서브 쿼리라고 합니다.
서브 쿼리는 비교 연산자의 오른쪽에 기술해야 하고,
반드시 괄호안에 넣어야 합니다.
서브 쿼리는 메인 쿼리가 실행되기 전에 한 번만 실행 됩니다.
.단일행 Sub Query
: 서브 쿼리를 수행한 결과가 1건만 나오고,
이 결과를 메인 쿼리로 전달해서 메인 쿼리를 수행하게 된다.
: 단일행 서브 쿼리는 수행 결과가 오직 하나의 row로만
반환하는 서브 쿼리를 갖는 것을 말합니다.
메인 쿼리의 where 절에는 단일행 비교 연산자를 이용한다
= 같다
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다
<> 아니다
. 다중행 sub query
: 다중행 서브 쿼리는 반환되는 결과가
하나 이상의 행일 때 사용하는 서브 쿼리
: 다중행 서브 쿼리는
반드시 Multiple Row Operator(다중행 연산자)와
함께 사용해야 합니다.
종류 의미
IN 메인 쿼리의 비교 조건이 서브 쿼리의 결과 중에서
하나라도 일치 하면 참
ANY,SOME 메인 쿼리의 비교 조건이 서브 쿼리의
검색 결과와 하나 이상 일치하면 참
ALL 메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와
모든 값이 일치하면 참
EXISTS 메인 쿼리의 비교 조건이 서브 쿼리의
결과 중에서 하나라도 일치하면 참
검색 결과가 하나라도 존재하면 참
.ALL
: ALL 연산자는 메인 쿼리의 비교 조건이
서브 쿼리의 검색 결과와 *모두* 일치하여야 함
> ALL : 최대값 보다 큰 사람
< ALL : 최소값 보다 작은 사람
//비교는 모두와 하지만 결과적으로 그렇다는 말!
> ANY(SOME) : 최소값 보다 큰 사람 모두
< ANY(SOME) : 최대값 보다 작은 사람 모두