|
AI 코딩 에이전트가 대세인 요즘, SQL 역시 AI에게 맡기면 그만 아닌가 싶었지만 책 표지의 "SQL 사고법과 작성 원칙"이라는 문구가 눈길을 끌었다. 아무리 AI가 코드를 대신 작성해줘도, 결국 방향을 잡고 원칙을 세우는 건 사람의 몫이기 때문이다. 이 책은 SQL 입문서가 아니다. SELECT나 WHERE 같은 기초 문법을 처음부터 설명하지 않고, SQL의 역사와 관계형 데이터베이스의 배경 이론, 그리고 쿼리를 짜는 사고 과정과 원칙을 중심으로 구성되어 있다. 특정 DBMS에 종속되지 않고 표준 SQL을 다루면서도 각 DBMS별 특이사항과 최적화 방법까지 함께 짚어줘서, MySQL이든 PostgreSQL이든 Oracle이든 상관없이 활용할 수 있다. 코드를 그냥 따라 치게 하는 구성이 아니라, 먼저 상황을 제시하고 그 문제를 해결하는 흐름으로 내용이 전개된다. 각 챕터 말미에는 연습문제와 해설도 포함되어 있어 실질적인 학습이 가능한 것이 좋은 점이라 생각했다. 완전 초보에게는 다소 벅찰 수 있지만, 데이터를 다루는 모든 직군에 추천할 만하다. AI 시대에도 이론 공부가 왜 필요한지를 자연스럽게 납득하게 만드는 책이다. |
|
[제이펍 출판사에게 책을 제공받아 작성하는 리뷰입니다.] 처음 SQL을 접했을 때, 프로그래밍 언어만 다루다가 SQL을 사용하니 아주 답답했습니다. 뭔지 모를 이질감이 느껴졌었는데요, 이 책을 읽고서야 그 이유를 깨달았습니다. SQL의 기초 이론 중 하나는 집합론이며, '집합 지향'으로 설계된 언어이기 때문입니다. SQL의 토대가 되는 이론 중 하나가 집합론이기 때문에 프로그래밍 언어와는 차이점이 있었습니다. 집합 지향 언어를 절차 지향 언어처럼 다루려 했으니 당연히 이질감이 들었을 것입니다. 이 책에서는 SQL 설계 의도에 맞춰 SQL을 강력하게 다루는 방법을 설명합니다. 인상 깊은 내용들 이진 논리(True, False)만 지원하는 프로그래밍 언어들과 달리, SQL에서는 unknown이라는 세 번째 진리값을 갖는다는 점 따라서 NULL을 다룰 땐 결과가 직관적이지 않다는 점 그럼에도 엔지니어라면 이런 내용을 확실히 이해해야 한다는 점 그리고 WinMagic..윈도 함수는 서브 쿼리를 대부분 대체할 수 있다는 점
|
|
#제이펍 #SQL #윤인성 #SQL이렇게하면된다 '출판사로부터 도서를 제공받아 주관적으로 작성한 글입니다'
프론트엔드 개발을 하면서 SQL을 직접 많이 작성해 볼 일은 생각보다 많지 않았다. 데이터를 화면에 어떻게 보여 줄지, 사용자의 입력을 어떻게 처리할지, API 응답을 어떤 구조로 받아서 렌더링할지에 더 익숙했다. 그래서 SQL은 백엔드나 데이터베이스를 다루는 사람이 주로 깊게 공부하는 영역이라고 생각했다. 나에게 SQL은 필요한 데이터를 조회하기 위한 문법 정도에 가까웠고, 복잡한 쿼리를 깊게 이해해야 한다는 생각은 크게 하지 못했다. SQL 이렇게 하면 된다는 그런 생각을 조금 바꿔 준 책이었다. 처음에는 제목만 보고 SQL을 쉽게 익히는 실습서에 가까울 것이라고 예상했다. 하지만 읽어 보니 단순히 문법을 따라 쓰는 책이라기보다 SQL을 어떻게 바라보고 생각해야 하는지를 다루는 책에 가까웠다. 그래서 가볍게 넘길 수 있는 책은 아니었다. 오히려 SQL을 많이 써 보지 않은 입장에서는 천천히 읽어야 하는 부분이 많았다. 책에서 인상 깊었던 점은 SQL을 절차적으로 생각하지 말고 집합을 다루는 방식으로 이해해야 한다는 흐름이었다. 프론트엔드 개발을 하다 보면 데이터를 배열로 받고, 반복문이나 map 같은 방식으로 하나씩 처리하는 사고에 익숙해진다. 그런데 SQL은 그런 식으로 한 행씩 처리한다기보다 테이블 전체와 조건, 관계를 기준으로 결과를 표현하는 언어에 가깝다는 점을 책을 읽으며 다시 느꼈다. 이 차이를 이해하는 것이 SQL을 제대로 쓰는 출발점이라는 생각이 들었다.
CASE 식을 다루는 부분도 기억에 남았다. 평소에는 조건에 따라 값을 나누는 기능 정도로만 생각했는데, 책에서는 CASE 식을 다양한 상황에서 활용하는 방법을 보여 준다. 조건별로 집계하거나, 여러 조건을 하나의 SQL 안에서 처리하거나, UPDATE와 함께 사용하는 방식 등을 보면서 SQL 안에서도 생각보다 많은 판단과 표현이 가능하다는 것을 알게 되었다. 프론트엔드에서 조건문으로 처리하던 감각과는 다르게, 데이터를 가져오는 단계에서 조건을 어떻게 정리할 수 있는지 생각해 보게 됐다. 윈도 함수 부분은 어렵지만 흥미로웠다. 순위나 이전 행과의 비교처럼 행과 행 사이의 관계를 다루는 내용은 프론트엔드만 할 때는 깊게 생각해 보지 않았던 부분이었다. 보통은 API로 이미 정리된 데이터를 받는 경우가 많아서, 그런 결과가 데이터베이스 안에서 어떤 방식으로 만들어질 수 있는지 잘 몰랐다. 책을 읽으면서 윈도 함수가 단순한 고급 문법이 아니라 데이터를 분석하고 비교할 때 중요한 도구라는 점을 알게 되었다. NULL에 대한 설명도 새롭게 다가왔다. 프론트엔드에서는 null이나 undefined를 자주 다루지만, SQL에서의 NULL은 내가 생각하던 빈 값과는 다르게 동작한다는 점이 인상적이었다. 조건을 제대로 쓴 것 같은데 예상과 다른 결과가 나올 수 있다는 설명을 보면서, 데이터베이스에서 NULL을 가볍게 보면 안 되겠다는 생각이 들었다. 화면에서는 단순히 값이 없다고 표시되는 데이터도, 쿼리 안에서는 훨씬 조심해서 다뤄야 한다는 점을 배웠다.
HAVING, EXISTS, 조인, 집합 연산을 다루는 부분은 솔직히 한 번에 모두 이해되지는 않았다. 그래도 좋았던 점은 책이 단순히 이 문법은 이렇게 쓴다고 끝내지 않는다는 것이다. 왜 이런 방식으로 조건을 걸어야 하는지, 어떤 관점으로 테이블을 비교해야 하는지 계속 설명한다. 프론트엔드 개발자로서 평소에는 완성된 API 응답만 보고 작업할 때가 많았는데, 그 응답이 만들어지기 전 단계에서 데이터가 어떻게 걸러지고 묶이고 비교되는지 조금 더 구체적으로 상상할 수 있게 되었다. 후반부의 관계형 데이터베이스와 SQL의 사고방식을 다루는 내용은 특히 이 책이 단순한 문법서가 아니라는 느낌을 주었다. 관계 모델, 선언형 사고, 집합 지향 같은 내용은 처음에는 어렵게 느껴졌지만, SQL이 왜 일반적인 프로그래밍 언어와 다르게 느껴지는지 이해하는 데 도움이 되었다. 내가 SQL을 낯설게 느꼈던 이유도 단순히 문법을 몰라서가 아니라, 문제를 바라보는 방식이 달랐기 때문이라는 생각이 들었다. 개인적으로 이 책은 SQL을 처음 시작하는 사람에게 아주 쉬운 입문서처럼 추천하기보다는, SQL 기본 문법을 어느 정도 접한 뒤에 읽으면 더 좋은 책이라고 느꼈다. 나처럼 SQL을 많이 써 보지 않은 프론트엔드 개발자라면 모든 내용을 한 번에 흡수하기는 어렵다. 하지만 그래서 더 의미가 있었다. 읽고 나서 가장 크게 남은 감상은, 좋은 화면을 만들기 위해서도 데이터가 어떻게 만들어지는지 이해할 필요가 있다는 점이었다. 프론트엔드에서는 최종적으로 전달받은 데이터를 다루지만, 그 데이터가 어떤 조건과 관계를 거쳐 만들어졌는지 알면 API 응답을 이해하는 방식도 달라질 것 같다. SQL 이렇게 하면 된다는 SQL을 많이 써 보지 않은 나에게 쉽기만 한 책은 아니었지만, 데이터를 바라보는 시야를 넓혀 준 책이었다. |
|
데이터를 다루는 시대에 SQL은 더 이상 개발자만의 언어가 아니라고 생각한다. 이 책은 그런 변화 속에서 실무에서 바로 써먹을 수 있는 SQL을 목표로 하는 실용서다. 결론부터 말하면, 이 책은 SQL을 처음 접하는 사람보다는 한 번은 배웠지만 제대로 활용하지 못하는 사람에게 특히 강력할거라 생각한다. 이 책의 핵심 가치는 이론보다 실무이다. 많은 SQL 책들은 문법을 나열하는 데 그친다. 그러나 이 책은 달랐다. 이 책에서는 언제 어떻게 쓰는지에 포커스를 두고 있었다. SELECT, JOIN, GROUP BY 같은 기본 문법을 설명하면서도, 단순 문법 설명에 머무르지 않고 실제 데이터 분석 상황에서 어떻게 쓰이는지를 중심으로 풀어낸다. 특히 쿼리를 점진적으로 발전시키는 방식으로 이해를 도와준다. 이 책이 좋은 이유는 설명 방식에 있다. "문법 → 설명 → 끝" 방식이 아닌 "문제 → 고민 → 해결 → 개선" 구조를 반복한다. 덕분에 읽으면서 단순히 "아는 상태"가 아니라 "생각할 수 있는 상태"로 넘어간다. 특히 인상적인 점은 잘못된 쿼리와 개선된 쿼리를 비교하고 성능 관점에서도 접근하는 방식을 보여준 것이다. 단순히 작동하는 SQL이 아닌 좋은 SQL을 가르쳐주는 것으로 보였다. 아주 좋은 책이었지만 완전 초보한테는 책의 템포가 빠를 수 있을 것 같다. 또한 Oracle, PostgreSQL, MySQL이 아닌 DBMS의 경우, 일부 문법을 직접 바꿔가며 이해해야 될 것 같다. 실무에서 더 강력하게 써보고 싶은 사람에게는 강력 추천하는 책이다. |
|
* 본 서평은 제이펍의 서평단으로 선정되어 작성된 리뷰 입니다.
기존에 접했던 많은 SQL 책들이 SELECT, JOIN 같은 문법 설명에 집중했다면, 이 책은 한 단계 더 나아가 문제를 어떻게 해결할 것인지에 대한 사고방식을 중심으로 설명합니다. 특히 인상 깊었던 점은 CASE, 윈도 함수, EXISTS, HAVING 등 주요 기능들을 실제 문제 해결 흐름 속에서 자연스럽게 이해할 수 있도록 구성되어 있습니다. 덕분에 "이걸 언제 써야 하지?"라는 고민이 줄어들고 상황에 맞는 sQL 작성 감각을 익히는 데 큰 도움이 됩니다. 또한 응용력과 설계 능력을 키우는 데 초점이 맞춰져 있어 각 챕터마다 제공되는 연습문제와 해답도 학습 내용을 점검하기에 매우 유용했습니다.
다만 완전 입문자를 위한 책이라기보다는 기초 문법을 이미 알고 있는 상태에서 한 단계 더 성장하고 싶은 분들에게 적합한 난이도 입니다. 전체적으로 이 책은 SQL을 “도구”가 아닌 “사고 방식”으로 접근하게 만들어주는 좋은 길잡이였습니다. SQL 실력을 한 단계 업그레이드하고 싶다면 충분히 읽어볼 가치가 있는 책입니다. #제이펍 #SQL |
|
데이터베이스를 다루며 어느 정도 SQL 쿼리를 짤 줄 안다고 생각해 왔다. 하지만 복잡한 요구사항이 들어오면 서브쿼리가 한없이 중첩되고 쿼리 길이는 끝없이 길어지며 성능은 바닥을 치는 문제에 부딪히곤 했다. 미크 작가의 SQL 이렇게 하면 된다 제2판은 바로 이런 한계에 부딪힌 초급 엔지니어들에게 든든한 지원군이 되어준 책이다. SQL은 문법이 아니라 사고방식이다라는 문장은 왜 그토록 복잡한 쿼리와 씨름해야 했는지 그 근본적인 이유를 깨달을 수 있었다.
|
|
AI가 SQL 쿼리까지 대신 짜주는 시대지만, 결국 그 쿼리가 맞는지 읽고 판단하고 수정하는 힘은 사람에게 달려 있습니다고 생각해요. 'SQL, 이렇게 하면 된다'는 바로 그 기본기를 길러주는 책이었습니다. 이 책의 장점은 단순히 문법만 나열해주지 않는다는 겁니다. SQL을 집합론적 사고를 바탕으로 이해하게 만들고, 왜 이런 방식으로 쿼리를 써야 하는지까지 생각하게 합니다. 특히 CASE 식을 초보와 중급자를 가르는 기준으로 짚어낸 부분이 인상적이었습니다. 단순한 기능 설명을 넘어, SQL을 다루는 사고방식 자체를 보여준다는 점에서 차별화됩니다. 또 관계형 데이터베이스의 강점만 말하는 데 그치지 않고, 데이터가 폭증하는 환경에서 RDB가 가질 수 있는 한계와 NoSQL의 필요성까지 함께 설명해 준다는 점도 좋았습니다. Redis, memcached 같은 사례를 들어 KVS를 풀어내는 방식도 꽤 직관적이었습니다. 한마디로 데이터베이스를 어떻게 이해해야 하는지를 알려주니 좋았어요. AI가 짜준 쿼리를 그대로 쓰는 데서 벗어나, 직접 읽고 해석하고 다듬는 힘을 기르고 싶은 사람에게 추천할 만한 책입니다. * 출판사 측으로부터 책을 제공받아 작성한 서평입니다. |
|
(1) 기초부터 고급 쿼리까지 실제 예제로 빠르게 배우고 정확하게 쓰는 SQL 활용 및 프로그래밍 완전 가이드 비전공자에게 낯설 수 있는 SQL(Structured Query Language)은 관계형 데이터베이스(RDBMS)에서 자료를 관리하기 위해 설계된 프로그래밍 언어로, 데이터 검색과 관리 & 스키마 생성·수정 & 접근 권한 조정을 위해 고안되었습니다. 본 책은 일본의 유명 데이터베이스 엔지니어가 집필한 교양서로 SQL의 다양한 기능과 사용법, 핵심 사고방식을 해설하는 서적입니다. 10여년 전에 출간된 본 해설서가 개판된 것은 RDB와 SQL의 여전히 핵심 기술로 쓰이기 때문인데, 직관적이고 우수한 인터페이스(컴퓨터와 사용자 간의 통신이 가능하도록 하는 장치나 프로그램)로 인해 범용성이 넓습니다. 본 개정판에서는 ‘모던 SQL 프로그래밍’에 맞게 내용이 업데이트되었는데 SQL 숙련도를 높이고 싶은 전문 개발자와 교양지식을 쌓고 싶은 일반인에게 추천합니다. -------------‐------------------------------------------------ (2) 옮긴이 머리말: SQL을 한 걸음 더 깊이 이해한다면, 인공지능이 생성한 복잡한 쿼리를 읽고 판단하며 수정할 수 있을 것입니다. -------------‐------------------------------------------------ (3) 내용 1부. SQL이라는 마법: CASE 식은 조건에 따라 다른 결과를 만들어내는 아주 중요한 기능입니다. SQL 초보자와 중급자의 차이는 바로 CASE 식을 얼마나 잘 쓰느냐에 달려 있다고 할 수 있습니다. SQL은 집합론을 기반으로 만들어진 언어입니다. 2부. 관계형 데이터베이스의 세계: 오늘날 관계형 데이터베이스(RDB)와 SQL은 거의 모든 시스템에서 사용되고 있습니다. B2C/C2C 웹 서비스, 기업과 정부의 핵심 시스템, BI/DWH 같은 분석 시스템까지, 모든 분야에서 RDB를 활용합니다. 이런 높은 범용성이 RDB의 가장 큰 특징입니다. 데이터베이스는 원래 대량의 데이터를 저장했지만, 최근 데이터양이 폭발적으로 증가하면서 RDB가 시스템의 가장 큰 병목 지점이 되었습니다. RDB의 성능 문제를 해결하는 방법은 크게 두 가지입니다. (1) 데이터 모델을 단순하게 만들고 복잡한 작업 제한하기, (2) 병목 지점을 없애서 여러 서버로 확장 가능하게 만들기. 첫 번째 방법을 구현한 대표적인 NoSQL이 KVS(Key-value store)입니다. KVS도 넓게 보면 테이블의 한 종류로 볼 수 있지만, 키와 그에 대응하는 값이라는 아주 단순한 구조만 가집니다. 덕분에 키를 이용한 빠른 검색이 가능합니다. 레디스(Redis)와 멤캐시디(memcached) 같은 제품이 KVS 기능을 제공합니다. 💁추천: 개발자 & 프로그래밍 교양지식을 쌓고 싶은 人
|