수민
[호붕싸 모각코 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) — 하나 이상의 테이블을 조합한 가상 테이블
- 뷰의 개념
- 하나 이상의 테이블을 조합하여 복잡한 질의를 단순화시킨 가상 테이블
- 실제 데이터를 저장하지 않음 (논리적 구조)
- 뷰의 장점
- 편리성(재사용성): 복잡한 SQL문을 간단하게 재사용 가능
- 보안성: 필요한 데이터만 선택적으로 보여줄 수 있음
- 논리적 독립성: 테이블 스키마 변경 시 외부 프로그램 영향 없음
- 뷰의 단점 및 제약
- 원본 데이터 변경 시 뷰도 영향을 받음
- 인덱스 생성이 어려움 (뷰 자체에 인덱스 못 씀)
- 삽입/수정/삭제 제약 많음 (특히 조인 기반 뷰에서는 갱신 불가)
3. 데이터베이스의 물리적 저장 구조
- 데이터 저장 장치
- HDD, SSD, USB 메모리 등
- 저장 매체에 따라 접근 성능 차이 존재
- 접근 시간 구성
- Access Time (접근 시간) = 전체 시간
- Seek Time: 디스크 헤드가 원하는 트랙으로 이동하는 시간
- Rotational Latency Time: 디스크 회전하여 원하는 섹터가 올 때까지 대기하는 시간
- 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명) |
사 진 |