SlideShare a Scribd company logo
SQL초보에서 Schema Objects까지
5. 서브 쿼리(SUB QUERY)
5.1 서브 쿼리(SUB QUERY) 개요
서브 쿼리는 SELECT한 결과를 조건 비교시 사용하거나 UPDATE, INSERT등에 사용되는 내장된
SELECT 문장이며 메인 쿼리 이전에 한번만 실행 된다. 테이블 자체의 데이터에 의존하는 조건으
로 테이블의 행을 검색할 필요가 있을 때 서브쿼리는 아주 유용하게 이용될 수 있다.
EMP 테이블에서 SMITH의 급여보다 급여가 많은 사람을 추출하는 경우
괄호로 싸인 부분이 서브 쿼리 인데 Inner Query or Sub Query 라고 하며 Inner Query의 결과를
비교 조건으로 사용하는 외부에 있는 것을 Main Query or Outer Query 라고 한다. 서브쿼리(Sub
Query)는 메인 쿼리 실행 전에 한번씩 실행되며 그 결과가 메인 쿼리(Main Query)에 전달된다.
[서브 쿼리 지침]
 서브 쿼리는 괄호로 싸야 한다.
 단일 행 및 복수 행 서브 쿼리는 연산자의 우측에 나타나야 한다.
 서브 쿼리에는 ORDER BY 절을 포함 할 수 없다.
