요약 |
SUBQUERY종류 SINGLE ROW SUBQUERY,MULTIPLE ROW SUBQUERY 존재 |
요령 SUB먼저 작성,MAIN 그다음에 작성 |
정의 SINGLE ROW란 SUBQUERY실행하면 한개의 정보, MULTIPLE ROW란 한번 실행하면 여러개의 정보 (연산자가 달라진다.) |
주의사항 SUBQUERY는 ()안에,ORDERBY절은 SUBQUERY안에서 무의미하나 FROM절 안에서는 가능하다. |
|
|
|
------------------------------------------------------------------------------------------------------------------------------------- |
종류? |
SINGLE ROW SUBQUERY |
MULTIPLE ROW SUBQUERY |
MULTIPLE COLUMN SUBQUERY |
|
jones 사원보다 더많은 급여를 받는 사원의 이름,급여? |
SQL> SELECT ENAME SAL |
2 FROM EMP |
3 WHERE SAL>=(SELECT SAL <-문장이 또 들어가있음. MAIN QUERY <-더많은 급여를 받는 사원의 이름,급여? |
4 FROM EMP |
5 WHERE ENAME='JONES'); sub query <-jones 사원 급여 |
|
SAL |
---------- |
JONES |
SCOTT |
KING |
FORD |
--------------------------------------------------------------------------------------------------------------------------------------- |
요령 |
|
1. sub먼저 작성 |
2. main그다음에 작성 |
BLAKE 사원보다 늦게 입사한 사원의 이름 입사일? |
SUB -> BLAKE 사원의 입사일 |
MAIN-> 늦게 입사한 사원의 입사일 |
|
|
sub |
select hiredate |
from emp |
where ename='blacke' |
|
|
main |
select ename,hiredate |
from emp |
where hiredate>'80/01/01' '80/01/01'을 sub로 대체해주면 된다. |
|
최종 |
SQL> select ename,hiredate |
2 from emp |
3 where hiredate> (select hiredate |
4 from emp |
5 where ename='BLAKE'); |
------------------------------------------------------------------------------------------------------------- |
sigle row subquery란? |
select ename,sal |
from emp |
where sal >= (select sal |
from emp |
where ename='BLAKE')라고 하면 SUBQUERY가 실행하고나면 값이 1개가 나오는데 그걸 SINGLEROWSUBQUERY라고한다. |
|
MULTIPLE ROW SUBQUERY란? |
select ename,sal |
from emp |
WHERE SAL >=(SELECT SAL |
FROM EMP |
WHERE DEPTNO=10); 이면 값이 여러개가 나오는데 그것을 MULTIPLE ROW SUBQUERY라고한다. |
|
MULTIPLE COLUMN SUBQUERY 란? |
SUBQUERY 안쪽에 SELECT SAL,COMM등 보여주는 열이 여러개인 것을 말한다. |
------------------------------------------------------------------------------------------------------------- |
주의 사항 |
1. SUBQUERY는 ()안에 있어야 한다. |
2. SINGLE ROW SUBQUERY(SRS) 앞에는 SINGLE ROW OPERATOR(SRO)가 있어야 한다. |
3. MULTIPLE ROW SUBQUERY(MRS) 앞에는 MULTIPLE ROW OPERATOR가(MRO) 와야한다. OPERATOR는 예를들어 비교연산자처럼 성질을 나타낸것. |
MRO는 IN처럼 여러개가 나오게 되는것. |
4.SUBQUERY 안에서는 ORDER BY절은 의미가 없다. |
따라서 지원하지 않는다. |
|단 ORACLE 8i 버전부터 | |
|from 절에서 사용되는 subquery의 경우| |
|지원한다 | |