[컴퓨터공학]/[데이터베이스]

[데이터베이스] Subquery

딥러닝 도전기 2022. 6. 13. 20:28

[데이터베이스] Subquery

Subquery는 Join과 굉장히 유사한 성질을 갖습니다.

즉, 특정 질의를 Join으로도 표현할 수 있고 Subquery로도 표현할 수 있습니다.

movie Table
movieExec Table                                                                                     starsIn Table                  

위의 세 가지 Table을 사용하여 예시를 들겠습니다.

 

질의 : 'Harrison Ford'가 출연한 영화의 모든 producer를 찾아라.

 

먼저, 기본적인 Join연산을 통해 해결해보도록 하겠습니다.

일단 'Harrision Ford'가 있는 starsIn 테이블을 먼저 봐야겠습니다. starsIn에서 'Harrision Ford'가 출연한 Movietitle, movieyear을 뽑고, movie 테이블과 Join한 후 producercno를 통해 movieExec 테이블과 다시 Join하여 name을 뽑아내면 될 것 같습니다.

SELECT name
FROM MovieExec, Movie, StarsIn
WHERE starName = 'Harrision Ford'
	AND title = movieTitle
	AND year = movieYear
	AND certNo = producerCNo;

 

또는 다음과 같이 tuple을 통해 질의를 생성할 수 있습니다.

SELECT name
FROM MovieExec, Movie, StarsIn
WHERE (title, year) = (movieTitle, movieYear)
	AND certNo = producerNo
	AND starName = 'Harrison Ford';

 

Subquery를 활용한 질의는 다음과 같습니다.

SELECT name
FROM MovieExec
WHERE certNo IN
	(SELECT producerCNo
	 FROM StarsIn
	 WHERE (title, year) IN
		(SELECT movieTitle, movieYear
		 FROM StarsIn
		 WHERE starName = 'Harryson Ford'));

위와 같이 WHERE 내부에 또 SELECT문이 반복 되는 것을 Subquery라고 합니다.

반응형