이롭게 현명하게
[R-LOG] 서평단 / SQL, 이렇게 하면 된다(제2판) / 제이펍 본문

[목차]
들어가며
이 책은 어떤 책인가?
책 후기
추천 대상
마무리
[들어가며]
안녕하세요! 오늘은 서평단에 선정되어 읽게 된 SQL 책을 소개하려고 해요.
저는 현재 개발자 취업 준비생으로 코딩 실력도 중요하지만 데이터를 다루는 능력, 특히 SQL이 중요하다는 걸 많이 느끼고 있어요.
그래서 이번 기회에 SQL을 제대로 배우고 좋은 SQL이 무엇인지, 어떻게 작성해야 효율적인지까지 공부하고 싶었답니다.
[이 책은 어떤 책인가?]

- 제목 : SQL, 이렇게 하면 된다. (제2판)
- 저자 : (저자) 미크, (번역) 윤인성
- 출판사 : 제이펍
- 개정일 : 2026년 03월 26일
목차
옮긴이 머리말 xiv
베타리더 후기 xvi
머리말 xix
이 책에 대하여 xxii
PART I | SQL이라는 마법
CHAPTER 1 | CASE 식 활용하기 2
1.1 시작하며 2
1.2 CASE 식의 기본 형태 3
1.3 기존 코드를 새로운 체계로 바꿔서 집계하기 5
1.4 서로 다른 조건을 하나의 SQL로 집계하기 9
1.5 CHECK 제약으로 여러 열의 조건 관계 정의하기 13
1.6 조건에 따라 다르게 UPDATE하기 15
1.7 테이블 간 매칭 20
1.8 CASE 식 안에서 집계 함수 사용하기 22
1.9 정리 25
CHAPTER 2 | 윈도 함수 완전 정복 30
2.1 윈도란 무엇인가? 31
2.2 한 장으로 이해하는 윈도 함수 34
2.3 프레임 절로 다른 행의 데이터 가져오기 35
2.4 윈도 함수의 내부 동작 43
2.5 정리 46
CHAPTER 3 | 셀프 조인 활용법 50
3.1 중복순열, 순열, 조합 50
3.2 중복 행 삭제하기 56
3.3 부분적으로 일치하지 않는 키 검색하기 58
3.4 정리 61
CHAPTER 4 | 3값 논리와 NULL 67
4.1 시작하며 67
4.2 이론편 68
4.3 실전편 73
4.4 정리 86
CHAPTER 5 | EXISTS 술어 사용법 93
5.1 이론편 94
5.2 실전편
5.3 정리 113
CHAPTER 6 | HAVING 절의 힘 116
6.1 데이터 누락 찾기 117
6.2 HAVING 절과 서브쿼리: 최빈값 구하기 122
6.3 NULL을 포함하지 않는 집합 찾기 125
6.4 HAVING 절과 보편 양화 132
6.5 유일 집합과 다중 집합 137
6.6 관계 나눗셈으로 장바구니 분석하기 140
6.7 정리 145
CHAPTER 7 | 윈도 함수로 행 간 비교하기 151
7.1 시작하며 151
7.2 성장·감소·현상 유지 152
7.3 시계열에 누락된 연도가 있는 경우: 직전 연도와 비교 157
7.4 윈도 함수 vs 상관 서브쿼리 159
7.5 겹치는 기간 확인하기 164
7.6 정리 169
CHAPTER 8 | 외부 조인 활용법 171
8.1 시작하며 171
8.2 외부 조인으로 행렬 변환 (1): 행→열로 바꿔 크로스 테이블 만들기 172
8.3 외부 조인으로 행렬 변환 (2): 열→행으로 반복되는 항목 정리하기 177
8.4 크로스 테이블로 중첩된 행 구조 만들기 180
8.5 곱셈으로서의 조인 185
8.6 완전 외부 조인 188
8.7 외부 조인으로 집합 연산하기 191
8.8 외부 조인으로 차집합 구하기: A - B 191
8.9 외부 조인으로 차집합 구하기: B - A 192
8.10 완전 외부 조인으로 배타적 합집합 구하기 193
8.11 정리 195
CHAPTER 9 | SQL의 집합 연산 198
9.1 시작하며 198
9.2 집합 연산과 관련된 몇 가지 주의점 199
9.3 테이블끼리 비교하기: 집합의 동일성 확인[기본편] 200
9.4 테이블 비교: 집합의 동일성 확인[응용편] 204
9.5 차집합으로 관계 나눗셈 표현하기 206
9.6 동일한 부분집합 찾기 209
9.7 중복 행을 빠르게 삭제하는 쿼리 213
9.8 정리 215
CHAPTER 10 | SQL로 수열 다루기 218
10.1 시작하며 218
10.2 순번 만들기 219
10.3 누락된 번호 전부 찾기 223
10.4 세 명이 연속으로 앉을 수 있는 좌석 배치 225
10.5 줄바꿈이 있는 수열 229
10.6 단조증가와 단조감소 231
10.7 정리 235
CHAPTER 11 | SQL 빠르게 만들기 238
11.1 시작하며 238
11.2 효율적으로 검색하기 239
11.3 정렬 피하기 241
11.4 극값 함수(MAX/MIN)에서 인덱스 사용하기 245
11.5 WHERE 절에 쓸 수 있는 조건은 HAVING 절에 쓰지 않기 246
11.6 인덱스가 정말 사용되고 있을까? 247
11.7 중간 테이블 줄이기 251
11.8 정리 254
CHAPTER 12 | SQL 프로그래밍 스타일 256
12.1 시작하며 256
12.2 테이블 설계 258
12.3 코딩 스타일 지침 260
12.4 대문자와 소문자 265
12.5 정리 273
PART II | 관계형 데이터베이스의 세계
CHAPTER 13 | RDB 근현대사 276
13.1 관계형 데이터베이스의 역사 276
13.2 파괴적 혁신은 반복될까? 282
13.3 NoSQL의 종류와 해결 방법 284
13.4 성능 문제 해결하기 285
13.5 정리 287
CHAPTER 14 | 왜 ‘관계’ 모델이라고 부를까? 289
14.1 관계의 정의 290
14.2 도메인의 우울 293
14.3 관곗값과 관계 변수 294
14.4 관계 안의 관계가 가능할까? 295
CHAPTER 15 | 관계로 시작해 관계로 끝나다 298
15.1 연산으로 보는 집합 298
15.2 이론과 실제 301
CHAPTER 16 | 주소라는 거대한 괴물 303
16.1 시작하며 304
16.2 주소에서 자유로워지기 위해 태어난 관계 모델 304
16.3 프로그래밍에 넘쳐나는 주소 306
16.4 사라지지 않는 노병: 배커스의 꿈 308
CHAPTER 17 | 순서를 둘러싼 모험 309
17.1 늦게 나타난 주인공 309
17.2 행에 순서가 있어야 할까? 309
CHAPTER 18 | GROUP BY와 PARTITION BY 315
18.1 차이점을 아시나요? 315
CHAPTER 19 | 절차형에서 선언형·집합 지향으로 사고 전환을 위한 7가지 원칙 321
19.1 IF 문과 CASE 문을 CASE 식으로 바꾸기: SQL은 함수형 언어와 비슷하다 322
19.2 반복문을 GROUP BY 절과 윈도 함수로 바꾸기 324
19.3 테이블 행에는 순서가 없음을 기억하기 324
19.4 테이블을 집합으로 보기 326
19.5 EXISTS 술어와 ‘양화’ 개념 이해하기 326
19.6 HAVING 절의 진짜 가치 알아보기 327
19.7 네모 말고 원 그리기 328
CHAPTER 20 | 신이 사라진 세상의 논리 330
20.1 때로는 참과 거짓을 포기하라 330
20.2 논리학의 혁명 332
20.3 인간을 위한 논리 333
CHAPTER 21 | SQL과 재귀 집합 335
21.1 실무에서 만나는 재귀 집합 335
21.2 노이만의 선배들 336
21.3 수란 무엇인가? 338
21.4 SQL의 마술과 과학 341
CHAPTER 22 | NULL 박멸 위원회 342
22.1 결의문: 모든 DB 엔지니어에게 고함 342
22.2 왜 NULL이 그렇게 나쁠까? 343
22.3 하지만 NULL을 완전히 없앨 수는 없다 344
22.4 코드의 경우: 대체 코드 만들기 346
22.5 이름의 경우: 기본값 정하기 347
22.6 숫자의 경우: 0으로 바꾸기 347
22.7 날짜의 경우: 최댓값·최솟값 사용하기 348
22.8 지침 정리 348
CHAPTER 23 | SQL의 존재 계층 349
23.1 술어 논리의 계층과 집합의 계층 349
23.2 집계하면 왜 원래 열을 참조할 수 없을까? 350
23.3 원소 하나짜리 집합도 엄연한 집합이다 354
PART III | 부록
APPENDIX A | 연습 문제 해답 358
맺음말 386
찾아보기 390
SQL 책을 여러 권 봤지만 대부분은 문법 중심이라 아쉬움이 남는 경우가 있었습니다.
SELECT, JOIN 같은 기본 문법을 설명하는 데 집중하다 보니, 막상 실무에서는 "어떻게 써야 하는지" 감이 잘 안 잡히는 경우가 많았습니다.
그런 점에서 이 책은 조금 다르게 다가왔습니다.
이 책은 SQL을 단순한 쿼리 언어로 보지 않습니다.
오히려 문제를 해결하기 위한 사고방식으로 접근합니다.

