SQL / 01 / 기초-11

DOMADO·2024년 6월 18일

SQL

목록 보기
12/12

서브쿼리 ⭐ ⭐ ⭐

  • 다른 쿼리 내부에 포함되어 있는 또 다른 SELECT~ 쿼리
  • 실무 多多
쉽게 생각하면, 변수 같은 느낌
SQL문을 또 다른 SQL문의 부분에 넣는 것

또 다른 SELECT~ 쿼리의 뜻 : SELECT로 시작 하는 쿼리의 틀을 말함

* 인라인뷰 : FROM절에 사용 된 서브쿼리

참고)
https://velog.io/@supernova77/SQL-01-%EA%B8%B0%EC%B4%88-10

스칼라서브쿼리

  • SELECT 에서 사용되는 서브쿼리

  • 하나의 컬럼에 대해 하나의 행만 반환

  • 출력 되는 하나의 값이 없다면 NULL값 반환

  • 메인쿼리에서 출력되는 튜플의 수 = 서브쿼리 반복 실행

[ ⭐ ] 스칼라서브쿼리는 조인방식으로 표현 가능 ❗

[ ❗ ] 주의사항

메인쿼리, 서브쿼리 의 경우

👉 메인쿼리를 기준으로, 서브쿼리가 움직임

(❗) 조인방식으로 하면, OUTER JOIN


[❗❗] OUTER JOIN 사용시 👉 OR 기호 사용 ❌❌
사용하고 싶다면, AND안에 소괄호로 품어야함 !!
ANSI문법의 경우에는 상관없이 모두 (AND,OR) 사용 가능

[ ❓ ] 아우터조인 VS 서브쿼리

  • 아우터조인 : 한 번 쓰고, 텀이 길 때 성능이 좋다
  • 서브쿼리 : 자주 쓸 경우, 성능이 좋다
    (자주 쓸수록, 컴퓨터 캐시에 저장 되어 속도 ↑)


✅ 인라인 뷰

  • FROM절 에서 사용되는 서브쿼리
  • 가상의 테이블처럼 이용 가능한
  • 따로 때어내서 실행 가능한, 독립적인 쿼리


✅ 중첩 서브쿼리

  • WHERE절 에서 사용되는 서브쿼리
  • 상관 서브쿼리 / 비상관 서브쿼리로 나눠짐


✔️ 상관 서브쿼리

  • 메인 쿼리와 연결 된 서브쿼리
  • 메인 쿼리 실행 후 ► ②서브 쿼리 실행


✔️ 비상관 서브쿼리

  • 메인 쿼리의 상관없이 독립적으로 실행 가능하다
  • ①서브 쿼리 실행 후 ► 메인 쿼리 실행

[ ❓ ] 그냥 GROUP BY 하지, 왜 번거롭게 중첩 서브쿼리를 쓰나요.
  
👉  GROUP BY의 경우,
  그룹으로 묶어서 SELECT절에서, 집계함수, GROUP BY 해당하는 컬럼 밖에 표현이 불가

  
👉  중첩 서브쿼리의 경우,
  메인쿼리 SELECT 부분에 모든 정보 표현이 가
  


✅ 다중행 연산자

  • ① IN
  • ② ANY
  • ③ ALL
  • ④ EXIST
참고)

NULL은 비교,연산 ❌❌
👉 정렬시, NULL을 가장 큰 값으로 인식함 (오라클만)
         다른곳은 가장 작은 값으로 인식

① IN : ' = ' 같다 등호의 복수 VER

  • = : 단일행 ( 1:1 대응만 가능 )

② ANY : 입력 된 다중행에서 하나라도 일치하면 출력

  • ( XX or YY or ZZ ) = ANY( XX, YY, ZZ )


③ ALL : 입력 된 다중행에서 모두 일치하면 출력

  • ( XX and YY and ZZ ) = ALL( XX, YY, ZZ )


④ EXIST : 행의 존재여부 '만' 을 확인

⑤ NOT EXIST : 존재 안 하는 여부 '만' 을 확인

  • 서브쿼리를 꼭 사용해야 함 !


[ ? ] EXISTS 쓰는 이유

  • IN : 컬럼 내 모든 데이터 조회

  • EXISTS : 데이터 조회 되면 / 바로 다음 작업

profile
▪️ 검정 테마를 기준으로 작성되었읍니다.

2개의 댓글

comment-user-thumbnail
2024년 6월 19일

//NULL 값은 비교 연산 불가함 , BUT 정렬시, NULL값을 가장 큰 값으로 인식함 !!!!
// 오라클에서만 NULL값 가장 큰 값으로 인식 !!!
// 다른 곳에서는 NULL값 가장 작은 값으로 인식 !!!

답글 달기
comment-user-thumbnail
2024년 6월 19일

정리 되지 못한 과업

1) 중첩서브쿼리

  • 중첩서브쿼리 內 상관서브쿼리 / 비상관서브쿼리

2) 단일행 / 다중행 연산자

  • 단잉행, 다중행 쓰임의 비교 개념
  • 다중행 연산자의 종류들 ( IN , ANY , ALL , EXISTS, NOT EXISTS )
답글 달기