SQL

SUBQUERY

Bordercolli 2023. 8. 28. 21:26
728x90

🐶 서브쿼리

SQL구문 안에 별도로 SQL구문이 포함되어 있는 쿼리

보통 SQL구문 안에서 ()안에 또 다른 SQL구문을  추가하는 경우를 서브쿼리라고 한다.

많이 사용되진  않지만, 대용량 데이터에서는 쿼리문을 여러 번 돌리는 경우가 되기 때문에 성능 상의 이슈로 그렇게 많이 사용되지는 않는다. 다만,  SQL문을 전문적으로 쓰는 사람들은 가끔 쓴다.

자주 사용하지 않아도 이게 서브쿼리인지는 알 필요가 있다.

 

사용하는 이유??? 테이블과 테이블 간 검색시 검색 범위 (테이블 중 필요한 부분만 먼저 가져오도록)를 좁히는 기능에 주로 사용되거나 또는 어떤 테이블 내에서 검색을 하기보다는 테이블 중에 필요한 부분만 먼저 추출하고 그 안에서 내가 원하는 데이터를 추출할 때, 이럴 때 쓰이는 것 

기본적으로 테이블과 테이블간의 어떤 관계를 기반으로 해서 데이터를 추출하려면 JOIN을 하면 된다. 그래서 꼭 쓸 필요가 없다. 서브쿼리 아니어도 다른 쿼리로도 가능하기 때문에 

 

서브쿼리의 괄호 위치가 SELECT에도 들어갈 수 있고, FROM에도 들어갈 수 있고 어디서나 들어갈 수 있다. 

가장 그 중 유용한 부분은 WHERE부분에서 서브쿼리를 쓰는 것

 

문제1. 서브카테고리가 '여성신발'인 상품 태이틀만 가져오기(JOIN사용/ 서브쿼리사용)

  • JOIN SQL을 사용하여 작성하는 방법 

  • 서브쿼리를 이용해서 작성하는 방법

컬럼값 IN 서브쿼리 출력값 -> 컬럼값과 서브쿼리 값이 같을 때

 

IN을 사용하면

 

이런식으로 더 간결하게 표현이 가능하다.

 

서브쿼리를 쓰려면 두 테이블 간의 연결고리가 있어야지만 사용할 수 있다.

 

문제2. 서브카테코리가 '여성신발'인 상품중 할인가격이 가장 높은 상품의 할인가격 가져오기(JOIN사용/ 서브쿼리사용)

  • JOIN 사용

내가 작성한 코드
답안지
답안지 겸 내가 작성한 코드

비교를 위한 서브쿼리 작성하기

comedy가 5번 일 것이다. 그래서 5번보다 큰 데이터들에 대한 category_id와 fim_count를 출력한다.

서브쿼리가 비교의 대상이 될 수 있다.

 

문제3. 메인 카테고리별로 할인 가격이 10만원 이상인 상품이 몇개 있는지를 출력해보기 (JOIN 활용 SQL 과 서브쿼리 활용 SQL 모두 작성해보기)

JOIN사용
서브쿼리 사용

문제4. 'items' 테이블에서 'dis_price'가 200000 이상인 아이템들 중, 각 'sub_category'별 아이템 수를 구하시오. 이때 서브쿼리를 사용하시오.

서브쿼리 사용하기

 

JOIN을 사용한 경우

 

'SQL' 카테고리의 다른 글

[참고] MySQL INDEX  (0) 2023.08.30
[문제풀이] 파이널 테스트  (0) 2023.08.29
INNER JOIN, OUTER JOIN  (0) 2023.08.28
HAVING  (0) 2023.08.28
[🎉중급🎉] 외래키  (1) 2023.08.28