Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

괴발개발 개발하다

[Oracle] 오라클 서브쿼리( SELECT, FROM, WHERE 절 ) 본문

Oracle

[Oracle] 오라클 서브쿼리( SELECT, FROM, WHERE 절 )

괴발새발개발자 2022. 8. 20. 21:11

< 서브쿼리 >

: 하나의 쿼리 문장 내에 포함된 또 하나의 쿼리 문장.

: 서브쿼리를 각각의 어느 위치( SELECT, WHERE, FROM )에서 사용하냐에 따라 나누어진다.

 

1. SELECT 절 서브쿼리 

스칼라 서브쿼리 ( Scalar Subqueries )​ 라고 불리며 SELECT 절 안에 서브쿼리가 들어있다.

이 때, 서브쿼리의 결과는 반드시 단일 행이나 SUM, COUNT 등의 집계 함수를 거친 단일 값으로 리턴되어야 한다.

이유는 서브쿼리를 끝마친 값하나를 메인쿼리에서 SELECT 하기 때문이다.

SELECT 학생이름,
       (  SELECT 학과.학과이름
            FROM 학과
           WHERE 학과.학과ID = 학생.학생ID ) AS 학과이름
  FROM 학생
 WHERE 학생이름 = '홍길동' ;

 

2. FROM 절 서브쿼리 

인라인뷰 ( Inline Views ) 라고 불리며 FROM 절 안에 서브쿼리가 들어있다.

이 때, 서브쿼리의 결과는 반드시 하나의 테이블로 리턴되어야 한다.

이유는 서브쿼리를 끝마친 테이블 하나를 메인쿼리의 FROM 에서 테이블로 잡기 때문이다.

SELECT 학생이름, 수학점수
  FROM ( SELECT 학생.학생이름 AS 학생이름,
                과목.과목점수 AS 수학점수
           FROM 학생, 과목
          WHERE 학생.학생이름 = 과목.학생이름
            AND  과목.과목이름 = '수학' ) ;

 

3. WHERE 절 서브쿼리

중첩 서브쿼리 ( Nested Subqueries ) 라고 불리며 WHERE 절 안에 서브쿼리가 들어있다.

가장 자주 쓰이는 대중적인 서브쿼리이며 단일행과 복수행 둘 다 리턴이 가능하다.

이유는 서브쿼리를 끝마친 값들을 메인쿼리의 조건절을 통해 비교등을 하기 때문이다.

SELECT * 
  FROM 학생
 WHERE 학생.학생이름 IN ( SELECT 과목.학생이름 FROM 과목 WHERE 과목.과목이름 = '수학' ) ;

 

< 참고 >

https://mjn5027.tistory.com/51

 

[ Oracle ] SQL 서브쿼리 SELECT, FROM, WHERE

서브쿼리란? - 하나의 쿼리 문장 내에 포함된 또 하나의 쿼리 문장. - 비교연산자의 오른쪽에 기술해야 하고 반드시 괄호 안에 넣어야 함. - 메인 쿼리가 실행되기 이전에 한 번만 실행됨. SQL의 기

mjn5027.tistory.com

https://goldsony.tistory.com/109

 

[오라클 DBMS 공부] 서브쿼리에 대해서 - 중첩쿼리, 인라인뷰 등

#109 1. 서브쿼리란? 서브라는 말처럼 메인쿼리가 있고 그 쿼리 내부에 존재하는 또 다른 쿼리를 의미합니다. 앞서 다른 파트를 공부할 때 잠깐 사용한 적이 있지만 서브쿼리의 경우 정말 많이 사

goldsony.tistory.com