1. 셀렉션(Selection)
셀렉션이란?
셀렉션은 테이블에서 특정 조건을 만족하는 **행(가로줄)**만을 골라내는 연산입니다. 마치 큰 상자에서 원하는 색깔의 블록만 골라내는 것과 같습니다.
셀렉션의 특징
- 테이블의 행(row)을 필터링합니다
- WHERE 절을 사용하여 구현합니다
- 원본 테이블보다 행의 수가 같거나 적습니다
- 열(column)의 수는 변하지 않습니다
셀렉션 예시
학생 테이블에서 나이가 20세 이상인 학생만 선택하고 싶다면:
SELECT * FROM 학생 WHERE 나이 >= 20;
이렇게 하면 나이가 20세 이상인 학생들의 모든 정보가 그대로 출력됩니다. 즉, 테이블의 구조(열)는 그대로 유지되고 조건에 맞는 행만 선택됩니다.
2. 프로젝션(Projection)
프로젝션이란?
프로젝션은 테이블에서 필요한 **열(세로줄)**만을 선택하는 연산입니다. 마치 사진을 찍을 때 원하는 부분만 프레임에 담는 것과 같습니다.
프로젝션의 특징
- 테이블의 열(column)을 선택합니다
- SELECT 절에 열 이름을 명시하여 구현합니다
- 원본 테이블보다 열의 수가 같거나 적습니다
- 행(row)의 수는 변하지 않습니다 (중복 제거를 하지 않는 경우)
프로젝션 예시
학생 테이블에서 이름과 전화번호만 필요하다면:
SELECT 이름, 전화번호 FROM 학생;
이렇게 하면 모든 학생의 이름과 전화번호만 포함된 결과가 출력됩니다. 즉, 행의 수는 그대로지만 열의 수가 줄어듭니다.
3. 조인(Join)
조인이란?
조인은 두 개 이상의 테이블을 연결하여 하나의 결과를 만드는 연산입니다. 마치 두 개의 퍼즐을 맞추어 하나의 큰 그림을 완성하는 것과 같습니다.
조인의 특징
- 여러 테이블의 데이터를 결합합니다
- 공통 열(키)을 기준으로 행을 매칭합니다
- 결과 테이블의 열 수는 두 테이블 열의 합에서 중복 열을 뺀 수입니다
- 결과 테이블의 행 수는 조인 유형에 따라 달라집니다
조인의 종류
1) 내부 조인(Inner Join)
두 테이블에서 조인 조건을 만족하는 행만 결과에 포함합니다.
SELECT * FROM 학생 INNER JOIN 수강 ON 학생.학번 = 수강.학번;
2) 외부 조인(Outer Join)
- 왼쪽 외부 조인(Left Outer Join): 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 조건을 만족하는 행을 포함합니다.
- 오른쪽 외부 조인(Right Outer Join): 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 조건을 만족하는 행을 포함합니다.
- 완전 외부 조인(Full Outer Join): 양쪽 테이블의 모든 행을 포함합니다.
SELECT * FROM 학생 LEFT JOIN 수강 ON 학생.학번 = 수강.학번;
3) 자연 조인(Natural Join)
두 테이블에서 이름이 같은 열을 기준으로 자동으로 조인합니다.
SELECT * FROM 학생 NATURAL JOIN 수강;
4) 교차 조인(Cross Join)
두 테이블의 모든 행을 조합한 카테시안 곱(Cartesian Product)을 생성합니다.
SELECT * FROM 학생 CROSS JOIN 수강;
4. 셀렉션, 프로젝션, 조인의 조합
실제 데이터베이스 쿼리에서는 이 세 가지 연산을 조합하여 사용하는 경우가 많습니다.
예시
20세 이상인 학생들의 이름과 수강 과목명만 조회하고 싶다면:
SELECT 학생.이름, 과목.과목명
FROM 학생
INNER JOIN 수강 ON 학생.학번 = 수강.학번
INNER JOIN 과목 ON 수강.과목코드 = 과목.과목코드
WHERE 학생.나이 >= 20;
- WHERE 절은 셀렉션 연산을 수행합니다 (20세 이상 학생 필터링)
- SELECT 절은 프로젝션 연산을 수행합니다 (이름과 과목명만 선택)
- INNER JOIN은 조인 연산을 수행합니다 (학생, 수강, 과목 테이블 연결)
5. 관계대수와의 연관성
셀렉션(σ), 프로젝션(π), 조인(⋈)은 관계대수의 기본 연산자입니다. 관계대수는 관계형 데이터베이스의 이론적 기초를 제공하며, SQL은 이러한 관계대수를 구현한 언어입니다.
- 셀렉션: σ<조건>(테이블)
- 프로젝션: π<열1, 열2, ...>(테이블)
- 조인: 테이블1 ⋈<조건> 테이블2
6. 성능 최적화 고려사항
셀렉션 최적화
- 인덱스를 활용하여 조건에 맞는 행을 빠르게 찾을 수 있습니다
- 가능한 한 조건을 먼저 적용하여 처리할 데이터 양을 줄이는 것이 좋습니다
프로젝션 최적화
- 필요한 열만 선택하여 메모리 사용량과 네트워크 트래픽을 줄일 수 있습니다
- 특히 대용량 데이터를 다룰 때 중요합니다
조인 최적화
- 조인 순서가 성능에 큰 영향을 미칩니다
- 작은 테이블을 먼저 조인하는 것이 일반적으로 효율적입니다
- 조인 조건에 사용되는 열에 인덱스를 생성하면 성능이 향상됩니다
'BOOK' 카테고리의 다른 글
| [Do it SQL] Chapter 04-5 / 04-6 (1) | 2025.03.21 |
|---|---|
| [Do it SQL] Chapter 04-3 / 04-4 (0) | 2025.03.20 |
| [Do it SQL] Chapter 01-2 (2) | 2025.03.14 |
| [Do it SQL] Chapter 01-1 (0) | 2025.03.12 |
| [JavaScript] 자바스크립트 (1) | 2025.03.09 |