5.2 단일행 서브쿼리(Single-Row Sub Query)
서브 쿼리에서 하나의 결과가 반환되는 구조이며 이와 같은 구조에서 사용되는 연산자는 단일
행 연산자( > , >= , < , <= , = , <>) 이다.
SELECT ENAME, SAL
FROM EMP
WHERE SAL
> (SELECT SAL FROM EMP
WHERE ENAME =‘SMITH’);
메인쿼리(main query)
서브쿼리(subquery)
--EMP 테이블에서 “SMITH”와 같은 JOB을 가지는 사원들의 ENAME, SAL, JOB을 추출하려 한다
고 하자. 만약 SMITH 사원의 JOB 이 “CLERK” 이라는 것을 알고 있다면 다음과 같이 쉽게 할
수 있을 것이다. 그러나 아래와 같은 경우 “SMITH” 사원의 JOB이 바뀌게 되면 어떻게 할 것인
가? “SMITH”의 JOB을 바뀔 때 마다 기억을 한다는 것은 어려운 일다. 그렇다고 질의(Query) 문
을 아래와 같이 매번 두 번 만드는 것도 번거러운 일 이다.
SQL> select job from emp
2 where ename = 'SMITH';
JOB
---------
CLERK
SQL> select ename, sal, job from emp
2 where job = 'CLERK';
ENAME SAL JOB
---------- ---------- ---------
SMITH 800 CLERK
ADAMS 1100 CLERK
JAMES 950 CLERK
MILLER 1300 CLERK
-- 위의 두 예문을 합친 단일 행 서브 쿼리 예문이다.
-- 서브 쿼리는 아래와 같이 테이블 자체의 데이터에 의존하는 비교 조건으로 데이터를 검색 할
때 유용 하다.
SQL> select ename, sal, job from emp
2 where job = (select job from emp
3 where ename = 'SMITH');
ENAME SAL JOB
---------- ---------- ---------
SMITH 800 CLERK
ADAMS 1100 CLERK
JAMES 950 CLERK
MILLER 1300 CLERK
--아래의 예문은 EMP 테이블에서 급여가 가장 적은 사원의 이름과 급여를 출력 하는 예문이다.
SQL> select ename, sal from emp
2 where sal = (select min(sal) from emp);
ENAME SAL
---------- ----------
SMITH 800
-- EMP 테이블에서 부서코드가 30번인 부서의 급여 최소값보다 해당 부서 급여의 최소값이 큰
부서만 출력하되 부서 순으로 오름차순으로 정렬 하시오. 이 예문에서 기억 해야 하는 사실은 첫
째 서브 쿼리는 WHERE절 뿐 아니라 HAVING절에서도 사용 가능하며 둘째 WHERE절이 각 행에
조건을 줘서 선택되는 행을 제어 하듯이 HAVING절은 GROUP BY에 의해 그룹화 되는 그룹에 조
건을 줄 때 사용하는 것으로 반드시 HAVING은 GROUP BY 뒤에 와야 하며, 셋째 HAVING이 사
용되면 대부분 GROUP BY가 있지만 GROUP BY 없는 HAVING의 사용도 가능 하다. 넷째 ORDER
BY절은 SELECT문의 마지막에 오며, 다섯째 SELECT절에 그룹 함수 외의 컬럼이 나타나면 반드시
GROUP BY절에 해당 컬럼이 나타나야 한다.
SQL> select deptno, min(sal) from emp
2 group by deptno
3 having min(sal) > (select min(sal) from emp
4 where deptno = 30)
5 order by deptno;
DEPTNO MIN(SAL)
---------- ----------
10 1300
--GROUP BY 없이 사용되는 HAVING 예문(테이블 전체를 하나의 그룹으로 간주)
--EMP 테이블의 SAL의 최대값은 5000 이다. 급여 평균은 2073.21429인 상태
SQL> select max(sal) from emp;
MAX(SAL)
----------
5000
SQL> select avg(sal) from emp;
AVG(SAL)
----------
2073.21429
--SAL의 최대값을 구하는데 SAL의 평균이 2000보다 크다고 했으므로 현재의 하나 밖에 없는 그
룹(테이블 전체)에는 SAL의 평균이 2073이므로 MAX(SAL)은 5000이 된다.
SQL> select max(sal) from emp
2 having avg(sal) > 2000;
MAX(SAL)
----------
5000
--EMP Table에는 여러 종류의 직무(JOB)가 있다. 다음 예문은 각 JOB의 평균 급여가 최대인
JOB과 그 평균 급여를 출력 하는 예문이다.
SQL> select job, avg(sal) from emp
2 group by job
3 having avg(sal) = (select max(avg(sal)) from emp
4 group by job);
JOB AVG(SAL)
--------- ----------
PRESIDENT 5000
--부서코드가 10인 사원들 중 최대/최소 급여를 받는 사원의 이름, 급여, 부서를 출력
SQL> select ename, sal, deptno from emp
2 where deptno = 10
3 and sal in ( (select max(sal) from emp where deptno = 10),
4 (select min(sal) from emp where deptno = 10)
5 );
ENAME SAL DEPTNO
---------- ---------- ----------
KING 5000 10
MILLER 1300 10
--SMITH와 같은 JOB, 같은 부서를 가지는 사원의 이름, 직무, 부서를 출력하는데 SMITH는 출력
하지 마시오
SQL> select ename, job, deptno from emp
2 where job = (select job from emp where ename = 'SMITH')
3 and deptno = (select deptno from emp where ename = 'SMITH')
4 and ename != 'SMITH';
ENAME JOB DEPTNO
---------- --------- ----------
ADAMS CLERK 20
5.2 복수행 서브쿼리(Multi-Row Sub Query)
서브 쿼리에서 여러 건의 결과가 반환되는 구조 이다. 이와 같은 구조에서 사용되는 연산자는
IN, ANY, SOME(ANY와 동일), ALL, EXISTS 등과 같은 복수 행 연산자 이다. 이 연산자들은 이전의
SQL 연산자 부분에 자세히 나와 있으니 참조하길 바라며 아래의 예문을 따라 하면서 이해해 보
자.
--EMP 테이블에서 각 부서별로 급여를 가장 적게 받는 사원의 부서, 이름, 급여를 출력 하는 예
문이다. IN 연산자 오른쪽 서브 쿼리에서 리턴되는 행(ROW)은 여러 건이다. 아마도 부서별로 가
장 적은 급여가 추출되어 Outer Query와 IN 연산자에 의해 비교되는 것이다. 결국 부서별로 급
여를 가장 적게 받는 사원을 선택 하게 되는데 IN연산자는 OR로 풀어 쓸 수 있음을 기억 하자.
SQL> select deptno, ename, sal from emp
2 where (deptno, sal) in (select deptno, min(sal) from emp
3 group by deptno);
DEPTNO ENAME SAL
------ ---------- ----------
30 JAMES 950
20 SMITH 800
10 MILLER 1300
-- 위와 같은 WHERE 비교를 PAIRWISE방식이라 한다. 즉 칼럼을 쌍으로 묶어서 비교하는 것이
다. 만약 아래처럼 쿼리문을 작성한다면 예상치 못한 결과가 나올 수도 있다. 현재 EMP 테이블
은 다행히도 10번 부서의 최소급여인 1300을 다른 부서사원들이 가지고 있지 않아서 PAREWISE
방식으로 안 하더라도 결과는 같이 나온다. 만약 20번 부서 사원이 1300을 가지고 있다면 그
사원도 출력될 것이다.
select deptno, ename, sal from emp
where sal in (select min(sal) from emp
group by deptno)
and deptno in (select distinct deptno from emp)
--간단히 ANY의 개념에 대해 이해하자. 여러 값 중 하나하고만 조건을 만족시키면 되므로 OR로
플어쓸 수 있다.
SQL> SELECT empno, sal
2 FROM emp
3 WHERE sal > ANY (2000, 3000, 4000);
EMPNO SAL
---------- ----------
7782 2450
7698 2850
7566 2975
7788 3000
7902 3000
7839 5000
6 개의 행이 선택되었습니다.
SQL> SELECT empno, sal
2 FROM emp
3 WHERE sal > 2000 OR sal > 3000 OR sal > 4000;
EMPNO SAL
---------- ----------
7782 2450
7698 2850
7566 2975
7788 3000
7902 3000
7839 5000
6 개의 행이 선택되었습니다.
--아래 예문은 ANY를 이용한 서브 쿼리 예문이다. EMP 테이블에서 부서코드가 10번인 사원 급
여의 임의 값보다 큰 급여를 가지는 사원의 이름, 급여를 출력하는 하는 것이다. 서브 쿼리에서
괄호안을 풀면 두번째 줄은 where sal > any (2450, 5000, 1300)의 의미가 되고 2450, 5000, 1300
을 대입하여 Outer Query를 수행 했을 때 하나라도 만족하면 되는 것이므로, where sal > 1300의
의미와 같은 것이다. 만약 ANY를 사용하고 등호를 사용 했다면 IN의 의미와 같다는 것도 기억
하자. 즉 sal = any (2450, 5000, 1300)과 sal in (2450, 5000, 1300)과 같은 의미이다.
SQL> select sal from emp
2 where deptno = 10;
SAL
----------
2450
5000
1300
SQL> select ename, sal, job from emp
2 where sal > any (select sal from emp
3 where deptno = 10);
ENAME SAL JOB
---------- ---------- ---------
ALLEN 1600 SALESMAN
JONES 2975 MANAGER
BLAKE 2850 MANAGER
CLARK 2450 MANAGER
SCOTT 3000 ANALYST
KING 5000 PRESIDENT
TURNER 1500 SALESMAN
FORD 3000 ANALYST
8 개의 행이 선택되었습니다.
--아래 예문은 sal = any (SELECT절) 과 sal in (SELECT절)과 같다는 것을 보이는 예문이다.
SQL> select ename, sal, job from emp
2 where sal = any (select sal from emp
3 where deptno = 10);
ENAME SAL JOB
---------- ---------- ---------
MILLER 1300 CLERK
CLARK 2450 MANAGER
KING 5000 PRESIDENT
SQL> select ename, sal, job from emp
2 where sal in (select sal from emp
3 where deptno = 10);
ENAME SAL JOB
---------- ---------- ---------
MILLER 1300 CLERK
CLARK 2450 MANAGER
KING 5000 PRESIDENT
-- 아래 ALL 예문을 보면 ALL의 의미에 대해 이해가 될 것이다. 모든 값을 만족하려면 결국
AND로 모든 것을 비교하는 것이다.
SQL> SELECT empno, ename, sal
2 FROM emp
3 WHERE sal > ALL (2000, 3000, 4000);
EMPNO ENAME SAL
---------- ---------- ----------
7839 KING 5000
SQL> SELECT empno, ename, sal
2 FROM emp
3 WHERE sal > 2000 AND sal > 3000 AND sal > 4000;
EMPNO ENAME SAL
---------- ---------- ----------
7839 KING 5000
--아래 예문도 ALL을 사용한 것이다. ALL은 서브 쿼리에서 리턴되는 데이터들 모두가 Outer
Query에서 조건을 만족시켜야 하는 것이다. 즉 sal > all (SELECT절)의 경우 SELECT절에서 추출되
는 자료의 최대값보다 많다는 의미이고, sal < all (SELECT절)의 경우 SELECT절에서 추출되는 자료
의 최소값보다 적다는 의미이다.
SQL> select ename, sal, job from emp
2 where sal > all (select sal from emp
3 where deptno = 20);
ENAME SAL JOB
---------- ---------- ---------------
KING 5000 PRESIDENT
-- ALL을 ANY를 이용하여 변경했다.
SQL> select ename, sal, job from emp
2 where not (sal <= any ( select sal from emp
3 where deptno = 20));
ENAME SAL JOB
---------- ---------- ---------------
KING 5000 PRESIDENT
SQL> select ename, sal, job from emp
2 where sal < all (select sal from emp
3 where deptno = 20);
선택된 레코드가 없습니다.
-- EXISTS실습을 위해 테이블을 하나 만들자.(EMP 테이블에서 10번 부서 사원들로 EMP_10 생
성)
SQL> create table emp_10 as select * from emp where deptno = 10;
테이블이 생성되었습니다.
-- 아래는 EMP 테이블 사원 중 EMP_10에 존재하는 사원들을 추출하는 예문이다.
SQL> SELECT empno, ename, sal
2 FROM emp e
3 WHERE EXISTS (SELECT 1 FROM emp_10 WHERE empno = e.empno);
EMPNO ENAME SAL
---------- ---------- ----------
7782 CLARK 2450
7839 KING 5000
7934 MILLER 1300
-- 아래는 UPDATE문에서 EXISTS를 사용하는 예문이다.
-- EMP 테이블에서 입사년도가 1980년인 사원이 존재하면 수당을 0으로 UPDATE
SQL> UPDATE emp e
2 SET comm = 0
3 WHERE EXISTS (SELECT 1
4 FROM emp
5 WHERE EMPNO = e.empno
6 AND to_char(hiredate,'YYYY') = '1980' );
1 행이 갱신되었습니다.
SQL> rollback;
롤백이 완료되었습니다.
5.3 상관 서브쿼리(Correlated Sub Query)
서브 쿼리와 메인쿼리간에 서로 상관 참조하는 쿼리로 Inner Query에서 Outer Query의 어떤 컬
럼을 이용하는 경우다. 일반적인 Query의 경우 서브 쿼리의 결과를 메인에서는 단순히 이용만 하
지만 상관 서브 쿼리에서는 서브 쿼리가 메인 쿼리의 값을 이용하여 값을 구하면 그 값을 다시
메인 쿼리에서 이용하는 구조이므로 서브쿼리는 값을 확인하는 확인자 역할을 하게된다. 예를 들
어 서브 쿼리 에서 10번 부서에서 가장 많은 급여를 받는 사람, 20번 부서에서 가장 많은 급여
를 받는 사람, 30번 부서에서 같은 결과를 구하고자 한다면 부서만 다르고 같은 내용을 입력 시켜
야 하므로 이 경우 상관 쿼리로 만들어 처리하면 편리 하다.
[상관 서브쿼리 실행순서]
(1) Outer query를 실행하여 행을 하나 읽는다.
(2) (1)에서 읽은행의 값을 이용하여 서브쿼리에서 필요한 값을 넣고 Subquery를 수행한다.
(3) (2)의 결과값으로 Outer query의 WHERE절을 평가하여 읽은 행의 선택여부를 결정한다. 참이면
데이터 추출, 아니면 버리고 Outer Query의 다음 레코드를 읽음
(4) Outer query의 테이블에 행이 없을 때까지 (1)-(3)을 반복 수행한다.
--각 부서의 최대 급여를 받는 사원의 부서코드, 이름, 급여를 출력하는데 부서코드 순으로 오름
차순 정렬하여 출력하는 예문 첫번째 상관서브쿼리로 구현
SQL> select deptno, ename, sal from emp e1
where sal = (select max(sal) from emp e2
where e1.deptno = e2.deptno)
order by deptno;
DEPTNO ENAME SAL
---------- ---------- ----------
10 KING 5000
20 SCOTT 3000
20 FORD 3000
30 BLAKE 2850
-- 두번째 Pairwise 서브쿼리로 구현
SQL> select ename, sal, deptno
from emp
where (deptno, sal ) in (select deptno, max(sal) from emp
group by deptno)
order by deptno;
-- 세번째 조인, 인라인뷰로 구현
SQL> select e1.ename, e1.sal, e1.deptno
from emp e1, ( select deptno, max(sal) as msal from emp group by deptno ) e2
where e1.deptno = e2.deptno
and e1.sal = e2.msal
order by e1.deptno;
--각 직무(JOB)별로 최대 급여를 받는 사원의 직무, 이름, 급여를 출력하는데 직무명으로 오름차순
정렬하여 출력하는 예문
SQL> select job, ename, sal from emp e1
where sal = (select max(sal) from emp e2
where e1.job = e2.job)
order by deptno;
JOB ENAME SAL
--------- ---------- ----------
PRESIDENT KING 5000
CLERK MILLER 1300
MANAGER JONES 2975
ANALYST SCOTT 3000
ANALYST FORD 3000
SALESMAN ALLEN 1600
6 개의 행이 선택되었습니다.
--자신이 속한 부서의 평균 급여보다 급여를 적게 받는 사원의 부서, 사원명, 급여를 출력하되 부
서 순으로 오름차순 정렬하여 출력
SQL> select deptno, ename, sal from emp e1
where sal < (select avg(sal) from emp e2
where e1.deptno = e2.deptno)
order by deptno;
DEPTNO ENAME SAL
---------- ---------- ----------
10 CLARK 2450
10 MILLER 1300
20 SMITH 800
20 ADAMS 1100
30 WARD 1250
30 JAMES 950
30 TURNER 1500
30 MARTIN 1250
--EMP 테이블에서 급여가 높은 사원 5명을 출력 하는 예문
SQL> select ename, sal from emp e1
where 5 > (select count(*) from emp e2
where e2.sal > e1.sal)
order by sal desc;
ENAME SAL
---------- ----------
KING 5000
SCOTT 3000
FORD 3000
JONES 2975
BLAKE 2850
--각 부서별로 급여가 높은 사람 2명씩 출력 하는 예문
SQL> select deptno, ename, sal from emp e1
where 2 > (select count(*) from emp e2
where e2.sal > e1.sal
and e2.deptno = e1.deptno)
order by deptno, sal desc;
DEPTNO ENAME SAL
---------- ---------- ----------
10 KING 5000
10 CLARK 2450
20 SCOTT 3000
20 FORD 3000
30 BLAKE 2850
30 ALLEN 1600
6 개의 행이 선택되었습니다.
--사원이 한명이라도 있는 부서명 출력
SQL> SELECT dname FROM dept d
WHERE EXISTS ( SELECT 1 FROM emp WHERE deptno = d.deptno);
DNAME
--------------
ACCOUNTING
RESEARCH
SALES

