반응형
데이터베이스를 설계할 때 정규화를 적용하면 데이터가 여러 테이블로 분리됩니다. 이때 가장 많이 궁금한 것이 바로 "정규화된 테이블을 어떻게 SQL로 조회할까?" 입니다. 이 글에서 실무 중심으로 아주 쉽게 알려드리겠습니다.
1. 왜 정규화하면 JOIN이 중요할까?
정규화된 DB에서는 중복을 줄이기 위해 테이블을 여러 개로 나눕니다.
그 결과 👉 필요한 데이터를 조회할 때 여러 테이블을 합쳐야 합니다.
이걸 바로 JOIN 이라고 합니다.
2. 기본 예제 테이블 구조
학생 테이블
학생ID이름
1 | 홍길동 |
2 | 김철수 |
수강 테이블
학생ID과목
1 | 수학 |
1 | 영어 |
1 | 과학 |
2 | 영어 |
3. 정규화된 테이블 쿼리 실전 예제
(1) 학생 이름과 수강과목을 함께 조회
SELECT 학생.이름, 수강.과목
FROM 학생
JOIN 수강 ON 학생.학생ID = 수강.학생ID;
결과
이름과목
홍길동 | 수학 |
홍길동 | 영어 |
홍길동 | 과학 |
김철수 | 영어 |
(2) 특정 학생의 수강과목 조회
SELECT 학생.이름, 수강.과목
FROM 학생
JOIN 수강 ON 학생.학생ID = 수강.학생ID
WHERE 학생.이름 = '홍길동';
(3) 전체 수강 과목 목록 중복 없이 조회
SELECT DISTINCT 과목
FROM 수강;
(4) 수강 인원 수를 과목별로 집계
SELECT 과목, COUNT(*) AS 수강인원
FROM 수강
GROUP BY 과목;
4. 정규화된 테이블 쿼리의 핵심 공식
SELECT [원하는 컬럼]
FROM 테이블A
JOIN 테이블B ON 연결조건
WHERE 조건
GROUP BY 필요시 그룹화
ORDER BY 정렬
이 패턴만 익히면 대부분의 쿼리를 작성할 수 있습니다.
5. 실무에서 자주 하는 실수
실수원인
WHERE 없이 조회 | 모든 데이터가 출력됨 |
JOIN 조건 실수 | 잘못 연결되어 데이터 중복 발생 |
DISTINCT 빠짐 | 중복 제거 안 됨 |
GROUP BY 빠짐 | 집계 오류 |
6. 한 문장 정리
정규화된 DB에서 쿼리할 때는 JOIN으로 필요한 테이블을 합쳐서 조회한다.
반응형