태어난 지 40년이 넘은 SQL의 쓰임새는 데이터 전성시대를 맞아 확장하고 있다. 이 책은 개발자가 SQL 기본을 빨리 익히고 데이터베이스 애플리케이션 작성, 관리 작업 수행, 보고서 생성을 할 수 있게 도와주는 SQL 입문 가이드이다. 각 장에서는 다양한 그림과 주석이 달린 예제로 주요 SQL 개념과 기술을 학습하고 실습한다. 특히 입문서에서는 잘 다루지 않는 비관계형 데이터베이스에서 데이터를 쿼리하는 방법까지 한 권에 담았다.
추천사
데이터로 의미 있는 정보를 찾아내려는 수요가 점점 커지는 가운데 데이터를 다루는 힘을 기르는 SQL은 필수인 시대가 되었습니다.
『러닝 SQL』은 데이터를 잘 다룰 수 있도록 SQL을 이해하고 실제로 실습해보려는 입문자를 위한 책입니다. 또한 이 책에 포함된 예제를 통해 SQL 쿼리의 사용법을 상황에 맞게 단계적으로 이해할 수 있어, 실무자들에게도 훌륭한 가이드를 제공합니다.
저자가 의도한 것 이상으로 MySQL에 대한 다양한 실무 경험을 녹여낸 양질의 번역은 역자가 이 책에 쏟아부은 시간과 노고, 열정을 가늠하게 합니다. 이 책을 처음 접하는 독자 여러분에게도 이러한 경험과 노하우가 전해지길 바랍니다.
신혜원 VMware Tanzu 팀, CTO 앰배서더
쿼리의 기초부터 고급까지 모두 다루는 이 책은 개발자뿐만 아니라 SQL을 공부하고 싶은 모든 직군의 사람들에게 최고의 입문서 중 하나가 아닐까 합니다.
최근 가장 널리 쓰이는 DBMS 중 하나인 MySQL로 작성한 예제와 함께, 가장 최신 버전이면서 주로 쓰이게 될 MySQL 8.0에서 새로 소개된 CTE, 윈도우 기능을 이용한 쿼리들도 다룹니다. 따라서 MySQL/MariaDB를 이용하거나 앞으로 이용하려는 분들에게 큰 도움을 줄 수 있을 것입니다.
MySQL DBA로서 실무를 담당하면서 받는 다양한 문의의 답변이 대부분 이 책에 담겨 있습니다. 게다가 파티션을 비롯한 테이블 설계와 인덱스 전략 부분까지 다루므로 MySQL/MariaDB를 다루는 분들이라면 또 하나의 필독서가 될 것입니다.
조민 카카오뱅크 MySQL 팀
IT 실무 담당자라면 백문이 불여일타라는 말에 공감하실 겁니다. 이미 안다고 생각한 내용도 직접 실습했을 때 비로소 온전한 자기 지식이 된다는 뜻입니다. 이 책은 이러한 실습을 통해 지식을 익히려는 분들께 큰 도움이 될 것입니다.
클라우드 시대에 접어들면서 데이터베이스 소프트웨어 자체는 클라우드 서비스 프로바이더가 관리하게 되어 DB 관리보다는 DB 활용이 더욱 중요해지고 있습니다. 특히 정해진 리포트 이외의 숨겨진 숫자를 찾기 위해서 IT 실무자가 아닌 현업 실무자들에게도 SQL 활용 능력이 요구됩니다. 자신의 기술을 DB 관리에서 DB 활용으로 바꾸려는 IT 실무자 여러분과 새롭게 SQL을 배우려는 현업 실무자 모두에게 좋은 길잡이가 될 것입니다.
이범석 아마존(AWS) Cloud Support 팀
저자소개
저자
앨런 볼리외
30여 년간 사용자 지정 데이터베이스를 설계하고 구축했다. 주로 금융 서비스 부문에서 대형 데이터베이스의 설계, 개발 및 성능 튜닝을 전문으로 하는 컨설팅 비즈니스를 수행한다. 여가 시간은 가족과 함께 시간을 보내거나, 밴드에서 드럼 또는 테너 우쿨렐레를 연주하기도 하며, 종종 아내와 하이킹을 하면서 멋진 경치를 볼 수 있는 점심 식사 장소를 물색한다. 코넬 대학교에서 공학 학사 학위를 받았다.
역자
류수미
LG CNS 금융사업부에서 은행, 보험, 증권사를 포함한 금융권의 차세대 시스템, 방카슈랑스 및 BPR 등 다양한 프로젝트를 수행했다. JavaEE 환경에서 개발 및 아키텍처를 만들고 검증하는 아키텍트로 근무했다. 현재 오라클 MySQL GBU에서 근무 중이다. 지금까지 많은 고객사의 MySQL POC, BMT를 지원했으며 MySQL 행사뿐만 아니라 다양한 오픈소스 행사에서 MySQL 관련 발표 및 강의를 진행했다. 페이스북의 한국 MySQL 사용자 그룹 운영진으로 활동하고 있다.
역자
송희정
대우정보시스템 벤처포트 전자상거래 사업부에서 자바 웹 개발자로 근무했다. 이후 기술연구소로 옮겨 기술 전략팀을 거친 후, 전사 표준 프레임워크 개발, 보급 및 JavaEE 기술 컨설팅을 수행했다. 오라클에서 미들웨어 엔지니어로 활동하다가 2012년 이후 오라클 교육사업본부에서 교육 컨설턴트로서 기업체 대상의 전문가 양성 과정 개발과 DT 기술 역량 확보 및 내재화 관련 컨설팅을 했다.
목차
CHAPTER 1 배경
1.1 데이터베이스 소개
1.2 SQL
1.3 MySQL
1.4 SQL의 변화
1.5 이후 내용 소개
CHAPTER 2 데이터베이스 생성과 데이터 추가
2.1 MySQL 데이터베이스 생성
2.2 mysql 명령줄 도구 사용 방법
2.3 MySQL 자료형
2.4 테이블 생성
2.5 테이블 수정
2.6 좋은 구문을 망치는 경우
2.7 샤키라 데이터베이스
CHAPTER 3 쿼리 입문
3.1 쿼리 역학
3.2 쿼리 절
3.3 Select 절
3.4 From 절
3.5 Where 절
3.6 Group by 절과 having 절
3.7 Order by 절
3.8 학습 점검
CHAPTER 4 필터링
4.1 조건 평가
4.2 조건 작성
4.3 조건 유형
4.4 Null
4.5 학습 점검
CHAPTER 5 다중 테이블 쿼리
5.1 조인
5.2 세 개 이상 테이블 조인
5.3 셀프 조인
5.4 학습 점검
CHAPTER 6 집합 연산자
6.1 집합 이론
6.2 집합 이론 실습
6.3. 집합 연산자
6.4 집합 연산 규칙
6.5 학습 점검
CHAPTER 7 데이터 생성, 조작과 변환
7.1 문자열 데이터 처리
7.2 숫자 데이터 처리
7.3 시간 데이터 처리
7.4 변환 함수
7.5 학습 점검
CHAPTER 8 그룹화와 집계
8.1 그룹화의 개념
8.2 집계 함수
8.3 그룹 생성
8.4 그룹 필터조건
8.5 학습 점검
CHAPTER 9 서브쿼리
9.1 서브쿼리
9.2 서브쿼리의 유형
9.3 비상관 서브쿼리
9.4 상관 서브쿼리
9.5 서브쿼리를 사용하는 경우
9.6 서브쿼리 요약 정리
9.7 학습 점검
CHAPTER 10 조인 심화
10.1 외부 조인
10.2 교차 조인
10.3 자연 조인
10.4 학습 점검
CHAPTER 11 조건식
11.1 조건식
11.2 case 표현식
11.3 case 표현식의 예
11.4 학습 점검
CHAPTER 12 트랜잭션
12.1 다중 사용자 데이터베이스
12.2 트랜잭션
12.3 학습 점검
CHAPTER 13 인덱스와 제약조건
13.1 인덱스
13.2 제약조건
13.3 학습 점검
CHAPTER 14 뷰
14.1 뷰
14.2 뷰를 사용하는 이유
14.3 갱신 가능한 뷰
14.4 학습 점검
CHAPTER 15 메타데이터
15.1 데이터에 관한 데이터
15.2 정보 스키마
15.3 메타데이터로 작업하기
15.4 학습 점검
CHAPTER 16 분석 함수
16.1 분석 함수의 개념
16.2 순위
16.3 리포팅 함수
16.4 학습 점검
CHAPTER 17 대용량 데이터베이스 작업
17.1 분할
17.2 군집화
17.3 샤딩
17.4 빅데이터
CHAPTER 18 SQL과 빅데이터
18.1 아파치 드릴 소개
18.2 드릴로 파일 쿼리하기
18.3 드릴로 MySQL 쿼리하기
18.4 드릴로 몽고DB 쿼리하기
18.5 다양한 데이터소스를 사용한 드릴
18.6 SQL의 미래
APPENDIX A 예제 데이터베이스의 ER 다이어그램
APPENDIX B 실습문제 해답
출판사리뷰
출판사 리뷰
지금 당장 SQL 실무를 배우고 싶은 입문자라면 바로 이 책입니다!
이 책은 SQL 입문에 그치지 않고 다양한 조인과 롤업 등 고급 기능까지 함께 다룹니다. SQL을 시작하는 분들뿐만 아니라 한 권으로 살펴보는 SQL 참고서를 원하는 분들께 좋은 지침서가 될 것입니다.
왜 SQL을 배워야 할까요?
이 책의 독자 여러분이 데이터 과학이나 비즈니스 인텔리전스 또는 데이터 분석의 관련 분야 종사자라면, 관계형 데이터베이스의 사용 여부와 상관없이 파이썬이나 R과 같은 다른 프로그래밍 언어 및 플랫폼과 더불어 SQL을 알아야 합니다. 데이터는 어디에나 존재하고 급격하게 증가하며, 이러한 데이터로부터 유의미한 정보를 찾아내고자 하는 수요가 점점 커지고 있기 때문입니다.
왜 이 책을 읽어야 할까요?
시중에 ‘초보자를 위한’ 도서는 많지만 대부분 겉핥기식으로 훑는 경향이 있습니다. 이 책은 SQL이 제공하는 모든 명령문을 순차적으로 자세히 설명합니다. 본인에게 필요한 내용이 무엇인지 이미 잘 알고 있다면 유용하게 사용할 수 있는 안내서입니다.
SQL의 배경부터 살펴본 뒤 기초 문법을 설명하고, 여러분을 더욱 돋보이게 해줄 고급 기능을 적절한 난도로 진행하며 알아봅니다. 또한 입문서에서는 거의 다루지 않는 비관계형 데이터베이스에서 데이터를 쿼리하는 방법을 보여주며 마무리합니다.
SQL 기본과 다양한 고급 기능을 빠르게 알아봅니다.
SQL 데이터 문을 사용하여 데이터를 생성, 조작, 검색합니다.
SQL 스키마 문을 사용하여 테이블, 인덱스, 제약 조건과 같은 데이터베이스 개체를 생성합니다.
데이터셋이 쿼리와 어떻게 상호작용하는지 알아보고 서브쿼리의 중요성을 이해합니다.
SQL 내장 함수를 사용하여 데이터를 변환 및 조작하고, 데이터 문에 조건식을 사용합니다.
이 책은 IT 서적을 전문적으로 출판하는 미국의 출판사 오라일리 미디어에서 출판된 책을 번역한 번역서이다. 원서의 경우 7만 원으로 매우 가격이 높다. 번역까지 되어있는데 절반도 안 되는 좋은 가격이다. 알만한 분들은 아시겠지만 번역 개발서의 경우 재판이 잘되지 않기 때문에 출판이 된다면 망설이지 말고 구입하는 것이 좋다.
이전 여러 번역서들을 보면 해당 분야의 전문가가 아니 비전문가들이 번역한 책들이 많아서 개발 용어를 이상하게 번역하여 말이 안 되는 경우가 많았다. 그래서 개발 번역서를 비선호 하기도 하였는데 이 책을 번역하신 분들은 해당 분야의 전문가이면서 이름만 들어도 알 수 있는 회사에서 일을 하시고 계신 분들이라 번역된 내용에 대한 걱정은 하지 않아도 될 것 같다.
책의 내용은 굉장히 군더더기 없이 심플하다. 아메리칸 스타일이라서 그런지 모르겠지만. 비 개발자에서 개발자로 전직을 하는 사람들보다는 기존 개발자 중에서 SQL이 필요한 사람들이 보면 좋을 것 같다. 아 참고로 제목은 SQL이지만 MySQL 8.0기준으로 설명이 되어 있는 책이다. 개발자라면 MS-Sql, MySql 정도는 들어 보았을 것이다. 그리고 MS-Sql은 유료, MySql은 무료이다. 기본적인 문법 같은 경우에는 양쪽이 다 비슷하고 점점 표준화되어 가고 있기에 SQL을 처음 공부하는 데 있어서는 유료보단 무료 쪽이 좋을 것 같다.
효율적인 것을 좋아하는 개발자의 성격에 맞게 불필요한 내용 없이 꼭 필요한 내용들만 깔끔하게 정리되어 있다. 다른 면으론 좀 불친절해 보일 수 있지만 저 시간이 없는데 요점만 말씀해 주실래요?라는 말을 자주 한다거나, 아메리칸 스타일의 개발서로 공부를 하고 싶은 사람들에게 추천한다.
책의 내용은 기초부터 응용 요즘 많이 들어본 빅데이터 처리까지 SQL로 할 수 있는 웬만한 것들 것 다 들어있다고 보면 된다.
그래서 처음부터 끝까지 한 번에 공부하면서 읽은 것도 좋지만, 사전처럼 옆에 두고 개발하면서 필요한 것들을 찾아가면서 보기에도 좋은 책이라고 생각한다.
SQL (structured query language)이란 데이터베이스를 사용할 때, 데이터베이스에 접근할 수 있는 데이터베이스 하부 언어를 말하는데요.
급격하게 변화하고 있는 IT 세상에서 SQL은 40년 이상의 역사를 자랑한 관계형 데이터베이스에서 데이터를 생성, 조작하고 검색한 언어입니다. 새로운 언어들이 탄생하고 사라지는 시점에서 40년 넘은 SQL의 데이터에 관련된 저서는 많이 있습니다.
그중에 MySQL을 기준으로 SQL을 다루는 저서를 쉽게 찾기는 쉽지 않습니다. 그리고 대부분 SQL 도서가 주로 오라클 데이터베이스 또는 SQL 서버 기준으로 예제를 제공하는데요. 이번 러닝 SQL은 그런 점을 해소 시켜주는 점이 큰 장점입니다. 주요 개념들은 SQL 지침서라고 할 정도 탄탄하고 예제가 MySQL 데이터베이스 기반으로 제공되므로, 데이터베이스 지식을 가지고 있으면서 MySQL로 구현하는 방법에 도움을 받을 수 있습니다. 구성이 MySQL에서 사용하는 구문만 제공하는 게 아니라 해당 기능이 오라클 데이터베이스와 SQL 서버에서 어떻게 제공되는 지까지 함께 다룬다는 점이 이 저서의 큰 장정입니다.
러닝 SQL은 입문 관련 지식을 넘어서 조인과 롤업 등의 고급 기능에 대한 개념과 예제들을 다양하게 담고 있습니다. 총 18개 장과 2개의 부록으로 구성되어 있습니다. 1장에서는 관계형 모델과 SQL의 등장 등 역사에 대한 내용을 간략하게 알아봅니다.
본격적으로 개념을 공부하기 위해 2장 데이터베이스 생성과 데이터 추가인 MySQL 데이터베이스를 생성한 뒤 예제를 이용한 테이블 생성, 해당 테이블에 데이터 채우는 방법부터 쿼리 입문, 필터링, 데이터 검색, 조인, 그룹화 및 정렬 방법을 기본적인 이해 등 18장 SQL과 빅데이터에 관련된 비관계형 데이터 플랫폼에서 데이터를 검색할 수 있도록 SQL 변환에 대해 알아볼 수 있습니다.
업무를 하다 보면 하나의 데이터베이스만 사용할 때도 있지만 프로젝트마다 다른 데이터베이스를 사용해야 할 때도 많은데 데이터베이스마다 다르게 제공되는 함수 등의 한 권으로 확인하고 비교해 볼 수 있는 점, 개념을 확실하게 이해할 수 있게 기본적인 개념 설명과 다양한 개념을 이용한 예제 파일이 있어서 그 개념을 확실하게 익히고 넘어 갈 수 있습니다. 살짝 첫 느낌은 전공서적 같은 느낌이 읽다보면 공부하는데 믿은직한 매력을 줍니다. 데이터 생성, 조작 및 검색까지 데이터 제대로 주무르기를 해보시길 추천합니다.
SQL 역시 책만 봐서는 이해하기 쉽지 않은 부분들이 많은 만큼, 이 책과 함께 비관계형 데이터베이스에서 데이터를 쿼리하는 방번까지 함께 담겨져 있는 러닝 SQL와 함께 오픈 소스를 제공되는 MySQL 데이터베이스를 활용해서 직접 SQL을 작성해봄으로써 여러분의 SQL 실력을 높일 수 있습니다.
저는 SQL을 강의로 배웠습니다. 책으로 SQL을 본 것은 처음이었고요. 현업에서 SQL을 사용한지는 이제 약 5개월 정도 되었고요. 어느 정도 원하는 데이터를 추출하는 데에는 무리가 없는 수준입니다.
[이 책을 선택한 이유& 추천하는 이유]
1에서 10까지의 문법책이 아니다.
이제 막 시작하는 분들도 물론 예제를 따라하면서 배우는 데에 무리는 없습니다. 하지만 대부분의 프로그래밍 학습이 그러하듯이, 책으로 독파를 시작하는 것보다는 저처럼 강의를 먼저 한 번쯤 들어보시고, 해커랭크나 리트코드의 문제 정도는 풀어보시길 권합니다.
문법 학습을 위한 문법책 보다는 전체적으로 기능을 훑고 디테일하게 놓친 부분을 잡고 싶어서 이 책을 선택했습니다. 빠지지 않게 모든 걸 담고 있으면서 처음부터 훑어내리기에 부담이 없는 책입니다.
80%는 알지만 나머지 20%에서 깨달음을 얻고 싶었다.
"select 절은 select 문의 첫 번째 절이지만 데이터베이스 서버가 판단하는 마지막 절 중 하나입니다. 최종 결과셋에 포함할 항목을 결정하려면 최종 결과셋에 포함될 수 있는 모든 열을 먼저 알아야 하기 때문입니다."
신기하게도 아는 말이지만 이렇게 풀어서 들으면 이 지점에서 깨닫는 부분이 있거든요. 10문장 중에 아는 말이 80%라면 아깝게 느껴질 수도 있는데요. 오히려 거기서 얻는게 더 많습니다. 그러니 백지에서 시작하셨더라도 어느 정도 숙련이 된 뒤에 다시 읽어보시기를 추천합니다.
괜히 이 책의 서두에서 "본인에게 필요한 내용이 무엇인지 이미 잘 알고 있다면 유용하게 사용할 수 있는 안내서입니다."라고 말하는 것이 아닙니다.
다양한 데이터베이스를 비교한다.
이 책은 MySQL을 기본으로 합니다. 저는 다른 책은 안 읽어봤는데 옮긴이의 설명을 보니 드문 경우라고 하더군요. 그런데 상당히 많은 부분 — 거의 매 문법 설명 끝에 오라클이나 SQL서버, 혹은 그 이전 버전과 어떻게 다른지 조금씩 설명을 덧붙이고 있습니다. 현업에 계신다면 느끼시겠지만 이게 은근 정말 유용합니다.
비관계형 데이터베이스에 관한 설명 첨부
"입문서에서는 거의 다루지 않는" 이 부분이 큰 포인트였습니다. 실제로 hivql을 사용하고 있기도 했거든요. 쿼리 작성 자체는 익숙하지만 SQL 자체에는 여전히 초보레벨이라서 하둡 관련된 전문서적은 너무 어렵고, 그런데 궁금하기는 하고. 그래서 입문서에 붙어있다는 점이 마음에 들었습니다.
사실 자세한 설명이 있는 건 아닌데, 그게 이 책의 주제는 아니기 때문에 생각했던 입문서적에 붙은 설명 정도가 맞습니다. 다음은 이를 바탕으로 해서 어떤 쪽으로 깊게 파볼지 정해보려고 합니다.
쿼리를 아무리 잘 짠다고 해도 한 번은 이런 문법책을 읽어야 한다고 생각합니다. 원리를 좀 더 명확하게 알고 짜는 쿼리와 그렇지 않은 쿼리는 확실히 다르니까요. 그게 결과적으로 변화가 없다고 하더라도요. (예를들어 3개 이상의 JOIN을 할 때 항상 순서가 신경쓰였는데, 상관없다고 합니다. 이 가벼운 마음을 어떻게 표현할지..) SQL을 한 번 학습하셨던 분들에게 이 책을 추천합니다.
학부때 공부한 이후로, 쉬운 책을 몇 번 접하기는 했으나, 취직한 이후로는 안드로이드 개발자로 살아왔기에, 실제 실무에서는 크게 다룰 일이 없었기 때문일 듯 싶다.
서버 개발자라면 많이 다뤘을 주제이지만, 안드로이드 개발자로서는 SQLite 정도가 전부였다.
그래도 모를수는 없는 전산학의 기본중의 기본이기 때문에 알아야 하는 부분이기 때문에 관심은 항상 있었다.
> 책에 대한 간단한 정보
그러던 중 이 책을 접했다.
SQL에 대해 어떤 내용이 적혀있는지는 알 수 없었지만, 두께도 적당했고, 완전 초보자를 위한 내용이 적혀있는 것으로 보이지 않는 목차가 눈에 띄었다.
18개의 챕터로 되어있는 것을 보면서 드는 또 하나의 생각으로는 누군가에게 학습용으로 가르치고 배우기 좋다는 생각도 들었다. 물론 스터디 그룹도 해당된다.
> 인상깊은 부분들
눈에 띄는 부분들이 몇 군데 있었는데, 그 중 몇 개만 기록하자면 다음과 같았다.
SQL 자체에 대해 생각보다 디테일한 정의를 말하고 있는 부분이다.
비 절차적 언어라는 측면에서 SQL을 바라본 적은 없었다.
하지만, 그런 관점에서 설명하고나니 뭔가 하나의 언어로서 대할 수 있도록 만들어 준 느낌이다.
그리고, 조인과 같은 부분이 나오는건 어찌보면 당연하기 때문에 특별할 것은 없지만, 이에 대해 심화로 다룬 부분은 인상깊었다. 사실 조인은 그냥 하면 되지 않나 생각을 하고 넘어가기도 하지만, 닥쳐오는 상황은 여러 상황이 있을 수 있는데, 이에 대해 상황별로 적용할 수 있도록 다양한 조인에 대해 언급하고 있다.
그리고, 학습에 대해 초점을 맞춘 책이니만큼, 학습 점검에 대한 부분이 각 챕터별로 할당되어 있었다.
그래서 문제가 나오고, 해당되는 답이 책의 맨 뒤에 적혀있다.
그래서 이런것들로 인해 한 번 더 생각하게 만들었다. 이런 부분이 중요하다고 생각한건 사실 책을 보면서 학습할 때에는 그런가보다... 혹은 당연하다는 것으로 생각할 수 있는데, 막상 그렇게 넘어갈 경우 제대로 내용을 파악하지 못했을 가능성이 높다.
따라서 그렇게 되지 않도록 노력하는 부분이 필요하다. 퀴즈는 그런 부분을 보강해 주는 좋은 도구가 된다고 생각하기 때문에 인상깊게 와 닿았다.
책의 뒷 표지 부분에는 각 분야에서 일하시는 분들의 추천으로 좀 더 신뢰를 주고 있고, 추가로 관련 도서를 보고 싶도록 만들고 있다고 생각한다.
> 괜찮은 부분
1. 학습에 포커스를 맞췄다.
학습이 필요한 사람이 볼 수 있도록 책의 제목부터 러닝 SQL이다. 제목만 이럴 것이다 라고 생각을 했지만, 들여다볼수록 학습을 신경 썼다는 생각이 들었다. 대표적으로 각 챕터 마지막에 적혀있는 실습 문제에 대한 부분이었다. 그 외에도 이론적인 부분부터 차근히 업그레이드 시켜주는 느낌의 목차 배치가 학습에 도움이 되도록 했다는 생각이 들었다.
2. 넓은 학습 범위
1번과 이어지는 장점이 될 것 같은데, 처음이나 아직 제대로 개념잡히지 않은 사람이 SQL을 배우고 싶어서 이 책을 보는 경우 초보적인 개념부터, SQL문을 잘 만들 수 있는 부분에 이르기까지 학습범위가 넓게 되어있다. 물론 더 고급적인 문장을 만들기 위해서는 다른 책을 추가로 접해야겠지만, 여기에 수록된 내용만으로도 어느정도 실무에서 도움이 될 내용이라고 생각이 든다. 기초 없이 응용이 불가능하기 때문이다.
3. 하나의 실습 예제로 전체를 다룸
ER다이어그램도 부록에 수록되어 있지만, 하나의 예제 데이터베이스를 기반으로 이 책 전체를 커버한다. 그래서 실제 하나의 시스템이 존재한다고 가정하고 그것을 자유자재로 다루면서 실습하는 느낌이 들도록 하였다고 생각이 든다. 또한 예제가 바뀌지 않기 때문에, 예제에 집중하기보다는 그 안에 담긴 내용에 더 집중하도록 만들었다는 생각이 든다.
> 아쉬운 부분
1. RDBMS에 대해서만 다룸
SQL이 RDBMS에 대한 부분을 뜻하기 때문일까. NoSQL에 대한 언급이 끝에 살짝 나오기는 하지만, 크게 다루지는 않는다. 목차를 보고서 NoSQL에 대해서 어느정도 다뤘을 것이라고 착각을 해서인지 이 부분은 아쉬웠다. 오히려 예제의 일부를 발췌해서 RDBMS에서는 이렇게 다루지만, NoSQL로 가져왔을 경우에는 어떻게 활용이 가능할 것이라는 정도의 수록이 있었다면 좀 더 와닿는 부분도 크고, 트렌드에 맞춘 지식도 어느정도 커버할 수 있었을 것이라고 생각했다.
2. 각 내용을 발췌해서 보기는 어려움
학습에 포커싱을 맞춰서 그런것일 수도 있으나, 전체를 다 본다면 상관없겠지만, 내용을 일부 발췌해서 보고 싶은 경우 해당하는 주제나 키워드를 찾아서 보기는 어려워보였다. 가령 함수를 찾고 싶을 때에도 여러페이지를 넘겨가며 내용을 보면서 찾지 않으면 눈에 잘 띄지 않는다.
3. 데이터베이스 도구 설명 필요
데이터베이스를 다루기 위해서는 일반적으로 커맨드 창만을 활용하지는 않는다. 실무에서는 여러 도구를 사용하게 될 텐데, 그에 대한 소개가 부족해 보인다. 실제 책의 내용을 도구 기반으로 설명할 필요는 없지만, 어느정도의 지면을 할당하여 도구를 알려주었더라면, 그 각각의 장단점을 알고 활용하는 데 도움이 되지 않았을까 생각이 든다.
SQL의 전반을 깔끔하게 그리고 단계별로 잘 정리한 책이다. 다루고 있는 내용을 간단히 정리하면 다음과 같다.
RDBMS가 탄생하기까지 역사의 전반과 시대적 필요성을 훑어본 후 데이터베이스를 설치하고 실습할 데이터를 마련한다. 이후 기본적인 CRUD를 다룬 후, Where 절에 해당하는 필터링을 배운다.
다중 테이블을 기반으로 한 기본 조인, 데카르트 연산에 속하는 수학의 집합 연산, 자주 활용하는 데이터의 기본 조작을 다룬다. 이어서 SQL 연산 중 가장 많이 활용되는 집계 연산과 목적을 달성하기 위한 임시 거처 서브쿼리를 익힌다.
10장부터는 중급 수준에 첫 발을 내딛는데 OUTER JOIN과 같은 심화과정의 조인에 대해 학습한다. RDBMS의 이름에서도 알 수 있듯 여러 테이블 간의 관계가 가장 중요한 개념이기 때문에 이 Join 연산을 자유 자재로 다룰 수 있어야 의미있는 데이터 활용이나 분석을 위한 내공을 쌓을 수 있다. 개인적으로 10장은 가장 중요한 장이라 생각한다.
이어서 Case문을 학습하고 트랜잭션의 기본 개념을 다룬다. 트랜잭션 또한 RDBMS의 중요한 개념 중 하나인데 ACID를 보장하기 위해 하나의 트랜잭션을 Lock을 통해 보호하는 과정을 쉽게 잘 설명하고 있다.
다음으로 설명하는 인덱스와 각종 제약조건은 성능과 RDBMS의 특성을 유지하기 위한 수단으로 중요한 개념들이며 View, Metadata로 보다 편리한 데이터 활용 방법을 익힌다. 그 외 한 차원 높은 분석을 위한 데이터 윈도우나 리포팅 함수를 익히며 파티션을 통한 대용량 데이터베이스 처리 기술을 익힌다.
마지막으로는 아파치 오픈 소스인 드릴을 소개하며 MongoDB를 SQL로 접근하는 방법을 익히게 되는데 RDBMS 자체에 그치지 않고 NoSQL 진영과의 호환성을 고려한 점이 인상적이었다.
SQL의 중요성
SQL을 실전에서 20년 가까이 다뤄온 사람으로써 이 정도면 SQL을 고급으로 다루는 데 필요한 80%의 기초는 충실히 반영한 책이라고 평가하고 싶다.
SQL은 RDBMS를 다루기 위한 태생적인 목적으로도 중요하지만, 특히 요즘은 더 중요한 스킬이 된 것 같다. AI와 빅데이터 시대에 수요가 높아졌기 때문이다. 데이터는 성격에 따라 RDBMS와 같은 Tabular 성격의 정형데이터만 존재하는 것도 아니고, Json과 같은 반정형 데이터에서부터 이미지, 텍스트와 같은 비정형 데이터도 존재한다.
지금까지 인류가 쌓아 온 대다수의 유의미한 지식들이 여전히 RDBMS로 구축되어 있는데다 SQL이 가지고 있는 깔끔함과 쉬운 난이도라는 장점 때문에 NoSQL 진영 반정형 데이터의 영역도 SQL로 접근하려는 시도가 지속적으로 이어지고 있다. 이 책 18장에서 다루는 아파치 드릴이 그런 시도 중 하나이다. Hadoop 에코 진영의 Hive도 마찬가지다.
데이터 분석 진영에서의 변화에서도 SQL의 중요성을 느낄 수 있다. R의 데이터프레임은 정형 데이터를 분석하는데 가장 많이 활용하는 데이터 구조인데 자체 기능 외 SQL을 활용할 수 있도록 지원하고 있으며, Python의 Pandas는 SQL을 지원하지는 않지만, SQL로 필요로 하는 데이터 구조에 가깝게 미리 추출해 놓는다면 이어지는 Pandas의 분석이 얼마나 수월해지는지는 실전에서 경험해 본 사람이라면 누구나 공감할 것이다.
Python의 특성이 어떤 표현이든 사용할 수 있다는 유연성에 있다면 그만큼 다양한 분석 방법이 존재하여 유지보수하거나 커뮤니케이션 하는 측면에서는 어려움이 있는 것 또한 사실이다. 단 몇 줄의 SQL의 실행결과와 동일한 결과를 구현하기 위해 Pandas로 접근하면 코드 라인이 길어지거나 중복 단어를 여러번 중첩해서 사용해야 하는 불편함이 있기 때문이다.
물론 SQL은 통계학에서 말하는 기초 통계 수준의 연산과 가공을 완벽하게 지원하기에는 비 효율적인 측면이 분명히 있으며, 나아가 추론 통계에 적용하기에 적합한 형태가 아니며, 2차원처럼 보이지만 컬럼 축의 변환이 불가능한 고정형으로 되어있다. 나아가 머신러닝에 적용하는 것은 더욱 비효율적이며 딥러닝과 같은 비정형 데이터는 커버를 못한다.
따라서 이런 장단점을 십분 활용하여 Python(R)과 SQL 간 적정 경계선을 찾는 능력이 중요하다. 데이터 분석 진영의 최근 핫한 프로그램들이 커버하기 비효율적인 부분을 SQL로 커버한다면 시간이 생명인 요즘 생산성이나 가독성을 높이는데 큰 도움이 될 것이다.
이 책을 추천하고 싶은 이유 중 하나는 이런 시대적 필요성을 반영하는 목적에 충실하도록 쓰여졌다는 점을 들 수 있겠다.
책의 장점
책의 가장 큰 장점은 SQL을 쉽게 익힐 수 있도록 단계적으로 깔끔하게 설명하는 구성이라고 할 수 있다. 쉽고 구현 가능한 눈에 보이는 것을 먼저 시작하여 조금씩 살을 붙여나가며 중간중간 상세한 설명으로 보충하고 있어 가독성이 뛰어난 책이라는 생각이 들었다.
오라클 중심의 SQL 책은 시중에 많지만, MySQL이 중심이 된 책은 찾기 어렵다.
MySQL만 다루고 그치는 것이 아니라 Oracle이나 SQL서버에서 활용 방식이 다른 경우 함께 설명하고 있어 SQL 진영 종사자라면 누구에게나 도움이 될 만한 책이다. MariaDB는 이미 많은 분들이 알고 있듯 아파치 재단과의 싸움끝에 MySQL 원년 개발자들이 뛰쳐나와 만든 DB이기에 굳이 추가적인 설명은 필요 없을 듯 하다.
RDBMS에만 국한되는 것이 아니라 연계되어 활용될 수 있는 확장성도 고려한 점이 마음에 들었다. 아파치 드릴을 다룬 것이 그런 예시라 할 수 있다.
각 단원 마지막에 예시들이 배운 내용을 복습하고 정리하는데 알맞은 수준으로 잘 구성되어 있다.
책의 단점
10장 조인 심화 부분의 내용이 아쉬웠다. SQL을 접하면서 중급에서 고급으로 넘어가는 걸림돌이 하나 있다면 Outer Join을 들 수 있겠다. 단순 Outer Join이라면 그리 어려울 것이 없으나 일부 컬럼에만 Outer Join이 걸린다면 머릿속으로 전체 데이터 결과의 형상이 직관적으로 떠 오르지 않게 된다. 그런 부분들을 보다 심도있게 다뤘다면 더욱 각광을 받지 않았을까 싶다.
SQL92 표준을 다룬 것은 좋았으나 ANSI 표준 전반을 같이 언급, 비교하는 시도도 있었으면 했다. 이 책의 큰 장점 중 하나가 위에서 언급한대로 각 분야의 연계부분도 고려한 호환성이라 할 수 있겠는데, SQL92만 다룬 점은 대통합에 2% 부족한 약간 아쉬운 느낌이다.
진영마다 말은 많지만 outer join을 단순히 (+) 기호로만 표현한다는 것은 가독성 측면에 도움이 되고, 코드라인의 길이를 줄여 오류에 대한 잠재가능성을 낮춰준다는 점에서 분명 다룰만한 가치가 있기 때문이다.
어느 책이나 그렇듯이 명작도 난이도와 눈높이를 맞추지 못한 독자가 읽으면 졸작이 되는 법이기에 난이도도 추가로 언급하려 한다.
데이터나 SQL을 전혀 다루지 않은 왕초보 분들이라면 조금 어렵게 느껴질 수 있으며, SQL이 처음일지라도 엑셀 등으로 데이터에 친숙하거나 감이 좋은 분들이라면 처음부터 이 책으로 시작해도 괜찮을 거라 생각한다. 반면 일부 컬럼만 활용한 Outer Join에 능숙한 분이라면 혹은 그 이상의 실력이 있는 분들께는 너무 쉬운 책이 되어 많은 것을 얻지는 못할 것이다.
총평을 내리자면 전반적으로 SQL을 사고의 흐름에 맞춰 깔끔하게 정리하고 있어 SQL을 처음으로 익히는 분들이 좋은 메타 지식을 형성하기에 도움이 될 만한 책이라는 평을 내리고 싶다. SQL에 입문하거나 데이터 분석 업계 종사자 분들 중 SQL을 처음으로 배우는 분들께 추천하고 싶다.
최근 빅데이터가 화두로 떠오른 가운데 대용량의 데이터들을 가공하고 다루는데 많은 관심이 쏟아지고 있습니다.
데이터로 의미 있는 정보를 찾기위해서 SQL을 능숙하게 다루는 기술 또한 많이 요구됩니다.
이 책은 데이터를 그러한 중요성을 인식하고 데이터를 다루기 위해 SQL에 관심을 가지는 사람들의 입문용 서적으로 제격입니다. 쉽게 설명되어 있어 배우기에 수월합니다. 이 책을 통해 sql 쿼리 작성법 뿐만아니라 관계형 데이터베이스에 대한 기본적인 내용도 함께 익힐 수 있습니다.
쿼리문을 자주 작성하는 개발자, 혹은 머신러닝과 데이터 분석을 위해 SQL을 써야하는 데이터 분석 전문가, 또는 데이터 분석 입문자
본 포스터는 한빛미디어에서 [나는 리뷰어다]를 통해 책을 지원받아 작성한 리뷰 포스터입니다. 먼저 저는 대학원생이고 SQL의 경우 기본적인 강의와 코딩테스트용으로 잠시 준비했음을 미리 밝힙니다.
SQL의 경우 필요한 데이터를 추출하고 정제하기 위해서 많이 사용하는 언어입니다. 실제로 데이터 분석가의 필수역량 중 하나로 SQL을 잘해야한다는 얘기도 많이 들었습니다. 저도 그래서 개인적으로 SQL의 인강을 듣고 코딩테스트를 준비하면서 기초적인 역량은 쌓았지만, 다른 언어들에 비해 많이 헷갈리는 부분들이 많았습니다.
해당 책의 경우 읽으면서 부담감이 없이 읽혔습니다. 개인적으로 좋았던 부분은 많은 예시와 실습이 있어서 많은 연습을 해볼 수 있는 점입니다. 데이터 베이스에 대한 개념부터 시작해서 각종 쿼리에 대한 부분까지 다루니 기본서로 SQL을 입문하시는 분들에게 추천드리는 책입니다.
직업훈련 현장에서 학생들을 가르치다보면 의외로 학생들은 데이터베이스에 대해 많이 어려워한다. "마윈" 전 알리바바 회장의 말에 의하면 21세기는 데이터의 시대이다. 데이터를 누가 먼저 어떻게 이용하느냐가 회사의 사활 더 나아가 국가의 수준을 결정할 수 있는 시대가 되었다. 사실 누구나 데이터가 중요하다고 하면 다 공감한다. 하지만 그 데이터를 어떻게 다뤄야 하는지는 잘 모른다. 아무리 NOSQL이 부상하고 데이터분석가에 대한 관심은 많지만 현실은 관계형 데이터를 다루는 가장 기본적인 부분부터 시작해야 한다. 더구나 시중에 나와 있는 대부분의 관계형데이터베이스 책은 오라클 일색이다. 물론 현업에서 많이 사용하고 있기 때문이기도 하지만, 그렇다고 MySQL 데이터베이스엔진 역시 실무에서 많이 사용하는데 비해 추천할 수 있는 책은 거의 없다시피한다. 또한 대부분의 클라우드에서는 오라클을 지원하지 않는다. 세계 제1위의 IaaS업체인 AWS와 구글의 GCP는 오라클을 지원하고 있지만, 다른 클라우드 사업자들은 오라클을 지원하지 않는다. 정리하자면, 현업에서는 오라클을 많이 사용하지만 MySQL 역시 많이 사용하는 RDBMS이다. 클라우드에서도 오라클을 지원하는 클라우드 사업자가 있지만 대부분의 클라우드 사업자들은 오라클을 지원하지 않고 MySQL은 대부분 지원하고 있다. 추가적으로 MySQL에 대한 추천할 만한 좋은 책은 거의 없다. 이것이 현실이었다. 이 때 취업을 준비하고 있는 직업훈련 학생들에게도 또한 클라우드에서 관계형데이터베이스 서비스를 필요로 하는 분들에게 추천하고 싶은 좋은 책이 출간되어 여간 다행이지 않다. 이 책을 통해 관계형데이터베이스를 제대로 배우려는 분들에게, 현업에서 MySQL을 사용하고 있지만, 제대로 사용하려는 분들에게 가장 알맞는 책으로 추천드립니다.
그만큼 필요가 있다는 것 일 수도 있습니다. 다시금 데이터베이스가 SQL이 요청되는 것은 바로 서버환경의 변화와 그리고 딥러닝, 빅데이터에 발맞추어짐입니다. 서버환경의 변화는 바로 클라우드로 다양한 데이터베이스를 선택이 가능하기 때문입니다. 일전에는 DB제품이 중요했기에 해당 DB에 대한 특징 설치 부가기능에 대하여 관심이 높았던 것도 사실이기도 합니다. 그런데 이제는 오롯이 SQL에 집중할 수 있다는 겁니다. 그것이 바로 클라우드의 서비스의 장점이기도 합니다. 그리고 빅데이터, 딥러닝으로 파이썬에도 집중하지만 결국은 데이터라는 것 입니다. 데이터베이스를 어떻게 잘 정제하느냐에 따라 달라지는 것을 알게 되었기에, 시작은 데이터베이스이고 결국 SQL이라는 것입니다.
한빛미디어 러닝시리즈
O'REILLY
Learning SQL
데이터 생성, 조작 및 검색까지 데이터 제대로 주무르기
한빛미디어의 미리보기를 통해서 책이 어떤지 바로 접할 수 있습니다.
특별히 이번에는 기초보다는 레벨을 높히는 것에 중점을 두게 됩니다.
SQL레벨업을 하기 위하여, 트랜잭션과 서브쿼리, 그리고 메타데이터를 중심으로 찾아봅니다.
트랜잭션
트랜잭션은 여러 SQL 문을 함께 그룹화해서 모든 구문이 성공하거나 성공하지 않도록 하는 장치입니다.
서브쿼리
메타데이터
SQL의 미래
SQL 첫걸음부터 SQL 레벨업까지 그리고 하나씩 따라서 해볼 수도 있어서, 여러모로 도움이 됩니다. 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 한달에 한 권 테크관련 책을 유용하게 접하고 있습니다.
약 일년전인것 같다. 그때 SQL 첫걸음이라는 책으로 스터디를 진행한적이 있었다. 그 책과 비교 했을때, 조금더 난이도가 있는것 같은 느낌이 들었다. 왜냐하면 SQL 첫걸음 같은 경우 1단계부터 n단계까지 step by step으로 진행되었다는 느낌이었다면, 이 책은 이런 느낌은 아니였다. 책이라는 특성때문에 setp by step의 느낌이 완전히 없어진것은 전혀 아니다.
뭐랄까... 정직한 step by step이 아니라 큰 그림을 보여주고 그 그림이 어떻게 완성하는지 그 과정을 설명해주는 느낌이 들었다. 어떻게 보면 SQL첫걸음에 비하면 난이도가 다소 높다는 느낌이 들었다. 그렇다고 SQL 레벨업 처럼 비약적으로 난이도가 높은것은 전혀 아니다. 너무 난이도가 낮지 않으면서도 그렇다고 높지 않았다. 이 말은 공부하기에 적절한 느낌이 들었다. 왜냐하면 너무 쉬우면 입문목적으로는 좋지만, 잘못하다가는 흥미를 잃을 수 있기 때문이다. 그렇다고 너무 어려우면 도전정신은 생길지는 몰라도 금방 포기할 지도 모른다고 생각한다. 이런 관점에서 보면 이 책은 난이도 설정을 적절하게 한 느낌을 강하게 받았다.
정리를 하면, SQL 첫걸음을 입문 서적으로 두고 이 책을 다음 step으로 보면 딱 좋을 것 같다. 하지만 SQL특성상 같은 이야기를 반복하게 되니 다음 책을 볼때는 적절한 시기를 거친뒤에 보는것을 추천한다. SQL 첫걸음을 입문 서적으로 추천했지만, 이 책을 입문 서적으로 봐도 상관없다. 그렇게 까지 어렵지 않기 때문에 입문으로 봐도 문제 없다.
이 책은 한빛미디어에서 진행하는 `나는 리뷰어다 2021`에 참여하게 되어 읽게 됐습니다. 3월 리뷰처럼 이번 4월 리뷰에도 좋은 책들이 많았고, 저는 많은 책들 중 `러닝 SQL`, `몽고DB 완벽 가이드 3판`, `이것이 안드로이드다 with 코틀린(개정판)`을 선택했었습니다.
SQL이든 NoSQL이든 데이터베이스 공부는 필요하다고 생각했기에 선택했습니다. 최근 선형대수학, 통계학, 파이썬 라이브러리 공부 등을 한다고 조금 미뤄졌었지만, 데이터 분석 또는 머신러닝 분야에서 사용할 수 있을 거란 생각에 나중에는 꼭 공부해보고 싶었던 분야 중 하나였습니다.
코틀린은 나중에 졸업작품을 만들 때 안드로이드 앱 개발이 필요할 수 있다고 생각하니 공부를 해보고 싶었고요. 특히 최근에는 코틀린이 안드로이드 이외에 백엔드에도 쓰이고 있다고 들어서 선택했습니다.
이 책들 이외에도 클라우드 네이티브, 이것이 데이터 분석이다, 배워서 바로 쓰는 14가지 AWS 구축 패턴 등 좋은 책들이 많았습니다.
위와 같은 이유들이 있었지만 결국에는 `러닝 SQL`이 선택되어 대략 2주간 이 책만 보면서 공부했습니다.
책 소개
이 책은 제목에서도 보셨다시피 SQL을 공부하는 책입니다. MySQL, ORACLE DATABASE, IBM DB2, Microsoft SQL Server, PostgreSQL 같이 SQL은 종류가 많지만, 이 책은 이 중 MySQL을 중점으로 설명합니다. 가끔 MySQL 이외의 SQL 예제들이 나오기도 합니다.
SQL 예제들은 테이블을 직접 생성하여 사용하기도 하지만, 대부분 sakila database를 사용합니다. sakila database를 다운받아 환경을 구성하는 것을 어려워하는 사람들을 위해 이 책의 원서 출판사인 O'REILLY에서 운영하는 [Katacoda]라는 실습 환경을 제공해줍니다.
이외에도 환경을 구축할 수 있는 사람은 스스로 환경을 구축하여 책의 예제를 따라 하며 실습을 진행할 수 있습니다. 개인적으로 저는 WSL2(Windows Subsystem for Linux 2)를 사용하여 MySQL 환경을 구축했습니다. 처음에는 Windows에서 MySQL을 사용하려 했으나 이 책은 터미널에서 쿼리를 작성하는 환경을 사용하기 때문에 Workbench를 사용하지 않고 터미널에서 실습을 진행했습니다.
이 책은 455 페이지로 꽤 두꺼운 책이지만 Chapter가 18까지 있어 조금씩 보기 좋습니다. 하루에 한 Chapter씩 본다고 하면 18일이면 다 읽을 수 있죠. 한 Chapter가 끝날 때마다 `학습 점검 실습 문제`가 있어 Chapter의 내용들을 점검할 수 있는 구성으로 이루어져 있습니다. 이부분이 전 가장 마음에 들었습니다. 보통 이런 책들은 실습 예제만 있지만 문제들이 있다는 것이 공부한 내용들을 점검하기에 좋았습니다.
또한, 실습할 수 있는 코드가 많으며, 예제 코드마다 설명이 조금씩 있습니다. 상황마다 사용하는 코드들이 많이 제공되어 있기에 참고하기에 좋습니다. SQL을 작성하면서 어려운 부분이 있을 때 참고하면서 읽기에도 좋습니다.
대상 독자
개인적으로 이 책은 SQL을 적어도 한 번은 공부해본 분이 읽으셨으면 좋겠습니다. 물론 이 책은 두껍기도 하여 초보자를 위한 책이기도 합니다만, 읽으면서 '친절하다'는 느낌은 받지 못했습니다.
예를 들어 어떤 Chapter에서 설명하고자 하는 주제가 있지만, 그 주제와 조금 벗어난 다른 Chapter의 코드들을 맛보기로 보여주는 경우가 있었습니다. 그럴 때마다 맛보기로 실습을 해보긴 하지만, 무슨 의미인지도 모르고 실습했었습니다. 그러나 위에서도 말했듯이 실습할 수 있는 코드들과 그 각각의 코드들에 대한 설명이 조금씩 있었기에 실습하면서 공부하는데 매우 큰 도움이 되었습니다.
또한, Katacoda를 이용하는 방법 이외에 환경을 구축하는 부분에서도 a to z처럼 모든 것을 알려주는 것이 아니라 간략하게 설명이 되어 있습니다. 프로그래밍을 어느 정도 공부해본 독자들은 스스로 찾아 공부하는 습관들이 있어서 대략적인 설명이 있으면 알아서 환경 구축을 하고 실습을 진행할 수 있겠지만, 일반 독자들에게는 어려울 것이라고 생각합니다.
만약 SQL을 한 번도 공부해보시지 않으신 분이라면 이 책은 SQL 코드를 분석하고 공부하는 용으로 쓰고 설명 부분은 다른 책도 참고하면서 공부하셨으면 좋겠습니다. 전 코딩 테스트를 위해서 구글링으로 SQL을 공부했던 경험이 있어 이번에도 이 책을 읽으면서 구글링과 함께 공부했습니다.
요약
`SQL을 완전히 처음 공부하시는 독자라면 다른 책도 같이 읽으면서 공부하시고, SQL을 공부해본 독자라면 이 책의 코드들을 모두 실습해보는 방향으로 읽으시면 도움 될 것이라고 생각합니다.`
SQL에 대해선 SELECT, FROM, WHERE 정도만 알고 이조차도 정말 간단한 것밖에는 활용하지 못했다.
실제 업무에서 SQL을 통해 데이터를 추출할 일이 많이 없었기도 하고, 혹시 생기더라도 기존에 만들어둔 템플릿에서 필요한 값만 살짝 바꿔가며 사용했기 때문이다.
그러나 당연한 이치로 회사에서 요구하는 업무 수준은 점점 높아지고, 나도 내가 알지 못하는 코드를 딜리버리만 하는 것에 싫증이 날 무렵 이 책을 만나게 됐다.
이런 도서들은 초기에 환경 구축하다보면 시간이 다 가게 마련인데, 오렐리에서 제공하는 웹 DB가 있어서 책에 제공된 링크로 따라가면 활용할 DB까지 모두 설정이 끝나, 바로 쿼리를 날려볼 수 있는게 책을 보다 쉽게 접할 수 있게 해준 장점이다.
물론 세션 시간이 어느정도 있는 것 같고, 네트웍이 잠깐 불량하거나 하면 연결이 바로 끊어져버리긴 하나 이런거 세팅할때마다 몇시간씩 까먹는 나를 생각하면 최선이다.
책은 총 18장으로 구성되어있다. 리뷰를 쓰는 오늘 기준으론 8장까지 끝냈다.
당연히 후반부로 갈 수록 점점 복잡하고 고도하된 쿼리를 구성하겠지만 아직까지는 따라가기 크게 어렵지 않다.
다른 사람이 짜 둔 쿼리를 복붙해서 활용할때 이게 무슨 의미일까? 싶었지만 어디서부터 찾아봐야 할지 막막했던 것들 중 몇 가지는 벌써 답을 알게 됐다.
SQL이 뭔지, 쿼리가 뭔지 잘 알지 못하는 사람이 대뜸 이 책부터 사서 보기엔 조금 어려울 것 같지만, 나처럼 직접 짠 쿼리까진 아니더라도 몇 번 쿼리란 걸 내 손으로 날려본 적이 있는 사람이라면 쉽게 책을 시작할 수 있을 것 같다.
쉽게 풀어썼다는 SQL 책들도 몇 권 봤는데, 오히려 편집이 어수선하고 설명하는 문장이 너무 길어 읽다 진이 빠지는 경우가 있었는데, 이 책은 개념에 대한 설명보다는 일단 쿼리부터 보여주고 이 구문을 왜 추가했는지를 간략하게 설명해주는 식이다. 그렇기 때문에 요긴하게 활용할 것 같은 부분은 따로 표시를 해 두어 필요할 때 바로 찾아볼 수 있는 쿡북 형태로 활용해도 좋을 것 같다.
앞으로 남은 10장도 꼭 완료하고, 틈 날 때마다 잊어버리지 않게 한 번씩 복기해주기 좋은 책을 만난 것 같다. 못해도 3번 이상은 더 볼 책이다.
Structured Query Language 구조화 질의어, S-Q-L는 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다. 많은 수의 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택하고 있다.
SQL의 시작
P32~P33를 보면 SQL의 시작에 대해서 자세한 설명이 나온다.
그리고 위키백과의 내용을 추가하여 인용해 보았다.
SQL의 시작은 커드 박사가 관계형 모델을 정의하면서 관계형 데이블의 데이터를 조작하는 DSL/Alpha라는 언어 제안에서 시작되었다. IBM에서 프로토타입 제작 의뢰하면서 세상에 알려졌다. 그리하여 1970년대 초에 도널드 D. 챔벌린과 레이먼드 F. 보이스가 처음 개발하였다. 초기에는 SEQUEL(Structured English Query Language, 구조 영어 질의어)라는 이름으로 시작하였으며, IBM의 준 관계형 데이터베이스 관리 시스템 시스템 R에 저장된 데이터를 조작하고 수신하기 위해 고안되었다. SEQUEL은 나중에 SQL로 바뀌었는데, 그 까닭은 SEQUEL이 영국의 호커 시들리 항공사의 상표였기 때문이다. 1980년대 중반 미국 국립 표준 연구소(ANSI)에서 SQL 언어의 최초 표준 발표되었고, 핵심언어 개선+객체지향기능 통합으로 SQL 새로운 기능이 더해졌고, XML(Extensible Markup Language), JSON(Javascript Object Notation) 기술의 통합에 중점이 되었다.
사천 바닷가 아지트에서....
왜 이책을 읽어야 할까?
SQL이 제공하는 모든 명령문을 순차적으로 자세히 설명되어 있어서 데이터 과학, 비즈니스 인텔리전스, 데이터 분석 종사자에게 도움이 될 것이다.
왜 SQL을 배워야 할까?
R,파이선 과 같은 다른 프로그래밍 언어 및 플랫폼과 더불어 SQL을 알아야 한다.
데이터는 어디에나 존재하고 급격하게 증가하고, 데이터로부터 유의미한 정보를 찾아내는 수요가 커지므로
데이터 과학, 비즈니스 인텔리전스, 데이터 분석 종사자에게는 반드시 알아야 하기 때문이다.
Learing SQL Study Map (by 류용효)
한장의 맵으로 스터디한 내용을 정리해 보았다.
이책은 기술서적으로 책의 내용을 어떻게 표현할까 10일은 고민한 것 같다.
이책은 단시간에 섭렵하는 책이라기 보다는 머리 맡에 두고 필요할때 꺼내 봐야 하는 책이다.
SQL 입문자 뿐만 아니라 SQL에 대한 체계적인 지식을 습득하려는 분들에게는 도움이 될 것이다.
이책을 옮긴 분들(류수미, 송희정)은 오라클에서 근무하면서 페이스북의 한국 MySQL사용자 그룹 운영진으로
활동하고 있으며, 교육을 담당하고 있는 전문가 분들이 쉽게 이해할 수 있도록 번역한 것이 눈에 띈다.
나는 스터디맵으로 이 책의 내용을 한장으로 요약하고, 어떤 내용이 유익할 지 도움을 주고자
정리해서 나눠주고 싶었다.
Learing SQL 스터디맵 (by 류용효)
O'Reilly
오라일리 미디어(O'Reilly Media, 과거명: O'Reilly & Associates)는 팀 오라일리가 설립한 미국의 출판사이다.
오라일리 미디어는 출판뿐만 아니라 매해 오픈 소스 공동체를 위한 콘퍼런스를 열고, 온라인 서비스를 제공하고 있으며, 또한 오라일리 네트워크는 특정 시스템이나 언어 사용자들의 흥미를 끄는 기사들을 "ONJava.com", "Perl.com", "MacDevCenter"등을 통해 공개한다.
저자 정보 (2021)
저자 : 앨런 볼리외 Alan Beaulieu 30여 년간 사용자 지정 데이터베이스를 설계하고 구축했다. 주로 금융 서비스 부문에서 대형 데이터베이스의 설계, 개발 및 성능 튜닝을 전문으로 하는 컨설팅 비즈니스를 수행한다. 여가 시간은 가족과 함께 시간을 보내거나, 밴드에서 드럼 또는 테너 우쿨렐레를 연주하기도 하며, 종종 아내와 하이킹을 하면서 멋진 경치를 볼 수 있는 점심 식사 장소를 물색한다. 코넬 대학교에서 공학 학사 학위를 받았다.
역자 : 류수미 LG CNS 금융사업부에서 은행, 보험, 증권사를 포함한 금융권의 차세대 시스템, 방카슈랑스 및 BPR 등 다양한 프로젝트를 수행했다. JavaEE 환경에서 개발 및 아키텍처를 만들고 검증하는 아키텍트로 근무했다. 현재 오라클 MySQL GBU에서 근무 중이다. 지금까지 많은 고객사의 MySQL POC, BMT를 지원했으며 MySQL 행사뿐만 아니라 다양한 오픈소스 행사에서 MySQL 관련 발표 및 강의를 진행했다. 페이스북의 한국 MySQL 사용자 그룹 운영진으로 활동하고 있다.
역자 : 송희정 대우정보시스템 벤처포트 전자상거래 사업부에서 자바 웹 개발자로 근무했다. 이후 기술연구소로 옮겨 기술전략팀을 거친 뒤에 전사 표준 프레임워크 개발, 보급 및 JavaEE 기술 컨설팅 프로젝트를 수행했다. 오라클에서 미들웨어 엔지니어로 활동하다가 2012년 이후 오라클 교육사업본부에서 교육 컨설턴트로서 기업체 대상의 전문가 양성 과정 개발과 DT 기술 역량 확보 및 내재화 관련 컨설팅을 했다.
태어난 지 40년이 넘은 SQL의 쓰임새는 데이터 전성시대를 맞아 확장하고 있다. 이 책은 개발자가 SQL 기본을 빨리 익히고 데이터베이스 애플리케이션 작성, 관리 작업 수행, 보고서 생성을 할 수 있게 도와주는 SQL 입문 가이드이다. 각 장에서는 다양한 그림과 주석이 달린 예제로 주요 SQL 개념과 기술을 학습하고 실습한다. 특히 입문서에서는 잘 다루지 않는 비관계형 데이터베이스에서 데이터를 쿼리하는 방법까지 한 권에 담았다.
이번에 리뷰하게 된 책은 'Learning SQL, 러닝SQL' 입니다. O'REILLY의 번역본이고, 조금은 징그러운 표지를 가지고 있는 책입니다. 이 책의 표지는 안데스 주머니 개구리라고 하네요.
이 책의 주된 독자는 SQL을 처음 접하는 혹은 더욱 자세히 공부하고 싶은 사람입니다.
천천히 꼼꼼하게
1장에서는 데이터베이스(Database)에 대한 소개가 나옵니다. 대부분 책의 첫장에서 역사와 소개를 다루듯 이 책 또한 역사와 책을 다루고 있습니다. 관계형 모델부터 주요 용어들을 표 형태로 깔끔하게 제공하고 있는 점이 좋았습니다. 용어에 생소한 사람들에게 용어를 정리하고 가는 것은 중요한 부분 중 하나라고 생각하고, 책에도 그런 생각이 담겨 있는 것 같다는 것을 느꼈습니다.
쿼리
실제로 쿼리(Query)를 작성하는 건 3장부터 시작됩니다. 2장까지는 준비과정이며, 3장에서부터 쿼리를 작성하게 됩니다. 제일 처음 배우게 되는 쿼리는 조회가 아닐까 생각됩니다. 책에서는 SELECT (조회)를 시작으로 필터링, 조인(JOIN), UNION(집합) 등을 상세하게 기술하고 있습니다. 간단한 예제들과 상세한 설명으로 누구나 쉽게 익힐 수 있도록 기술 하고 있습니다.
데이터 조작
7장에서는 데이터를 어떻게 조작할지
- 문자열 처리
- 숫자 자리 수 처리
- 시간 데이터 처리
어렵지 않지만 중요한 내용들을 상세하게 설명하고 있습니다.
학습 점검
매 장 끝에는 학습 점검이라는 것을 통해 본인이 해당 장을 제대로 이해 했는지를 다시 한번 체크 할 수 있도록 되어 있습니다. 스스로 점검을 통해 본인이 내용을 제대로 이해했는지 아는 것은 정말 중요하고 그런 내용들을 챙겨주고 있어서 더욱 좋은 책이라고 생각합니다.
총평
이 책은 SQL을 처음 배우는 입문자에게 쉽고 꼼꼼하게 SQL에 대한 지식을 습득 할 수 있게 해주는 책이다. 초심자에게는 처음을, 이미 알고 있는 사람에게는 리마인드를 제공해주는 책이고 얇지만 강한 내용들을 담고 있다.
SQL 스키마 문을 사용하여 테이블, 인덱스, 제약 조건과 같은 데이터베이스 개체를 생성합니다.
데이터셋이 쿼리와 어떻게 상호작용하는지 알아보고 서브쿼리의 중요성을 이해합니다.
SQL 내장 함수를 사용하여 데이터를 변환 및 조작하고, 데이터 문에 조건식을 사용합니다.
[대상 독자]
IT실무 담당자
SQL활용을 하고 싶은 협업 실무자
개발 입문자 및 고급 쿼리로 SQL실력을 높이고 싶은 개발자
[서평]
왜 SQL을 배워야 할까?
이 책은 데이터 과학이나 비즈니스 인텔리전스 또는 데이터 분석의 관련 분야 종사자라면, 관계형 데이터베이스의 사용 여부와 상관없이 파이썬이나 R 같은 다른 프로그래밍 언어 및 플랫폼과 더불어 SQL을 알아야 합니다. 데이터는 어디에나 존재하고 급격하게 증가하며, 이러한 데이터로부터 유의미한 정보를 찾아내고자 하는 수요가 점점 커리고 있기 때문 입니다.
왜 이 책을 읽어야 할까?
지금 까지 ‘초보자를 위한’ 도서는 많지만 대부분 입문자 수준의 기초지식 정도의 수준의 책들 입니다. 그래서 실무에서 적용하려면 다시 고급 쿼리를 인터넷에서 검색에서 비슷한 내용의 쿼리를 찾아야 합니다. 이 책은 SQL이 제공하는 모든 명령문을 순차적으로 자세히 설명합니다. 본인에게 필요한 내용이 무엇인지 이미 잘 알고 있다면 유용하게 사용할 수 있을 겁니다.
책의 구성
총 18개의 장과 2개의 부록으로 구성 되어 있습니다.
1장은 관계형 모델과 SQL의 등장을 비롯하여 데이터베이스의 역사를 설명 합니다.
2장은 MySQL 데이터베이스를 생성한 뒤 책의 예제를 이용해 테이블을 생성하고, 데이터를 인서트하는 방법을 배웁니다.
3장은 select문을 설명하고 가장 기초 적인 쿼리인 select, from, where에 대해서 알아봅니다.
4장은 select, update, delete문을 배우고 다양한 유형의 조건을 학습할수 있습니다.
5장은 테이블 조인을 통해 쿼리가 여러 테이블을 활용하는 방법을 보여줍니다.
6장은 데이터셋을 소개하고 쿼리 내에서 상호 작용하는 방법을 알려줍니다.
7장 데이터 조작 또는 변환에 필요한 몇가지 내장 함수를 보여줍니다.
8장 데이터를 집계하는 방법을 배웁니다.
9장 서브쿼리를 소개하고 어디서 어떻게 활용할수 있는지 보여줍니다.
10장 다양한 유형의 테이블 조인을 설명합니다.
11장 select, insert, update, delete문에 활용할 수 있는 조건식(if-then-else)을 살펴봅니다.
12장 트랜잭션을 소개하고 사용 방법을 보여줍니다.
13장 인덱스와 제약조건을 살펴봅니다.
14장 데이터 복잡성으로부터 사용자를 보호하는 인터페이스를 구축하는 방법을 보여줍니다.
15장 데이터 딕셔너리의 유용성을 보여줍니다.
16장 보고 및 분석에 많이 쓰이는 순위와 소계, 기타 값 생성에 필요한 기능을 다룹니다.
17장 대용량 데이터베이스를 더 쉽게 관리하고 탐색할 수 있는 기법을 보여줍니다.
18장 비관계형 데이터 플랫폼에서 데이터를 검색할 수 있도록 SQL 변환을 알아 봅니다.
데이터를 핸들링 하는 종사자, 개발자라면 SQL을 많이 사용을 합니다. 보통 기본적인 SQL은 시중에 넘쳐날 정도로 많이 있습니다. 하지만 실무에 들어가면 기본적인 쿼리로는 해결이 안되는 문제가 많이 있습니다. 인터넷을 검색해도 기초적인 내용만 있습니다. 이책은 SQL 입문부터 고급 기능 까지 자세하게 다룹니다. 이책 한권으로 SQL로 할수 있는 거의 모든것을 할수 있을것이라 생각합니다. SQL의 고급 기능을 배우고 싶다면 이책이 좋은 솔루션이 될것이라 생각합니다.
데이터 분석 쪽을 배우다 보니 종종 듣게 되는 언어가 SQL이다. 직접적인 분석 관련 언어는 아니지만 데이터베이스를 만들고 관리하는 쪽과 어느정도 연관이 있다보니 한번쯤은 배우면 좋다는 얘기를 많이 들었다. 하지만 배울때마다 외우거나 기억해야할 게 많아서 쉽게 익히기 어려운게 좀 있었는데 그럴때마다 기본적인 개념이 잘 정리된 책이 있으면 좋겠다는 생각이 들었다. 그런 바람이 통했는지(?) 이번에 한빛에서 새로이 SQL책이 나왔다.
이번에 한빛미디어 나는 리뷰어다로 받은 책은 러닝 SQL이다. 게다가 동물 시리즈로 나름 인지도가 있는 O'REILLY에서 나온 책이다. 이 시리즈에서 나왔던 이전 책들도 다 각 분야의 기초적인 내용을 심도있게 잘 다루고 있어 무척 만족하면서 보았는데, 그래서인지 이번에 SQL도 기대가 되었다.
책의 목차를 본다면 기존의 SQL책과 큰 차이는 없는 듯 보였다. 기본 쿼리부터 다중쿼리, 필터링 등등 기본적으로 많이 쓰는 구문들을 다 정리하고 보여주는게 다른 책과 큰 차이는 없어보였다. 다만 보통 마지막에 뷰에서 끝나는데 이 책에서는 추가로 아파치 드릴을 비롯한 빅데이터를 소개하며 비관계형 데이터베이스 내용을 맛보기로 보여주는게 눈에 띄었다.
무엇보다 전체적으로 간단명료하게 설명을 한게 눈에 띄었다. 예제로 보여주는 코드도 간결했고 거기에 각각 실행결과를 잘 보여주고 있었다. 그리고 그 코드에 대한 설명도 길지않고 필요한 부분만 딱딱 끊어서 설명하고 있어서 정말 직관적으로 이해하기가 무척 쉬웠다. 그 덕에 가볍게 공부하면서 보는데도 쉽게 술술 진도빠르게 넘어갈 수 있었다.
사실 SQL을 배우는데 있어서 기본적인 질의 구문이나 사실 SQL의 구문 자체는 그리 어렵지는 않은데, 문법이 좀 많은 데다가 실행순서가 헷갈리기에 배우는데는 유독 어려움을 느꼈던 언어라고 생각한다. 하지만 이 책으로 배운다면은 그 어려움은 많이 줄어들지 않을까 한다. 간단명료한 설명과 쉬운 예제들로 정말 SQL을 처음 배우는 누구나 배우기 쉬울 정도로 잘 만든 입문서라고 생각한다. 다른 책 필요없이 이 책만으로도 충분히 SQL을 알차게 배울 수 있을 것 같다.