More Related Content

What's hot

Rownum
RownumRownum
#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
일반함수 및 조건식 1
일반함수 및 조건식 1일반함수 및 조건식 1
Sql 조건연산자를 이용한 조건검색(1)
Sql 조건연산자를 이용한 조건검색(1)Sql 조건연산자를 이용한 조건검색(1)
Sql 조건연산자를 이용한 조건검색(1)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Sql 조건연산자를 이용한 조건검색(2)
Sql 조건연산자를 이용한 조건검색(2)Sql 조건연산자를 이용한 조건검색(2)
Sql 조건연산자를 이용한 조건검색(2)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/구로디짙털단지역
#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/구로디짙털단지역#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/구로디짙털단지역
#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/구로디짙털단지역
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Sql기초강좌_select기본
Sql기초강좌_select기본Sql기초강좌_select기본
일반함수 및 조건식 2
일반함수 및 조건식 2일반함수 및 조건식 2
집합함수(2)
집합함수(2)집합함수(2)
Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
집합함수(1)
집합함수(1)집합함수(1)
숫자및날짜함수(2)
숫자및날짜함수(2)숫자및날짜함수(2)
효율적인Sql작성방법 4주차
효율적인Sql작성방법 4주차효율적인Sql작성방법 4주차
효율적인Sql작성방법 4주차
희동 강
 
