심심한 개발자의 취미생활
심심한 개발자의 취미생활
카테고리
- ----- Javascript ----- (12)
- ----- Java ----- (9)
- Servlet (9)
- Spring(MVC, Boot) (0)
- ----- Infra ----- (9)
- ----- Database ----- (19)
- 심심한 개발자의 취미 개발 (14)
- 다시 검색하기 귀찮을때 (4)
- 간단 블로그 만들기 (8)
- 온라인 코딩 테스트 시스템 (2)
- 자취생 밥 만들어 먹기 (26)
- 의식의 흐름대로 (2)
서브쿼리
서브쿼리 개념
- 다른 SELECT문에 삽입된 SELECT문
- 간단한 명령문으로 강력한 기능을 제공하는 명령문 작성이 가능함
- 테이블 자체 데이터에 종속된 조건을 사용하여 테이블에서 행을 선택할 때 유용함
- 일반적으로 서브쿼리가 먼저 실행되고, 그 결과를 사용하여 메인쿼리에서 사용함
서브쿼리의 사용지침
- 서브쿼리를 괄호로 묶어야 함
- 일반적인 서브쿼리에서는 ORDER BY 절을 사용하지 않음
- 단일 행 연산자(=, >, <, >=, <=, <>)와 복수행 연산자(IN, ANY, ALL)를 사용함
인라인뷰와 스칼라 서브쿼리
FROM절 서브쿼리
- 서브쿼리는 FROM절에서도 사용 가능함
- 해당 SELECT문에서만 사용 가능한 데이터를 정의함
- FROM절에 기술한 서브쿼리는 마치 뷰와 같은 역할을 함
- FROM절에 있는 서브쿼리는 인라인 뷰라고도 함
스칼라 서브쿼리
- 서브쿼리 수행 결과가 한 개 ROW와 한 개 컬럼만을 반환 하는 경우임
- 반환 값이 단일 값이 되는 서브쿼리임
- 단일 값을 사용할 수 있는 모든 곳에 사용이 가능함
- SELECT, ORDER BY 위치에는 스칼라 서브쿼리만 사용이 가능함
상호연관 서브쿼리
- 메인 쿼리의 한 ROW에 대해서 서브쿼리가 한 번씩 실행됨
- 데티블에서 행을 먼저 읽고 각 행의 값을 서브쿼리 실행시 이용함
- 기본 질의에서 고려된 각 후보 행에 대해 서브쿼리가 닥른 결과를 반환해야 하는 경우에 사용됨
- 서브쿼리에서 메인 쿼리의 컬럼명을 사용할 수 있으나 메인 쿼리에서는 서브쿼리의 컬럼명을 사용할 수 없음
EXISTS
- MAIN 질의에서 검색된 값이 서브쿼리의 결과집합에 존재하는지 여부를 검사하기 위한 상호 연관 서브쿼리에 자주 사용됨
- 서브쿼리가 하나의 행 이상 반환하면 TRUE를 반환하고, 해당 값이 없으면 FALSE를 반환함
- 서브쿼리 행의 값이 발견되는 경우 서브쿼리에서 더 이상 검색하지 않음
- 조건 플래그가 TRUE가 됨