서브쿼리 ( Sub Query )
▶ 하나의 SQL 명령문 처리 결과를 다른 SQL 명령문에 전달하기 위하여 두 개 이상의 SQL 명령문을 하나의
SQL 명령문으로 연결한다. 서브쿼리를 포함하는 SQL 명령문을 메인 쿼리라고 한다.
▶ 메인 쿼리에서는 ORDER BY 절을 사용할 수 있고, 서브 쿼리에서는 사용이 불가능하다.
1. 단일행 서브쿼리
▶ 서브쿼리의 결과로 하나의 행만 메인쿼리에 반환한다.
▶ 메인쿼리의 조건절에서 서브쿼리의 결과와 비교할 경우에는 반드시 단일 행 비교 연산자 중의 하나를 사용한다.
▶ 비교 연산자 ( =, >, >=, <, <=, <> 등)
SELECT [컬럼명]
FROM [테이블명]
WHERE [컬럼명] = (SELECT [컬럼명]
FROM [테이블명]
WHERE [조건]);
2. 다중행 서브쿼리
▶ 서브쿼리의 검색 결과로 하나 이상의 행을 메인 쿼리에 전달한다.
▶ 메인 쿼리의 조건절에서 서브쿼리의 결과와 비교할 시 반드시 IN, EXISTS 등 다중 행 비교 연산자를 사용한다.
SELECT [컬럼명]
FROM [테이블명]
WHERE [컬럼명] IN (SELECT [컬럼명]
FROM [테이블명]
WHERE [조건]);
3. 인라인 뷰( INLINE VIEW )
▶ FROM 절에 사용하는 서브쿼리
▶ 서브쿼리가 FROM 절에 사용되는 경우 무조건 ALIAS 필요
SELECT [A.컬럼명]
FROM [테이블명] A
INNER JOIN (SELECT [컬럼명]
FROM [테이블명]
WHERE [조건]) B
ON A.[컬럼명] = B.[컬럼명];
4. GROUP BY
▶ 테이블에서 검색된 행들을 특정 열을 기준으로 나눈다.
▶ 집계 함수를 GROUP BY 절과 함께 사용하면, 그룹별로 개수, 합계, 평균 등을 구할 수 있다.
▶ 주의 사항으로 GROUP BY 절에 명시하지 않은 열을 SELECT절에서 사용하면 에러가 발생한다.
SELECT [집계함수], [컬럼명] FROM [테이블명] GROUP BY [컬럼명];
-- 예시 --
SELECT COUNT(*), LOCATION FROM CUSTOMER GROUP BY LOCATION;
5. GROUP BY HAVING
▶ GROUP BY 절에서 명시한 열 이름에 의해 그룹으로 분류 후, 각 그룹에 대해 HAVING 절의 검색 조건을 적용한다.
▶ HAVING 절은 반드시 GROUP BY 절과 함께 사용하고, WHERE 절의 기능과 비슷하다.
SELECT [집계함수], [컬럼명] FROM [테이블명] GROUP BY [컬럼명] HAVING [조건];
-- 예시 --
SELECT COUNT(*), LOCATION FROM CUSTOMER GROUP BY LOCATION HAVING COUNT(*) > 5;
'데이터베이스' 카테고리의 다른 글
기본 SQL Query문 정리 (DCL) (0) | 2023.08.24 |
---|---|
SQL Query문 (논리 연산자, 특수 연산자, 집합 연산자, 집계 함수) (0) | 2023.08.24 |
SQL Query문 (날짜형, 형변환 함수) (0) | 2023.08.24 |
SQL Query문 (숫자형, 문자형 함수) (0) | 2023.08.24 |
기본 SQL Query문 정리 (DML) (0) | 2023.08.24 |
댓글