데이터베이스 & SQL

서브 쿼리

황샐리 2022. 4. 5. 16:39

오늘은 서브쿼리에 대해서 학습해보도록 하겠습니다.

그냥 조건문이 좀 길어지는데 이제 문장을 넣는,,

조인과 결이 비슷하지만 다르다는것을 생각하면서 학습하도록 하겠습니다.

서브 쿼리는? where 연산자 뒤에 ()안쪽에 표기

 

1. 단일행 서브쿼리 (single row)

: 행이 하나만 나온거를 조건으로 한다고요.

서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리를 의미

>,< =, >=, <=, <>, != : 단일행 비교연산자

--단일행 SUB QUERY 실행결과가 행이 1개인 경우

--email이 'TFOX'인 사원의 입사일보다 이후에 입사한 사원의 명단..
--eamil, hire_date
SELECT EMAIL, HIRE_DATE
FROM EMPLOYEES
WHERE HIRE_DATE > (SELECT HIRE_DATE
                    FROM employees
                    WHERE EMAIL='TFOX')
ORDER BY 2;

 

--60번 부서의 사원들의 급여 보다 적게 받는 사원들
-- email, salary, department_id 출력

select email, salary, department_id
from employees
where salary < all (select salary
                    from employees 
                    where department_id=60)
order by 2;

 

2. 다중행 서브쿼리 (multi row)

서브쿼리의 실행 결과가 여러건인 서브쿼리를 의미

--다중행 서브쿼리에서 쓸 수 있는 연산자가 있음.
--in(다중행 결과가 올 수 있음)
--<all 다중행결과의 최소값보다 작은 경우
-->all 다중행결과의 최대값보다 큰 경우
--<any 다중행결과의 최대값보다 작은 경우
-->any 다중행결과의 최소값보다 큰 경우

-- exists

 

--부서별 제일 마지막에 입사한 사원의
--email, department_id, hire_date 출력

select email, department_id, hire_date from employees
where (department_id, hire_date) in(
                                    select department_id, max(hire_date)
                                    from employees 
                                    group by department_id
)
order by department_id;

 

 

3. 다중컬럼(muilti column) 서브쿼리

: 서브쿼리의 실행 결과가 여러 컬럼을 반환한다. 메인쿼리의 조건절에서 여러컬럼을 동시에 비교 가능.

  비교 컬럼의 개수, 순서가 동일해야함.

 

--job_id별로 해당 잡에서 최대 연봉을 받는 사원
select email, job_id, salary
from employees
where (job_id, salary) in (
                        select job_id, max(salary)
                        from employees
                        group by job_id)
order by 2;

Q. 서브쿼리에 대한 설명으로 올바른것은?

1. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용할 수 있다.

2. 서브쿼리는 SELECT 절, FROM절, HAVING절, ORDER BY 절 등에서 사용가능하다. (X)

-> order by 절에서는 사용할 수 없다.

3. 서브쿼리의 결과가 복수 행 결과를 반환하는 경우에는 =,<=,>=등의 연산자와 함께 사용 가능하다(X)

4. 연관(Correlated) 서브쿼리는 서브쿼리가 메인쿼리 컬럼을 포함하고 있는 형태의 서브쿼리이다.(x)

5. 다중 컬럼 서브쿼리는 서브쿼리의 결과로 여러 개의 컬럼이 반환되어 메인쿼리의 조건과 동시에 비교되는 것을 의미한다. (O) 

상호연관 서브쿼리

'데이터베이스 & SQL' 카테고리의 다른 글

단일행/복수행/join  (0) 2022.04.14
집계성 SQL  (0) 2022.04.14
db 프로시저 / 트리거  (0) 2022.04.14
hr 계정생성/select/Alias/중복제거/연산자  (0) 2022.03.31
데이터 베이스  (0) 2022.03.31