Sql 산술표현식
Sql 산술표현식Sql 산술표현식
문자함수(2)
문자함수(2)문자함수(2)
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
문자함수(1)
문자함수(1)문자함수(1)
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차
희동 강
 

What's hot (20)

Rownum
RownumRownum
Rownum
 
#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
 
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
[오라클교육/닷넷교육/자바교육/SQL기초/스프링학원/국비지원학원/자마린교육]#16.SQL초보에서 Schema Objects까지
 
일반함수 및 조건식 1
일반함수 및 조건식 1일반함수 및 조건식 1
일반함수 및 조건식 1
 
Sql 조건연산자를 이용한 조건검색(1)
Sql 조건연산자를 이용한 조건검색(1)Sql 조건연산자를 이용한 조건검색(1)
Sql 조건연산자를 이용한 조건검색(1)
 
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
 
Sql 조건연산자를 이용한 조건검색(2)
Sql 조건연산자를 이용한 조건검색(2)Sql 조건연산자를 이용한 조건검색(2)
Sql 조건연산자를 이용한 조건검색(2)
 
#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/구로디짙털단지역
#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/구로디짙털단지역#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/구로디짙털단지역
#17.SQL초보에서 Schema Objects까지_오라클교육/SQL기초교육/구로IT학원/구로디짙털단지역
 
Sql기초강좌_select기본
Sql기초강좌_select기본Sql기초강좌_select기본
Sql기초강좌_select기본
 
일반함수 및 조건식 2
일반함수 및 조건식 2일반함수 및 조건식 2
일반함수 및 조건식 2
 
집합함수(2)
집합함수(2)집합함수(2)
집합함수(2)
 
Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육Sql기초강좌2_SET AUTOTRACE_SQL교육
Sql기초강좌2_SET AUTOTRACE_SQL교육
 
집합함수(1)
집합함수(1)집합함수(1)
집합함수(1)
 
숫자및날짜함수(2)
숫자및날짜함수(2)숫자및날짜함수(2)
숫자및날짜함수(2)
 
효율적인Sql작성방법 4주차
효율적인Sql작성방법 4주차효율적인Sql작성방법 4주차
효율적인Sql작성방법 4주차
 
Sql 산술표현식
Sql 산술표현식Sql 산술표현식
Sql 산술표현식
 
문자함수(2)
문자함수(2)문자함수(2)
문자함수(2)
 
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
 
문자함수(1)
문자함수(1)문자함수(1)
문자함수(1)
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차
 

Viewers also liked

