러닝SQL / 앨런 볼리외
[책을 읽은 시점의 SQL 수준]
저는 SQL을 강의로 배웠습니다. 책으로 SQL을 본 것은 처음이었고요. 현업에서 SQL을 사용한지는 이제 약 5개월 정도 되었고요. 어느 정도 원하는 데이터를 추출하는 데에는 무리가 없는 수준입니다.
[이 책을 선택한 이유& 추천하는 이유]
이제 막 시작하는 분들도 물론 예제를 따라하면서 배우는 데에 무리는 없습니다. 하지만 대부분의 프로그래밍 학습이 그러하듯이, 책으로 독파를 시작하는 것보다는 저처럼 강의를 먼저 한 번쯤 들어보시고, 해커랭크나 리트코드의 문제 정도는 풀어보시길 권합니다.
문법 학습을 위한 문법책 보다는 전체적으로 기능을 훑고 디테일하게 놓친 부분을 잡고 싶어서 이 책을 선택했습니다. 빠지지 않게 모든 걸 담고 있으면서 처음부터 훑어내리기에 부담이 없는 책입니다.
"select 절은 select 문의 첫 번째 절이지만 데이터베이스 서버가 판단하는 마지막 절 중 하나입니다. 최종 결과셋에 포함할 항목을 결정하려면 최종 결과셋에 포함될 수 있는 모든 열을 먼저 알아야 하기 때문입니다."
신기하게도 아는 말이지만 이렇게 풀어서 들으면 이 지점에서 깨닫는 부분이 있거든요. 10문장 중에 아는 말이 80%라면 아깝게 느껴질 수도 있는데요. 오히려 거기서 얻는게 더 많습니다. 그러니 백지에서 시작하셨더라도 어느 정도 숙련이 된 뒤에 다시 읽어보시기를 추천합니다.
괜히 이 책의 서두에서 "본인에게 필요한 내용이 무엇인지 이미 잘 알고 있다면 유용하게 사용할 수 있는 안내서입니다."라고 말하는 것이 아닙니다.
이 책은 MySQL을 기본으로 합니다. 저는 다른 책은 안 읽어봤는데 옮긴이의 설명을 보니 드문 경우라고 하더군요. 그런데 상당히 많은 부분 — 거의 매 문법 설명 끝에 오라클이나 SQL서버, 혹은 그 이전 버전과 어떻게 다른지 조금씩 설명을 덧붙이고 있습니다. 현업에 계신다면 느끼시겠지만 이게 은근 정말 유용합니다.
"입문서에서는 거의 다루지 않는" 이 부분이 큰 포인트였습니다. 실제로 hivql을 사용하고 있기도 했거든요. 쿼리 작성 자체는 익숙하지만 SQL 자체에는 여전히 초보레벨이라서 하둡 관련된 전문서적은 너무 어렵고, 그런데 궁금하기는 하고. 그래서 입문서에 붙어있다는 점이 마음에 들었습니다.
사실 자세한 설명이 있는 건 아닌데, 그게 이 책의 주제는 아니기 때문에 생각했던 입문서적에 붙은 설명 정도가 맞습니다. 다음은 이를 바탕으로 해서 어떤 쪽으로 깊게 파볼지 정해보려고 합니다.
쿼리를 아무리 잘 짠다고 해도 한 번은 이런 문법책을 읽어야 한다고 생각합니다. 원리를 좀 더 명확하게 알고 짜는 쿼리와 그렇지 않은 쿼리는 확실히 다르니까요. 그게 결과적으로 변화가 없다고 하더라도요. (예를들어 3개 이상의 JOIN을 할 때 항상 순서가 신경쓰였는데, 상관없다고 합니다. 이 가벼운 마음을 어떻게 표현할지..) SQL을 한 번 학습하셨던 분들에게 이 책을 추천합니다.
#러닝SQL #한빛미디어
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."