-- 1. 서브 쿼리의 기본 개념
-- 2. 단일 행 서브 쿼리
-- SCOTT의 부서명을 알아내기 위한 서브 쿼리문부터 살펴봅시다.
select dname from dept where deptno=
-- 2. main 쿼리가 실행된다.
(select deptno from emp where ename = 'SCOTT');
-- 1. sub가 먼저 실행되고
-- 01. 서브 쿼리의 기본 개념
-- 서브쿼리는 하나의 SELECT 문장의 절 안에 포함된 또 하나의
-- SELECT 문장입니다.
-- 그렇기에 서브 쿼리를 포함하고 있는 쿼리문을 메인 쿼리, 포함된 또
-- 하나의 쿼리를 서브 쿼리라 합니다.
-- 서브 쿼리는 비교 연산자의 오른쪽에 기술해야 하고 반드시 괄호로
-- 둘러쌓아야 합니다.
-- 서브 쿼리는 메인 쿼리가 실행되기 이전에 한 번만 실행이 됩니다.
-- 02. 단일 행 서브 쿼리
-- 수행 결과가 오직 하나의 로우(행, row)만을 반환하는 서브 쿼리를 갖는 것을 말합니다.
-- WHERE 절에서는 단일 행 비교 연산자인 =,>,>=,<,<=,<>를 사용해야 합니다.
-- <탄탄히 다지기>
-- 1. SOCCT과 같은 부서에서 근무하는 사원의 이름과 부서 번호를 출력하는
-- SQL문을 작성해보시오.
select ename, deptno from emp where deptno=
(select deptno from emp where ename = 'SCOTT');
-- 2. SCOTT과 동일한 직급을 가진 사원을 출력하는 SQL문을 작성해보시오.
select * from emp where job=
(select job from emp where ename='SCOTT');
-- 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.
-- where 조건절엔 반드시 단일 행 조건이여야 한다.
select * from emp where job=
(select job from emp);
-- 3. SCOTT의 급여와 동일하거나 더 많이 받는 사원 명과 급여를 출력하시오.
select ename, sal from emp where sal >=
(select sal from emp where ename='SCOTT');
-- 4. DALLAS에서 근무하는 사원의 이름, 부서 번호를 출력하시오.
select ename, deptno from emp where deptno=
(select deptno from dept where loc='DALLAS');
-- 5. SALES(영업부) 부서에서 근무하는 모든 사원의 이름과 급여를 출력하시오.
select ename, sal from emp where deptno =
-- 모든 사원의 이름과 급여, deptno 부서번호와 같은거
(select deptno from dept where dname='SALES');
-- 어디서? dname이 SALES인 deptno와 같은거
-- 6. 직속상관이 KING인 사원의 이름과 급여를 출력하시오.
select ename, sal from emp where mgr=
(select empno from emp where ename='KING');
'Study > OracleDB' 카테고리의 다른 글
24강 오라클 SQL 서브 쿼리(3) (1) | 2022.09.10 |
---|---|
23강 오라클 SQL 서브 쿼리(2) (1) | 2022.09.10 |
21강 오라클 SQL Outer Join (1) | 2022.09.10 |
20강 오라클 SQL Self Join (4) | 2022.09.09 |
19강 오라클 SQL JOIN DATA (1) | 2022.09.09 |