본문 바로가기

DATABASE/SubQuery : SQL안에 또 다른 SQL

(5)
05. FROM절에 사용하는 서브쿼리와 WITH절 앞에 살펴본 서브쿼리는 WHERE절에서 조건식 대상으로 사용했다. 하지만 FROM절에도 서브쿼리를 사용할 수 있다. FROM절에 사용하는 서브쿼리는 인라인 뷰(INLINE VIEW)라고도 부른다. 인라인뷰는 특정 테이블 전체 데이터가 아닌 SELECT문을 통해 일부 데이터를 먼저 추출해 온 후 별칭을 주어서 사용한다. FROM절에 직접 테이블을 명시하여 사용하기에는 테이블 내 데이터 규모가 너무 크거나, 현재 작업에 불필요한 열이 너무 많아 일부 행과 열만 사용하고자 할 때 유용하다. FROM절에 너무 많은 서브쿼리를 지정하면 가독성이나 성능이 떨어질 수 있기 때문에 경우에 따라 WITH절을 사용한다. WITH [별칭1] AS (SELECT문 1), [별칭2] AS (SELECT문 2), ... [별칭n..
04. 다중열 서브쿼리 : 비교할 열이 여러 개일 때 다중열 서브쿼리(MULTIPLE-COLUMN SUBQUERY)는 서브쿼리의 SELECT절에 비교할 데이터를 여러개 지정하는 방식. 메인쿼리에 비교할 열을 괄호로 묶어서 명시하고, 서브쿼리에서는 괄호로 묶은 데이터와 같은 자료형 데이터를 SELECT절에 명시하여 사용할 수 있다. 복수열 서브쿼리라고도 부른다. 9-18의 SELECT문은 데이터 면에서 의미 있는 출력은 아니지만, 사용법을 알아두는 것이 좋다. SELECT * FROM EMP WHERE ( DEPTNO, SAL ) IN ( SELECT DEPTNO, MAX(SAL) FROM EMP GROUP BY DEPTNO);
03.다중행 서브쿼리 : 실행 결과가 여러개 다중행 서브쿼리(MULTIPLE-ROW SUBQUERY)는 실행 결과 행이 여러 개로 나오는 서브쿼리. 서브쿼리 결과가 여러 개이므로 단일행 연산자는 사용할 수 없고, 다중행 연산자를 사용해야 메인쿼리와의 비교가 가능. 다중행 연산자 1) IN : 메인쿼리의 데이터가 서브쿼리의 결과 중 하나라도 일치한 데이터가 있으면 반환(=TRUE)한다. 2) SOME, ANY : 메인쿼리의 조건식을 만족하는 서브쿼리의 결과가 하나 이상이면 반환한다. 3) ALL : 메인쿼리의 조건식을 서브쿼리의 결과 모두가 만족하면 반환한다. 4) EXISTS : 서브쿼리의 결과가 존재하면( 즉, 행이 1개 이상이면) 반환한다. IN연산자 WHERE절과 연산자를 다루면서 소개하였다. ANY연산자 ( = SOME 연산자) 서브쿼리가 ..
02. 단일행 서브쿼리 : 실행 결과가 하나 단일행 서브쿼리(SINGLE-ROW SUBQUERY)는 실행 결과가 단 하나의 행으로 나온다. 서브쿼리에서 출력되는 결과가 하나이므로 메인쿼리와 서브쿼리 결과는 단일행 연산자를 사용하여 비교한다. 단일행 연산자 : > , >= , < ,
01.서브쿼리 서브쿼리(SUBQUERY)가 뭔데 ? SQL문을 실행하는 데 필요한 데이터를 추가로 조회하기 위해 SQL문 내부에서 사용하는 SELECT문 서브쿼리의 결과 값을 사용하여 기능을 수행하는 영역은 메인쿼리(MAIN QUERY)라고 부른다. WHERE절 안에 서브쿼리를 넣는 방식을 빈번하게 사용한다. SELECT 조회할 열 FROM 조회할 테이블 WHERE 조건식 ( SELECT 조회할 열 FROM 조회할 테이블 WHERE 조건식) 서브쿼리의 특징 1. 서브쿼리는 연산자와 같은 비교 또는 조회 대상의 오른쪽에 놓이며 괄호( )로 묶어서 사용한다. 2. 특수한 경우를 제외하고, 서브쿼리에서는 ORDER BY를 사용할 수 없다.(메인쿼리는 상관없음) 3. 서브쿼리의 SELECT절에 명시한 열은 메인쿼리의 비교 대..