서브쿼리
2023. 10. 7. 16:59ㆍBOOKS/SQL 전문가 가이드
SQL 전문가 가이드
SQL 전문가 가이드는 SQL 자격검정 대비 수험서로 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 최적의 성능을 발휘할 수 있도록 SQL을 작성하고 데이터베이스 프로그램이나 응용 소프트웨어의 성능을 최적화하고 데이터베이스 개체의 설계와 구현을 위해 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등의 실무가이드로 구성되어 있다.
- 저자
- 한국데이터산업진흥원
- 출판
- 한국데이터산업진흥원
- 출판일
- 2021.03.15
서브쿼리
- 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문
- 서브쿼리는 메인 쿼리의 칼럼을 모두 사용할 수 있지만 메인 쿼리는 서브 쿼리의 칼럼을 사용할 수 없다.
- 서브 쿼리 레벨과 상관없이 항상 메인 쿼리 레벨로 결과 집합이 생성됨
- 주의 사항
- 서브쿼리는 괄호로 감싸서 기술
- 서브 쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능 → 단일행 비교 연산자의 서브 쿼리 결과는 반드시 1건 이하여야함
- 중첩 서브 쿼리 및 스칼라 서브 쿼리에서는 ORDER BY 사용 불가능
동작 방식에 따른 서브 쿼리 분류
서브쿼리 종류 | 설명 |
---|---|
비연관 서브 쿼리 | 서브 쿼리가 메인 쿼리 칼럼을 갖지 않는 형태 주로 메인쿼리 값을 제공하기 위해 사용 |
연관 서브 쿼 | 서브 쿼리가 메인 쿼리 칼럼을 갖는 형태 메인 쿼리가 먼저 수행되어 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인할 때 주로 사용 |
1. 단일 행 서브 쿼리
실행 결과가 항상 1건 이하인 서브 쿼리
단일 행 비교 연산자(=,<,≤,>,≥,<>,...)와 함께 사용
2. 다중 행 서브 쿼리
- 실행 결과가 여러 건인 서브 쿼리
다중행 비교 연산자
다중 행 연산자 | 설명 |
---|---|
IN(서브쿼리) | 서브 쿼리 결과에 존재하는 임의의 값과 동일한 값이 있는지 |
비교연산자 ALL(서브쿼리) | 서브 쿼리 결과에 존재하는 모든 값을 만족하는지 |
비교연산자 ANY(서브쿼리) | 서브 쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는지 |
EXISTS(서브쿼리) | 서브 쿼리의 결과를 만족하는 값이 존재하는지 여부 확인 조건 만족하는 1건만 찾으면 더이상 검색 X |
3. 다중 칼럼 서브 쿼리
- 실행 결과로 여러 개의 칼럼 반환
- 메인 쿼리 조건과 동시에 비교되는 것
- SQL Server에서는 지원 X
4. 연관 서브 쿼리
- 서브 쿼리 내에 메인 쿼리 칼럼이 사용된 서브 쿼리
5. 그 밖의 위치에서 사용하는 서브 쿼리
스칼라 서브 쿼리
- SELECT절에서 사용
- 한 행, 한 칼럼만을 반환하는 서브 쿼리 → 결과가 2건 이상 반환되면 오류 반환
인라인 뷰
- FROM절에서 사용
- 서브 쿼리 결과를 테이블처럼 사용가능
Having절에서의 서브 쿼리
- 집계함수와 함께 사용될 때 그룹핑 된 결과에 대해 부가적인 조건을 주기 위해 사용
6. 뷰
- 실제 데이터를 갖지 않음. 단지 뷰 정의만을 가짐
뷰 사용의 장점
뷰의 장점 | 설명 |
---|---|
독립성 | 테이블 구조가 변경되도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다. |
편리성 | 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 또한 해당 형태의 SQL문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있다. |
보안 | 숨기고 싶은 정보가 존재한다면, 뷰를 생성할 때 해당 칼럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있다. |
- CREATE VIEW문으로 생성
CREATE VIEW 뷰명
AS
SELECT ...;
- DROP VIEW문으로 제거
DROP VIEW 뷰명;