왜 이런 SQL을 써야 하는지, 어떤 방향으로 작성해야 더 읽기 쉬운지, 어떻게 하면 더 깔끔한 쿼리가 되는지 이런 질문들에 대한 답을 계속 던져주는 구조입니다.
특히 좋았던 점은 기능을 나열하지 않는다는 것입니다.

예를 들어, CASE, 윈도 함수, EXISTS, HAVING 같은 기능들을 "이 문법은 이렇게 씁니다." 수준에서 끝내지 않고, 실제 문제를 해결하는 흐름 속에서 설명합니다.
덕분에 "언제 써야 하는지"가 자연스럽게 이해됩니다.

실무에서 자주 사용하는 SQL 패턴 중심으로 구성되어 있습니다.
그래서 단순히 문법을 외우는 게 아닌 "이 상황에서는 이런 방식으로 접근하면 되겠구나"라는 감각을 익히게 됩니다.
이게 생각보다 큰 차이를 만든다고 느꼈습니다.

또 하나 좋았던 점은 각 챕터마다 연습문제와 해답이 포함되어 있어서 학습한 내용을 직접 점검할 수 있었습니다.
개인적으로는 이론만 있는 책 보다 이렇게 직접 풀어보면서 확인할 수 있는 구조를 선호하는 데 이 부분도 만족스러웠습니다.

