SQL - subquery

는는·2023년 1월 28일
0

SQL - 공부

목록 보기
2/13

서브쿼리

서브쿼리는 일반적으로는 WHERE절에서 많이 사용합니다. 하지만 SELECT절에서도 사용하기도 합니다.
FROM절에서도 사용 될때도 있는데 , 그 경우 inline view에 정의된 컬럼만 사용가능합니다.
메인쿼리는 서브쿼리 사용불가합니다!

  • 사용한 테이블 : the_glory

단일행

id가 a1234인 사람 처럼 항상 1개나 0개의 값이 나올때 사용합니다.
단일행은 (=,<,<=,>,>=,<>) 이와 같은 비교 연산자를 사용합니다.

  • 아이디가 'a342'와 같은 카테고리를 판매하는 판매자 id,카테고리, 판매자 정보 가져오기

만약 단일행 비교연산자를 사용했는데 결과가 2건 이상이라면
실행은 되지만, Run Time 오류가 납니다.

다중행

남자인 사람들만 가져온다 이처럼 여러값이 나오는, 나올 수 있는 값일때 사용합니다.
(IN, ALL, ANY, SOME, EXISTS) 이와 같은 비교 연산자를 사용하고,

  • 카테고리가 '화장품'인 값 가져오기

IN

임의의 결과 중 하나만 만족해도 참인 값을 가져온다. (OR조건)

  • 카테고리가 '화장품'인 제품의 가격 가져오기 그 가격과 같은 판매자, 카테고리, 제품, 가격 불러오기

카테고리가 화장품 OR 카테고리 화장품의 가격과 같은 값

ALL

결과의 모든 값을 만족하는 값을 가져온다.

x >ALL(10,20,50) 라고 한다면 x>50 보다 큰 숫자를 가져옵니다.

  • 카테고리가 '화장품'인 제품의 가격 가져오기 그 가격 중 제일 큰 값 (190000)보다 큰 값의 판매자, 카테고리, 제품, 가격 불러오기

ANY/SOME

결과의 어느 하나의 값이라도 만족하는 값을 가져온다.
x >ANY(10,20,50) 라고 한다면 x>10 보다 큰 숫자를 가져옵니다.

  • 카테고리가 '화장품'인 제품의 가격 가져오기 그 가격 중 제일 작은 값 (80000)보다 큰 값의 판매자, 카테고리, 제품, 가격 불러오기

EXIST

만족하는 값이 존재 여부를 확인하는 것입니다.(참과 거짓 조건 판단용)

EXIST(조건) 조건이 참이면 전체 명단을 출력하고, 조건이 거짓이면 출력하지 않습니다.


  • 거짓

단일 칼럼

서브쿼리 실행 결과 하나의 칼럼을 반환합니다.

다중 칼럼

서브쿼리 실행 결과 여러 칼럼을 반환합니다.

연관 서브쿼리

메인쿼리의 칼럼이 서브쿼리에서 사용된 쿼리입니다.
메인쿼리가 먼저 수행되고, 그 후애 서브쿼리를 수행합니다.
메인쿼리 -> 서브쿼리 정보전달
서브쿼리에서 메인쿼리와 서브쿼리가 같은지 비교합니다.

다중 컬럼 쿼리

다중 컬럼 쿼리를 사용할때는 키, 포지션 = 포지션,키 이렇게 오면 안됩니다!
WHERE(카테고리, 가격) = (SELECT 카테고리,가격) 순서가 같이 와야합니다.

스칼라 서브쿼리

단일행, 단일 컬럼으로 함수특성을 가집니다.

view

테이블과 동일한 형태로 사용가능합니다.
인라인 뷰는 동적 뷰 이고, 일반 뷰는 정적 뷰 입니다.

0개의 댓글