서브쿼리
Subquery
Subquery 종류
- 서브쿼리란 SELECT 문 안에서 다시 SELECT문을 사용하는 SQL문이다.
- FROM구에 SELECT문을 사용하면 인라인뷰
- SELECT문에 서브쿼리를 사용하면 스칼라 서브쿼리
- WHERE구에 SELECT문을 사용하면 서브쿼리
서브쿼리
-- 서브쿼리
SELECT * FROM 테이블 WHERE 칼럼 =
(SELECT 칼럼명 FROM 테이블명 WHERE 조건);
괄호 안에 SELECT문이 서브쿼리이고 바깥의 SELECT문이 MAIN 쿼리이다.
인라인 뷰
-- 인라인 뷰
SELECT * FROM (SELECT 칼럼명 FROM 테이블명 WHERE 조건) WHERE 조건;
FROM 구에 사용된 SELECT문은 인라인 뷰이다.
가상의 테이블을 만들어 거기서 데이터를 조회하는 방식의 쿼리문이다.
스칼라 서브쿼리
-- 스칼라 서브쿼리
SELECT *,(SELECT 칼럼명 FROM 테이블명) FROM 테이블 WHERE 조건;
SELECT문에 사용된 서브쿼리는 스칼라 서브쿼리이다.
반드시 한 행과 한 칼럼만 반환하며, 여러 행이 반환되면 오류가 발생한다.
단일 행 서브쿼리와 다중 행 서브쿼리
- 서브쿼리는 반환하는 행의 수에 따라 단일 행과 다중 행으로 구분된다.
서브쿼리 종류 | 설명 |
---|---|
단일 행 서브쿼리 | 서브쿼리를 실행하면 그 결과는 반드시 한 행만 조회 비교 연산자를 사용 |
다중 행 서브쿼리 | 서브쿼리를 실행하면 여러 개의 행이 조회 다중행 비교 연산자 IN, ANY, ALL, EXISTS 사용 |
다중행 쿼리 비교 연산자
다중 행 연산 | 설명 |
---|---|
IN | 메인쿼리의 비교조건이 서브쿼리의 결과 중 하나만 동일하면 참(OR) |
ALL | 결과가 모두 동일하면 참 |
ANY | IN메인쿼리의 비교조건이 서브쿼리의 결과 중 하나만 동일하면 참(OR) |
EXISTS | 결과가 하나라도 존재하면 참 |
연관 서브쿼리
- 연관 서브쿼리는 서브쿼리내에서 메인 쿼리 내의 칼럼을 사용하는 것을 의미한다.
댓글남기기