본문 바로가기

Study/OracleDB

22강 오라클 SQL 서브 쿼리(1)

728x90

-- 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