수민

[호붕싸 모각코 11차] 서브쿼리와 View

뽑삥 2025. 5. 16. 21:48

1. 서브쿼리(Subquery) — SQL문 안에 포함된 또 다른 SQL문

 

서브쿼리란?

  • 하나의 SQL문 안에 또 다른 SQL문이 포함된 형태
  • 메인 쿼리에서 일부 데이터를 추출하기 위해 보조적으로 사용하는 쿼리
  • 종류:
    • 중첩 질의 (WHERE절)
    • 스칼라 서브쿼리 (SELECT절)
    • 인라인 뷰 (FROM절)

① 중첩 질의 (Nested Subquery) — WHERE절에서 사용

  • 외부 쿼리의 조건절에서 내부 쿼리를 이용해 조건 필터링
  • 비교 연산자: =, <, >, != 등 사용 가능
  • 집합 연산자:
    • IN, NOT IN: 내부 쿼리 결과 중 포함 여부
    • ALL, SOME, ANY: 조건을 모든/일부 값에 대해 비교
    • EXISTS, NOT EXISTS: 내부 쿼리 결과의 존재 여부 확인

IN vs EXISTS

  • IN: 내부 쿼리의 결과 전체를 메모리에 적재한 뒤 비교
  • EXISTS: 내부 쿼리에서 하나라도 결과가 존재하면 바로 TRUE 처리 ⇒ 대용량 데이터일수록 EXISTS가 효율적

② 스칼라 서브쿼리 — SELECT절에서 사용

  • SELECT절에서 하나의 결과값을 반환하는 서브쿼리
  • 각 행마다 반복적으로 실행됨
  • 예: SELECT name, (SELECT MAX(price) FROM Product) AS max_price FROM User;

③ 인라인 뷰 (Inline View) — FROM절에서 사용

  • 테이블 대신 서브쿼리의 결과를 테이블처럼 사용하는 방식
  • 일반 테이블과 같이 별칭 지정해서 사용 가능

 

 

 

 

📌 2. 뷰(View) — 하나 이상의 테이블을 조합한 가상 테이블

 

- 뷰의 개념

  • 하나 이상의 테이블을 조합하여 복잡한 질의를 단순화시킨 가상 테이블
  • 실제 데이터를 저장하지 않음 (논리적 구조)

- 뷰의 장점

  1. 편리성(재사용성): 복잡한 SQL문을 간단하게 재사용 가능
  2. 보안성: 필요한 데이터만 선택적으로 보여줄 수 있음
  3. 논리적 독립성: 테이블 스키마 변경 시 외부 프로그램 영향 없음

- 뷰의 단점 및 제약

  1. 원본 데이터 변경 시 뷰도 영향을 받음
  2. 인덱스 생성이 어려움 (뷰 자체에 인덱스 못 씀)
  3. 삽입/수정/삭제 제약 많음 (특히 조인 기반 뷰에서는 갱신 불가)
 
 
 

3. 데이터베이스의 물리적 저장 구조

 

- 데이터 저장 장치

  • HDD, SSD, USB 메모리 등
  • 저장 매체에 따라 접근 성능 차이 존재

- 접근 시간 구성

  1. Access Time (접근 시간) = 전체 시간
  2. Seek Time: 디스크 헤드가 원하는 트랙으로 이동하는 시간
  3. Rotational Latency Time: 디스크 회전하여 원하는 섹터가 올 때까지 대기하는 시간
  4. Data Transfer Time: 데이터를 실제로 읽는 시간

 

- 데이터베이스 저장 구조의 흐름

 

  • 사용자 UI → SQL Developer / SQL Plus 등 툴 사용
  • → DBMS가 SQL 분석
  • → INSTANCE (메모리 상의 처리)에서 쿼리 수행
  • → HDD/SSD 등 저장소(DB Files)로부터 데이터 가져옴

 

 

 

작성자 신수민
소 감 실제로 왜 이 쿼리를 이렇게 써야 하는지, 이 방식이 성능에 어떤 영향을 미치는지를 고민하게 된 계기였다. 앞으로도 SQL을 단순한 도구가 아닌 문제 해결을 위한 전략적인 언어로 활용하고 싶다.
일 시 2025. 5. 16. (금) 18:00 ~ 21:00
장 소 미래관 429호 자율주행스튜디오
참가자 명단 신수민, 임혜진, 배세은, 김윤희 (총 4명)
사 진