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