🐶 서브쿼리
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 모두 작성해보기)
문제4. 'items' 테이블에서 'dis_price'가 200000 이상인 아이템들 중, 각 'sub_category'별 아이템 수를 구하시오. 이때 서브쿼리를 사용하시오.
'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 |