[책 후기]
단순 기술서가 아니라 "왜 이렇게 써야 하는지"를 설명하는 책이다.
SQL 책을 보면 대부분 문법 위주라서 막상 실무에서는 어떻게 써야 할지 감이 잘 안 잡힌다는 점이었다.
실무에서 자주 쓰이는 SQL 패턴 중심의 구성으로 이론 + 연습문제까지 균형 잡힌 구성이 좋았다.
<장점>
- SQL을 어떻게 생각해야 하는지 알려준다.
- 기능 설명이 아니라 "문제 해결 흐름"중심
- 연습문제로 이해도를 확인할 수 있다.
<단점>
- 완전 입문용이라기보다는 중급난이도
- SQL을 처음 접하는 분들은 어렵게 느껴질 수 있다.
[추천 대상]
- SQL 기초는 알고 있지만 더 잘 쓰고 싶은 분
- 단순 문법을 넘어서 "좋은 SQL"을 고민해고보 싶은 분들
- 개발자 취업을 준비하는 분들
- 실무에서 SQL을 더 깔끔하게 작성하고 싶은 분
- 쿼리는 작성할 수 있지만, 더 효율적이고 읽기 좋은 SQL을 고민하는 분
[마무리]
이번에 'SQL, 이렇게 하면 된다'를 보면서 느낀 점은 SQL문이 무엇이라기보다는 어떻게 생각하고 설계하느냐가 더 중요하다는 거였다.
그동안은 쿼리를 작성해 결과물을 보는 것에 집중했다면 이 책을 통해 더 좋은 SQL이 무엇인지 고민해 보는 계기가 되었다.
물론 난이도가 조금 있는 편이라 처음 SQL 입문용으로는 어렵지 않을까?라는 생각이 든다.
그래서 기초적인 개념을 알고 본다면 한 단계 성장할 수 있는 좋은 책이라고 생각한다.
잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!☺️
댓글과 좋아요는 큰 힘이 됩니다!

'T-LOG > R-LOG' 카테고리의 다른 글
| [R-LOG] 서평단 / Effective Python / 길벗 (0) | 2026.04.09 |
|---|---|
| [R-LOG] 서평단 / 앱 개발 트러블슈팅 with 리액트 네이티브 / 비제이퍼블 (0) | 2026.04.08 |
| [R-LOG] 서평단 / 정보처리기사 실기 기본서 후기 / 영진닷컴 (0) | 2026.04.07 |
| [R-LOG] 서평단 / ADSP 독학 교재 리뷰 / 영진닷컴 (0) | 2026.04.06 |
| [나는 리뷰어다] 스프링 부트 입문서 부트 캠프 백엔드 개발자 (0) | 2026.02.26 |
