[Certification]/[SQLD] Structured Query Language Develop

[SQLD] 4-4. SQL 활용 - 서브쿼리, 단일행 서브쿼리, 다중행 서브 쿼리, 다중 컬럼 서브 쿼리, 연관 서브 쿼리, 기타 서브 쿼리, 뷰(view)

starterr 2024. 9. 13. 13:00
반응형

 

A. 서브쿼리

 

- 서브쿼리 개요

  • 하나의 SQL문안에 포함되어 있는 또 다른 SQL문
  • 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있음
  • 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없음
  • 질의 결과에 서브쿼리 칼럼을 표시해야 한다면 조인 방식으로 변환, 함수, 스칼라 서브쿼리(Scalar Subquery)를 사용
  • 서브쿼리는 서브쿼리 레벨과는 상관없이 항상 메인쿼리 레벨로 결과 집합이 생성

 

- 서브쿼리 주의사항

  • 괄호를 사용하여 서브쿼리 표시
  • 서브쿼리는 단일 행(Single Row)/복수 행(Multiple Row) 비교 연산자와 함께 사용
  • 단일 행 비교 연산자는 서브쿼리의 결과가 1 건 이하
  • 복수 행 비교 연산자는 서브쿼리의 결과 건수와 상관없음
  • 서브쿼리에서는 ORDER BY를 사용하지 못함

 

- 서브쿼리 사용 위치

  • SELECT 절
  • FROM 절
  • WHERE 절
  • HAVING 절
  • ORDER BY 절
  • INSERT문의 VALUE 절
  • UPDATE문의 SET 절
반응형

 

B. 동작하는 방식에 따른 서브쿼리 분류

 

동작하는 방식에 따른 서브쿼리 분류
동작하는 방식에 따른 서브쿼리 분류

 

 

 

C. 반환되는 데이터의 형태에 따른 서브쿼리 분류

 

반환되는 데이터의 형태에 따른 서브쿼리 분류
반환되는 데이터의 형태에 따른 서브쿼리 분류

 

 

반응형

D. 단일 행 서브 쿼리

1) 단일 행 비교 연산자(=,〈,<=, >, >=,〈〉)와 함께 사용
2) 결과 건수가 반드시 1 건 이하
3) 메인쿼리는 서브쿼리에서 반환된 결과를 이용

단일 행 서브 쿼리
단일 행 서브 쿼리

 

E. 다중 행 서브 쿼리

1) 서브쿼리의 결과가 2건 이상
2) 다중 행 비교 연산자(IN, ALL, ANY, SOME)와 함께 사용

다중 행 서브 쿼리
다중 행 서브 쿼리

 

F. 다중 컬럼 서브 쿼리

1) 서브쿼리의 결과로 여러 개의 칼럼이 반환되어 메인쿼리의 조건과 동시에 비교
2) SQL Server에서는 지원되지 않는 기능

다중 컬럼 서브 쿼리
다중 컬럼 서브 쿼리

 

 

G. 연관 서브 쿼리

  • 서브쿼리 내에 메인쿼리 칼럼이 사용된 서브쿼리
  • 메인쿼리에 존재하는 모든 행에 대해서 반복 수행
  • EXISTS 서브쿼리는 항상 연관 서브쿼리로 사용
  • EXISTS 서브쿼리는 조건을 만족하는 건이 많아도 조건을 만족하는 1건만 찾으면 검색을 진행하지 않음

연관 서브 쿼리
연관 서브 쿼리

 

 

반응형

H. 기타 서브 쿼리

 

- SELECT 절에 서브쿼리

1. 스칼라 서브쿼리(Scalar Subquery)
2. 한 행,한 칼럼(1 Row 1 Column)만을 반환
3. 메인쿼리의 결과 건수만큼 반복수행

SELECT 절에 서브쿼리
SELECT 절에 서브쿼리

 

- FROM 절에 서브쿼리

1. 인라인 뷰(Inline View)
2. 동적으로 생성된 테이블인 것처럼 사용
3. 인라인 뷰에서는 ORDER BY절 사용 가능

 

 

- FROM 절에 서브쿼리 : TOP-N 쿼리

1. 인라인 뷰에 먼저 정렬을 수행하고 일부 데이터를 추출하는 것
2. 정렬 결과 중 일부 데이터만을 추출할 수 있는 방법이 필요
3. Oracle은 ROWNUM 연산자를 사용하여 TOP-N 쿼리를 구현
4. SQL Server은 TOP 연산자를 사용하여 TOP-N 쿼리를 구현

 

스칼라 서브 쿼리 예시
스칼라 서브 쿼리 예시

 

 

I. 뷰 (VIEW)

  • 뷰(View)는 데이터 없는 가상 테이블(Virtual Table)
  • 뷰 정의(View Definition)로 구현
  • 뷰 정의 질의를 재작성(Rewrite)하여 쿼리 수행
  • 존재하는 뷰를 참조해서도 신규 뷰 생성 가능
  • 뷰를 포함하는 뷰를 잘못 생성하는 경우 성능 문제가 발생할 수 있음
  • CREATE VIEW문을 통해서 생성
  • DROP VIEW문으로 삭제

뷰(VIEW)의 장점
뷰(VIEW)의 장점

 


[SQLD] 4-1. SQL 활용 - 표준 조인, Standard SQL, Inner Join, Natural Join, Using Join, Cross Join, Outer Join

 

[SQLD] 4-1. SQL 활용 - 표준 조인, Standard SQL, Inner Join, Natural Join, Using Join, Cross Join, Outer Join

A. STANDARD SQL 개요1. 관계형 데이터베이스를 유일하게 접속할 수 있는 언어가 SQL 2. 벤더별로 일부 기능의 개발이 진행 중인 경우도 있고 벤더별로 특이한 기술 용어는 여전히 호환이 안 되고 있음

infoofit.tistory.com

 

[SQLD] 2-4. 데이터 모델과 성능 - DB 구조와 성능, 슈퍼/서브타입, PK/FK칼럼

 

[SQLD] 2-4. 데이터 모델과 성능 - DB 구조와 성능, 슈퍼/서브타입, PK/FK칼럼

A. DB 구조에 따른 성능 개선 방안1. 슈퍼타입/서브타입 모델 구현에 따른 성능 2. 인덱스 특성을 고려한 PK/FK 데이터베이스 성능 향상 3. 테이블과 FK제약 여부에 따른 성능 B. 슈퍼타

infoofit.tistory.com

 

[용어/개념] SSO (Single Sign On) - 통합 인증 관리 서비스

 

[용어/개념] SSO (Single Sign On) - 통합 인증 관리 서비스

I. 통합 인증 관리 서비스 SSO의 개요 가. SSO (Single Sign On)의 정의.한 번의 시스템 인증을 통하여 관련 SSO를 지원하는 다수의 정보 시스템에 재 인증 절차 없이 사용할 수 있게 하는 기능.나. SSO의

infoofit.tistory.com

 

[용어/개념] Product Life cycle (EOS,EOL,EOD,EOSL) 비교

 

[용어/개념] Product Life cycle (EOS,EOL,EOD,EOSL) 비교

Product Life Cycle상용 H/W 및 S/W를 사용하다 보면 Life Cycle를 체크하여 공식 지원이 언제까지 지원되는지 확인할 필요가 있다.이 때, 사용되는 용어가 EOS, EOL로 일반적으로 제품의 생산 중단을 선언할

infoofit.tistory.com

 

 

 

반응형