SQLD자격증공부/SQL활용

서브쿼리, 스칼라 서브쿼리, 인라인뷰, Exsits

김옹희 2023. 5. 11. 10:53

1. 서브쿼리(Sub Qeury)란?

  • 하나의 SQL에 포함되어 있는 또 다른 SQL을 지칭하는 말.
  • 서브쿼리는 대부분의 SQL절에서 사용이 가능하다.
    - SELECT, FROM, WHERE, HAVING, ORDER BY, SET 절 등...
  • 서브쿼리는 시작과 끝을 괄호로 감싸서 표현한다.
  • 서브쿼리는 사용되는 위취에 따라 단일행으로 출력되거나 복수형으로 출력 될 수 있다.
단일행 서브쿼리 =, <, >, <> 사용가능
다중행 서브쿼리 IN, ALL, ANY, EXISTS 사용가능
SELECT 절 스칼라 서브쿼리
FROM 절 인라인뷰
WHERE 절 중첩 서브쿼리, 서브쿼리

2. 스칼라 서브쿼리

  • SELECT 절에 사용이 된다.
  • 성능에 매우 불리하다.
select name            as 학생이름,
          (select major_title
            from major b
            where b.major_id = a.major_id) as 학과명
from student a

3. 인라인뷰

  • SQL의 핵심.
  • FROM절에 사용되는 서브쿼리
  • 동적 뷰 라고도 한다.
select name            as 학생이름,
          b.major_title as 학과명
from student a (select major_title, major_id
                          from major) b
where a.major_id = b.major_id;  
select *
from (select major_id, count(*) cnt
          from student
          group by major_id);

4. EXSITS, NOT EXSITS

  • 서브쿼리의 결과가 존재한다면 메인쿼리의 결과가 출력 되는 문법.
  • EXSITS는 다른 방법으로 구현이 가능 하다.
  • EXSITS에서는 ON절 사용이 안된다.
select *
from student s
where exsits (select 1
                      from major_outer m
                      where m_major_id = s.major_id);

select *
from student s
where not exsits (select 1
                      from major_outer m
                      where m_major_id = s.major_id);