(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리
(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리
(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(IT고급기술교육)탑크리에듀교육센터_자바/SQL/스프링/닷넷/모바일앱/퍼블리싱/펌웨어실무교육센터
(IT고급기술교육)탑크리에듀교육센터_자바/SQL/스프링/닷넷/모바일앱/퍼블리싱/펌웨어실무교육센터(IT고급기술교육)탑크리에듀교육센터_자바/SQL/스프링/닷넷/모바일앱/퍼블리싱/펌웨어실무교육센터
(IT고급기술교육)탑크리에듀교육센터_자바/SQL/스프링/닷넷/모바일앱/퍼블리싱/펌웨어실무교육센터
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#23.SQL초보에서 Schema Objects까지_SQL기초교육/오라클교육/국비지원환급교육/재직자교육/구로IT학원추천
#23.SQL초보에서 Schema Objects까지_SQL기초교육/오라클교육/국비지원환급교육/재직자교육/구로IT학원추천#23.SQL초보에서 Schema Objects까지_SQL기초교육/오라클교육/국비지원환급교육/재직자교육/구로IT학원추천
#23.SQL초보에서 Schema Objects까지_SQL기초교육/오라클교육/국비지원환급교육/재직자교육/구로IT학원추천
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Viewers also liked (7)

(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리
(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리
(JPA 엔티티 매니저)JPA 기초강좌, 엔티티 매니저. 엔티티 매니저팩토리
 
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
 
(IT고급기술교육)탑크리에듀교육센터_자바/SQL/스프링/닷넷/모바일앱/퍼블리싱/펌웨어실무교육센터
(IT고급기술교육)탑크리에듀교육센터_자바/SQL/스프링/닷넷/모바일앱/퍼블리싱/펌웨어실무교육센터(IT고급기술교육)탑크리에듀교육센터_자바/SQL/스프링/닷넷/모바일앱/퍼블리싱/펌웨어실무교육센터
(IT고급기술교육)탑크리에듀교육센터_자바/SQL/스프링/닷넷/모바일앱/퍼블리싱/펌웨어실무교육센터
 
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스  ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
NCS기반 Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 ☆무료강의자료 제공/ 구로오라클학원, 탑크리에...
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
#23.SQL초보에서 Schema Objects까지_SQL기초교육/오라클교육/국비지원환급교육/재직자교육/구로IT학원추천
#23.SQL초보에서 Schema Objects까지_SQL기초교육/오라클교육/국비지원환급교육/재직자교육/구로IT학원추천#23.SQL초보에서 Schema Objects까지_SQL기초교육/오라클교육/국비지원환급교육/재직자교육/구로IT학원추천
#23.SQL초보에서 Schema Objects까지_SQL기초교육/오라클교육/국비지원환급교육/재직자교육/구로IT학원추천
 
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
[구로국비지원IT학원/재직자환급/오라클교육/SQL기초]#21.SQL초보에서 Schema Objects까지
 

Similar to 오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지

5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
6.4 hints for access paths(index)
6.4 hints for access paths(index)6.4 hints for access paths(index)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
1.8 튜닝의도구 dbms xplan
1.8 튜닝의도구 dbms xplan1.8 튜닝의도구 dbms xplan
3.2 실행계획 sql 연산 (concatenation)
3.2 실행계획 sql 연산 (concatenation)3.2 실행계획 sql 연산 (concatenation)
3.2 실행계획 sql 연산 (concatenation)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Sql 합성연산자
Sql 합성연산자Sql 합성연산자
제6장조인과서브쿼리
제6장조인과서브쿼리제6장조인과서브쿼리
제6장조인과서브쿼리
WooYeon Lee
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차
희동 강
 
1.5 literal sql &amp; bind variable sql
1.5 literal sql &amp; bind variable sql1.5 literal sql &amp; bind variable sql
Any(some),all,exists(2)
Any(some),all,exists(2)Any(some),all,exists(2)
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
엑셈
 

Similar to 오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지 (18)

5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
(오라클SQL기초강좌)상관 서브쿼리(Correlated Sub Query)
 
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
3.6 실행계획 SQL 연산 (NESTED LOOP SEMI-JOIN)
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
 
6.4 hints for access paths(index)
6.4 hints for access paths(index)6.4 hints for access paths(index)
6.4 hints for access paths(index)
 
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
 
1.8 튜닝의도구 dbms xplan
1.8 튜닝의도구 dbms xplan1.8 튜닝의도구 dbms xplan
1.8 튜닝의도구 dbms xplan
 
3.2 실행계획 sql 연산 (concatenation)
3.2 실행계획 sql 연산 (concatenation)3.2 실행계획 sql 연산 (concatenation)
3.2 실행계획 sql 연산 (concatenation)
 
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
3.7 실행계획 SQL 연산 (INDEX RANGE SCAN DESCENDING, INLIST ITERATIOR)
 
Sql 합성연산자
Sql 합성연산자Sql 합성연산자
Sql 합성연산자
 
제6장조인과서브쿼리
제6장조인과서브쿼리제6장조인과서브쿼리
제6장조인과서브쿼리
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차
 
1.5 literal sql &amp; bind variable sql
1.5 literal sql &amp; bind variable sql1.5 literal sql &amp; bind variable sql
1.5 literal sql &amp; bind variable sql
 
Any(some),all,exists(2)
Any(some),all,exists(2)Any(some),all,exists(2)
Any(some),all,exists(2)
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
(오라클,SQL기초강좌)서브쿼리에서 사용되는 Any(SOME), ALL, EXISTS 연산자 이론 및 실습예문_오라클강좌,SQL,PLSQL...
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리)

자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 

More from 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
 

오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지

  • 1. SQL초보에서 Schema Objects까지 5. 서브 쿼리(SUB QUERY) 5.1 서브 쿼리(SUB QUERY) 개요 서브 쿼리는 SELECT한 결과를 조건 비교시 사용하거나 UPDATE, INSERT등에 사용되는 내장된 SELECT 문장이며 메인 쿼리 이전에 한번만 실행 된다. 테이블 자체의 데이터에 의존하는 조건으 로 테이블의 행을 검색할 필요가 있을 때 서브쿼리는 아주 유용하게 이용될 수 있다. EMP 테이블에서 SMITH의 급여보다 급여가 많은 사람을 추출하는 경우 괄호로 싸인 부분이 서브 쿼리 인데 Inner Query or Sub Query 라고 하며 Inner Query의 결과를 비교 조건으로 사용하는 외부에 있는 것을 Main Query or Outer Query 라고 한다. 서브쿼리(Sub Query)는 메인 쿼리 실행 전에 한번씩 실행되며 그 결과가 메인 쿼리(Main Query)에 전달된다. [서브 쿼리 지침]  서브 쿼리는 괄호로 싸야 한다.  단일 행 및 복수 행 서브 쿼리는 연산자의 우측에 나타나야 한다.  서브 쿼리에는 ORDER BY 절을 포함 할 수 없다. 5.2 단일행 서브쿼리(Single-Row Sub Query) 서브 쿼리에서 하나의 결과가 반환되는 구조이며 이와 같은 구조에서 사용되는 연산자는 단일 행 연산자( > , >= , < , <= , = , <>) 이다. SELECT ENAME, SAL FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME =‘SMITH’); 메인쿼리(main query) 서브쿼리(subquery)
  • 2. --EMP 테이블에서 “SMITH”와 같은 JOB을 가지는 사원들의 ENAME, SAL, JOB을 추출하려 한다 고 하자. 만약 SMITH 사원의 JOB 이 “CLERK” 이라는 것을 알고 있다면 다음과 같이 쉽게 할 수 있을 것이다. 그러나 아래와 같은 경우 “SMITH” 사원의 JOB이 바뀌게 되면 어떻게 할 것인 가? “SMITH”의 JOB을 바뀔 때 마다 기억을 한다는 것은 어려운 일다. 그렇다고 질의(Query) 문 을 아래와 같이 매번 두 번 만드는 것도 번거러운 일 이다. SQL> select job from emp 2 where ename = 'SMITH'; JOB --------- CLERK SQL> select ename, sal, job from emp 2 where job = 'CLERK'; ENAME SAL JOB ---------- ---------- --------- SMITH 800 CLERK ADAMS 1100 CLERK JAMES 950 CLERK MILLER 1300 CLERK -- 위의 두 예문을 합친 단일 행 서브 쿼리 예문이다. -- 서브 쿼리는 아래와 같이 테이블 자체의 데이터에 의존하는 비교 조건으로 데이터를 검색 할 때 유용 하다. SQL> select ename, sal, job from emp 2 where job = (select job from emp 3 where ename = 'SMITH'); ENAME SAL JOB ---------- ---------- --------- SMITH 800 CLERK ADAMS 1100 CLERK JAMES 950 CLERK MILLER 1300 CLERK --아래의 예문은 EMP 테이블에서 급여가 가장 적은 사원의 이름과 급여를 출력 하는 예문이다. SQL> select ename, sal from emp
  • 3. 2 where sal = (select min(sal) from emp); ENAME SAL ---------- ---------- SMITH 800 -- EMP 테이블에서 부서코드가 30번인 부서의 급여 최소값보다 해당 부서 급여의 최소값이 큰 부서만 출력하되 부서 순으로 오름차순으로 정렬 하시오. 이 예문에서 기억 해야 하는 사실은 첫 째 서브 쿼리는 WHERE절 뿐 아니라 HAVING절에서도 사용 가능하며 둘째 WHERE절이 각 행에 조건을 줘서 선택되는 행을 제어 하듯이 HAVING절은 GROUP BY에 의해 그룹화 되는 그룹에 조 건을 줄 때 사용하는 것으로 반드시 HAVING은 GROUP BY 뒤에 와야 하며, 셋째 HAVING이 사 용되면 대부분 GROUP BY가 있지만 GROUP BY 없는 HAVING의 사용도 가능 하다. 넷째 ORDER BY절은 SELECT문의 마지막에 오며, 다섯째 SELECT절에 그룹 함수 외의 컬럼이 나타나면 반드시 GROUP BY절에 해당 컬럼이 나타나야 한다. SQL> select deptno, min(sal) from emp 2 group by deptno 3 having min(sal) > (select min(sal) from emp 4 where deptno = 30) 5 order by deptno; DEPTNO MIN(SAL) ---------- ---------- 10 1300 --GROUP BY 없이 사용되는 HAVING 예문(테이블 전체를 하나의 그룹으로 간주) --EMP 테이블의 SAL의 최대값은 5000 이다. 급여 평균은 2073.21429인 상태 SQL> select max(sal) from emp; MAX(SAL) ---------- 5000 SQL> select avg(sal) from emp; AVG(SAL) ---------- 2073.21429 --SAL의 최대값을 구하는데 SAL의 평균이 2000보다 크다고 했으므로 현재의 하나 밖에 없는 그 룹(테이블 전체)에는 SAL의 평균이 2073이므로 MAX(SAL)은 5000이 된다.
  • 4. SQL> select max(sal) from emp 2 having avg(sal) > 2000; MAX(SAL) ---------- 5000 --EMP Table에는 여러 종류의 직무(JOB)가 있다. 다음 예문은 각 JOB의 평균 급여가 최대인 JOB과 그 평균 급여를 출력 하는 예문이다. SQL> select job, avg(sal) from emp 2 group by job 3 having avg(sal) = (select max(avg(sal)) from emp 4 group by job); JOB AVG(SAL) --------- ---------- PRESIDENT 5000 --부서코드가 10인 사원들 중 최대/최소 급여를 받는 사원의 이름, 급여, 부서를 출력 SQL> select ename, sal, deptno from emp 2 where deptno = 10 3 and sal in ( (select max(sal) from emp where deptno = 10), 4 (select min(sal) from emp where deptno = 10) 5 ); ENAME SAL DEPTNO ---------- ---------- ---------- KING 5000 10 MILLER 1300 10 --SMITH와 같은 JOB, 같은 부서를 가지는 사원의 이름, 직무, 부서를 출력하는데 SMITH는 출력 하지 마시오 SQL> select ename, job, deptno from emp 2 where job = (select job from emp where ename = 'SMITH') 3 and deptno = (select deptno from emp where ename = 'SMITH') 4 and ename != 'SMITH'; ENAME JOB DEPTNO ---------- --------- ----------
  • 5. ADAMS CLERK 20 5.2 복수행 서브쿼리(Multi-Row Sub Query) 서브 쿼리에서 여러 건의 결과가 반환되는 구조 이다. 이와 같은 구조에서 사용되는 연산자는 IN, ANY, SOME(ANY와 동일), ALL, EXISTS 등과 같은 복수 행 연산자 이다. 이 연산자들은 이전의 SQL 연산자 부분에 자세히 나와 있으니 참조하길 바라며 아래의 예문을 따라 하면서 이해해 보 자. --EMP 테이블에서 각 부서별로 급여를 가장 적게 받는 사원의 부서, 이름, 급여를 출력 하는 예 문이다. IN 연산자 오른쪽 서브 쿼리에서 리턴되는 행(ROW)은 여러 건이다. 아마도 부서별로 가 장 적은 급여가 추출되어 Outer Query와 IN 연산자에 의해 비교되는 것이다. 결국 부서별로 급 여를 가장 적게 받는 사원을 선택 하게 되는데 IN연산자는 OR로 풀어 쓸 수 있음을 기억 하자. SQL> select deptno, ename, sal from emp 2 where (deptno, sal) in (select deptno, min(sal) from emp 3 group by deptno); DEPTNO ENAME SAL ------ ---------- ---------- 30 JAMES 950 20 SMITH 800 10 MILLER 1300 -- 위와 같은 WHERE 비교를 PAIRWISE방식이라 한다. 즉 칼럼을 쌍으로 묶어서 비교하는 것이 다. 만약 아래처럼 쿼리문을 작성한다면 예상치 못한 결과가 나올 수도 있다. 현재 EMP 테이블 은 다행히도 10번 부서의 최소급여인 1300을 다른 부서사원들이 가지고 있지 않아서 PAREWISE 방식으로 안 하더라도 결과는 같이 나온다. 만약 20번 부서 사원이 1300을 가지고 있다면 그 사원도 출력될 것이다. select deptno, ename, sal from emp where sal in (select min(sal) from emp group by deptno) and deptno in (select distinct deptno from emp) --간단히 ANY의 개념에 대해 이해하자. 여러 값 중 하나하고만 조건을 만족시키면 되므로 OR로 플어쓸 수 있다.
  • 6. SQL> SELECT empno, sal 2 FROM emp 3 WHERE sal > ANY (2000, 3000, 4000); EMPNO SAL ---------- ---------- 7782 2450 7698 2850 7566 2975 7788 3000 7902 3000 7839 5000 6 개의 행이 선택되었습니다. SQL> SELECT empno, sal 2 FROM emp 3 WHERE sal > 2000 OR sal > 3000 OR sal > 4000; EMPNO SAL ---------- ---------- 7782 2450 7698 2850 7566 2975 7788 3000 7902 3000 7839 5000 6 개의 행이 선택되었습니다. --아래 예문은 ANY를 이용한 서브 쿼리 예문이다. EMP 테이블에서 부서코드가 10번인 사원 급 여의 임의 값보다 큰 급여를 가지는 사원의 이름, 급여를 출력하는 하는 것이다. 서브 쿼리에서 괄호안을 풀면 두번째 줄은 where sal > any (2450, 5000, 1300)의 의미가 되고 2450, 5000, 1300 을 대입하여 Outer Query를 수행 했을 때 하나라도 만족하면 되는 것이므로, where sal > 1300의 의미와 같은 것이다. 만약 ANY를 사용하고 등호를 사용 했다면 IN의 의미와 같다는 것도 기억 하자. 즉 sal = any (2450, 5000, 1300)과 sal in (2450, 5000, 1300)과 같은 의미이다. SQL> select sal from emp
  • 7. 2 where deptno = 10; SAL ---------- 2450 5000 1300 SQL> select ename, sal, job from emp 2 where sal > any (select sal from emp 3 where deptno = 10); ENAME SAL JOB ---------- ---------- --------- ALLEN 1600 SALESMAN JONES 2975 MANAGER BLAKE 2850 MANAGER CLARK 2450 MANAGER SCOTT 3000 ANALYST KING 5000 PRESIDENT TURNER 1500 SALESMAN FORD 3000 ANALYST 8 개의 행이 선택되었습니다. --아래 예문은 sal = any (SELECT절) 과 sal in (SELECT절)과 같다는 것을 보이는 예문이다. SQL> select ename, sal, job from emp 2 where sal = any (select sal from emp 3 where deptno = 10); ENAME SAL JOB ---------- ---------- --------- MILLER 1300 CLERK CLARK 2450 MANAGER KING 5000 PRESIDENT SQL> select ename, sal, job from emp 2 where sal in (select sal from emp 3 where deptno = 10);
  • 8. ENAME SAL JOB ---------- ---------- --------- MILLER 1300 CLERK CLARK 2450 MANAGER KING 5000 PRESIDENT -- 아래 ALL 예문을 보면 ALL의 의미에 대해 이해가 될 것이다. 모든 값을 만족하려면 결국 AND로 모든 것을 비교하는 것이다. SQL> SELECT empno, ename, sal 2 FROM emp 3 WHERE sal > ALL (2000, 3000, 4000); EMPNO ENAME SAL ---------- ---------- ---------- 7839 KING 5000 SQL> SELECT empno, ename, sal 2 FROM emp 3 WHERE sal > 2000 AND sal > 3000 AND sal > 4000; EMPNO ENAME SAL ---------- ---------- ---------- 7839 KING 5000 --아래 예문도 ALL을 사용한 것이다. ALL은 서브 쿼리에서 리턴되는 데이터들 모두가 Outer Query에서 조건을 만족시켜야 하는 것이다. 즉 sal > all (SELECT절)의 경우 SELECT절에서 추출되 는 자료의 최대값보다 많다는 의미이고, sal < all (SELECT절)의 경우 SELECT절에서 추출되는 자료 의 최소값보다 적다는 의미이다. SQL> select ename, sal, job from emp 2 where sal > all (select sal from emp 3 where deptno = 20); ENAME SAL JOB ---------- ---------- --------------- KING 5000 PRESIDENT -- ALL을 ANY를 이용하여 변경했다. SQL> select ename, sal, job from emp
  • 9. 2 where not (sal <= any ( select sal from emp 3 where deptno = 20)); ENAME SAL JOB ---------- ---------- --------------- KING 5000 PRESIDENT SQL> select ename, sal, job from emp 2 where sal < all (select sal from emp 3 where deptno = 20); 선택된 레코드가 없습니다. -- EXISTS실습을 위해 테이블을 하나 만들자.(EMP 테이블에서 10번 부서 사원들로 EMP_10 생 성) SQL> create table emp_10 as select * from emp where deptno = 10; 테이블이 생성되었습니다. -- 아래는 EMP 테이블 사원 중 EMP_10에 존재하는 사원들을 추출하는 예문이다. SQL> SELECT empno, ename, sal 2 FROM emp e 3 WHERE EXISTS (SELECT 1 FROM emp_10 WHERE empno = e.empno); EMPNO ENAME SAL ---------- ---------- ---------- 7782 CLARK 2450 7839 KING 5000 7934 MILLER 1300 -- 아래는 UPDATE문에서 EXISTS를 사용하는 예문이다. -- EMP 테이블에서 입사년도가 1980년인 사원이 존재하면 수당을 0으로 UPDATE SQL> UPDATE emp e 2 SET comm = 0 3 WHERE EXISTS (SELECT 1 4 FROM emp 5 WHERE EMPNO = e.empno 6 AND to_char(hiredate,'YYYY') = '1980' ); 1 행이 갱신되었습니다.
  • 10. SQL> rollback; 롤백이 완료되었습니다. 5.3 상관 서브쿼리(Correlated Sub Query) 서브 쿼리와 메인쿼리간에 서로 상관 참조하는 쿼리로 Inner Query에서 Outer Query의 어떤 컬 럼을 이용하는 경우다. 일반적인 Query의 경우 서브 쿼리의 결과를 메인에서는 단순히 이용만 하 지만 상관 서브 쿼리에서는 서브 쿼리가 메인 쿼리의 값을 이용하여 값을 구하면 그 값을 다시 메인 쿼리에서 이용하는 구조이므로 서브쿼리는 값을 확인하는 확인자 역할을 하게된다. 예를 들 어 서브 쿼리 에서 10번 부서에서 가장 많은 급여를 받는 사람, 20번 부서에서 가장 많은 급여 를 받는 사람, 30번 부서에서 같은 결과를 구하고자 한다면 부서만 다르고 같은 내용을 입력 시켜 야 하므로 이 경우 상관 쿼리로 만들어 처리하면 편리 하다. [상관 서브쿼리 실행순서] (1) Outer query를 실행하여 행을 하나 읽는다. (2) (1)에서 읽은행의 값을 이용하여 서브쿼리에서 필요한 값을 넣고 Subquery를 수행한다. (3) (2)의 결과값으로 Outer query의 WHERE절을 평가하여 읽은 행의 선택여부를 결정한다. 참이면 데이터 추출, 아니면 버리고 Outer Query의 다음 레코드를 읽음 (4) Outer query의 테이블에 행이 없을 때까지 (1)-(3)을 반복 수행한다. --각 부서의 최대 급여를 받는 사원의 부서코드, 이름, 급여를 출력하는데 부서코드 순으로 오름 차순 정렬하여 출력하는 예문 첫번째 상관서브쿼리로 구현 SQL> select deptno, ename, sal from emp e1 where sal = (select max(sal) from emp e2 where e1.deptno = e2.deptno) order by deptno; DEPTNO ENAME SAL ---------- ---------- ---------- 10 KING 5000 20 SCOTT 3000 20 FORD 3000 30 BLAKE 2850 -- 두번째 Pairwise 서브쿼리로 구현
  • 11. SQL> select ename, sal, deptno from emp where (deptno, sal ) in (select deptno, max(sal) from emp group by deptno) order by deptno; -- 세번째 조인, 인라인뷰로 구현 SQL> select e1.ename, e1.sal, e1.deptno from emp e1, ( select deptno, max(sal) as msal from emp group by deptno ) e2 where e1.deptno = e2.deptno and e1.sal = e2.msal order by e1.deptno; --각 직무(JOB)별로 최대 급여를 받는 사원의 직무, 이름, 급여를 출력하는데 직무명으로 오름차순 정렬하여 출력하는 예문 SQL> select job, ename, sal from emp e1 where sal = (select max(sal) from emp e2 where e1.job = e2.job) order by deptno; JOB ENAME SAL --------- ---------- ---------- PRESIDENT KING 5000 CLERK MILLER 1300 MANAGER JONES 2975 ANALYST SCOTT 3000 ANALYST FORD 3000 SALESMAN ALLEN 1600 6 개의 행이 선택되었습니다. --자신이 속한 부서의 평균 급여보다 급여를 적게 받는 사원의 부서, 사원명, 급여를 출력하되 부 서 순으로 오름차순 정렬하여 출력 SQL> select deptno, ename, sal from emp e1 where sal < (select avg(sal) from emp e2 where e1.deptno = e2.deptno) order by deptno;
  • 12. DEPTNO ENAME SAL ---------- ---------- ---------- 10 CLARK 2450 10 MILLER 1300 20 SMITH 800 20 ADAMS 1100 30 WARD 1250 30 JAMES 950 30 TURNER 1500 30 MARTIN 1250 --EMP 테이블에서 급여가 높은 사원 5명을 출력 하는 예문 SQL> select ename, sal from emp e1 where 5 > (select count(*) from emp e2 where e2.sal > e1.sal) order by sal desc; ENAME SAL ---------- ---------- KING 5000 SCOTT 3000 FORD 3000 JONES 2975 BLAKE 2850 --각 부서별로 급여가 높은 사람 2명씩 출력 하는 예문 SQL> select deptno, ename, sal from emp e1 where 2 > (select count(*) from emp e2 where e2.sal > e1.sal and e2.deptno = e1.deptno) order by deptno, sal desc; DEPTNO ENAME SAL ---------- ---------- ---------- 10 KING 5000 10 CLARK 2450 20 SCOTT 3000 20 FORD 3000 30 BLAKE 2850
  • 13. 30 ALLEN 1600 6 개의 행이 선택되었습니다. --사원이 한명이라도 있는 부서명 출력 SQL> SELECT dname FROM dept d WHERE EXISTS ( SELECT 1 FROM emp WHERE deptno = d.deptno); DNAME -------------- ACCOUNTING RESEARCH SALES