이 책은 아무런 사전 지식 없는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’, ‘어떻게’ 학습해야 할지조차 모르는 입문자의 막연한 마음을 살펴, 과외 선생님이 알려주듯 친절하게, 그러나 핵심적인 내용만 콕콕 집어준다. 책의 첫 페이지를 펼쳐서 마지막 페이지를 덮을 때까지, 혼자서도 충분히 SQL을 배울 수 있다는 자신감과 확신이 계속될 것이다!
28명의 베타리더 검증으로, ‘함께 만든’ 입문자 맞춤형 도서
베타리딩 과정을 통해 입문자에게 적절한 난이도, 분량, 학습 요소 등을 고민하고 적극 반영했다. 어려운 용어와 개념은 한번 더 풀어 쓰고, 복잡한 설명은 눈에 잘 들어오는 그림으로 풀어 냈다. ‘혼자 공부해본’ 여러 입문자의 마음과 눈높이가 책 곳곳에 반영된 것이 이 책의 가장 큰 장점이다.
누구를 위한 책인가요?
SQL을 처음 시작하려고 하는 학생, 취업 준비생
데이터베이스 기초를 배우고자 하는 초보 개발자
SQL의 이론과 실습을 동시에 학습하고 싶은 입문자
SQL을 공부하다가 너무 어려워서 포기한 경험이 있는 입문자
실무에서 SQL 관련 업무를 해야 하는 주니어 개발자
저자소개
저자
우재남
서강대학교에서 정보시스템 전공으로 석사 과정을 마친 후 다양한 IT 관련 분야에서 실전 업무를 수행했고, 대학에서 모바일 프로그래밍, 데이터베이스, 운영체제 등의 과목을 강의해왔다. 현재는 디티솔루션의 공간데이터베이스 연구소장으로 재직하고 있으며, 공간 정보와 IT의 융합 학문인 유시티 IT 분야의 공학박사 학위도 취득했다. 또한 한양사이버대학교 컴퓨터공학과와 삼성, LG, 현대, CJ, KT, SK, 대한상공회의소 등에 서 인공지능 및 IT 전문 분야를 강의하고 있다. 자신이 체험한 다양한 IT 실무 경험과 지식을 최대한 쉽고 빠르게 수강생과 독자에게 전달하는 것을 강의와 집필의 모토로 삼고 있다. 한빛미디어와 한빛아카데미에서 『뇌를 자극하는 Redhat Fedora: 리눅스 서버 & 네트워크』(2005)를 시작으로 『IT CookBook, 파이썬 for Beginner(3판)』(2022) 등 50권 이상의 책을 집필 및 번역했다.
: 데이터베이스와 관계 깊은 DBMS를 살펴보고, MySQL을 설치해 작업 환경을 준비합니다.
01-1 데이터베이스 알아보기
__데이터베이스와 DBMS
__DBMS의 발전 과정
__DBMS의 분류
__DBMS에서 사용되는 언어: SQL
[4가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
01-2 MySQL 설치하기
__MySQL 설치를 위한 컴퓨터 환경
__MySQL 다운로드 및 설치하기
__MySQL 정상 작동 확인하기
__MariaDB의 다운로드와 설치
[3가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
Chapter 02 실전용 SQL 미리 맛보기
: 흥미롭게 학습하기 위해 실전에서 사용되는 SQL을 미리 맛보는 시간을 가져봅니다.
02-1 건물을 짓기 위한 설계도: 데이터베이스 모델링
__프로젝트 진행 단계
__데이터베이스 모델링
__전체 데이터베이스 구성도
[좀 더 알아보기] 데이터베이스 모델링 툴
[4가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
02-2 데이터베이스 시작부터 끝까지
__DBMS 설치하기
__데이터베이스 만들기
__테이블 만들기
__데이터 입력하기
__데이터 활용하기
[4가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
02-3 데이터베이스 개체
__인덱스
__뷰
__스토어드 프로시저
[3가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
Chapter 03 SQL 기본 문법
: 기본적인 SQL 문법을 이해하고 그 사용법이 익숙해지도록 연습해봅니다.
03-1 기본 중에 기본 SELECT~FROM~WHERE
__실습용 데이터베이스 구축
__기본 조회하기: SELECT ~ FROM
__특정한 조건만 조회하기: SELECT ~ FROM ~ WHERE
[좀 더 알아보기] 서브 쿼리
[5가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
03-2 좀 더 깊게 알아보는 SELECT 문
__ORDER BY 절
__GROUP BY 절
[5가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
03-3 데이터 변경을 위한 SQL 문
__데이터 입력: INSERT
__데이터 수정: UPDATE
__데이터 삭제: DELETE
__대용량 테이블의 삭제
[5가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
Chapter 04 SQL 고급 문법
: 고급 SQL을 활용하기 위한 데이터 형식과 조인에 대해 살펴보고, SQL 프로그래밍을 배워봅니다.
04-1 MySQL의 데이터 형식
__데이터 형식
__변수의 사용
__데이터 형 변환
[6가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
04-2 두 테이블을 묶는 조인
__내부 조인
__중복된 결과 1개만 출력하기
__외부 조인
__기타 조인
[6가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
04-3 SQL 프로그래밍
__IF 문
__CASE 문
__WHILE 문
__동적 SQL
[5가지 키워드로 끝내는 핵심 포인트]
[확인문제]
Chapter 05 테이블과 뷰
: 데이터베이스의 다양한 개체 중 가장 중요한 테이블과 뷰에 살펴봅니다.
05-1 테이블 만들기
__데이터베이스와 테이블 설계하기
__GUI 환경에서 테이블 만들기
__SQL로 테이블 만들기
[5가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
05-2 제약조건으로 테이블을 견고하게
__제약조건의 기본 개념과 종류
__기본 키 제약조건
__외래 키 제약조건
__기타 제약조건
[6가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
05-3 가상의 테이블: 뷰
__뷰의 개념
__뷰의 실제 작동
[6가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
Chapter 06 인덱스
: 데이터베이스에서 정보를 추출하는 시간을 단축시켜주는 인덱스에 대해 살펴봅니다.
06-1 인덱스 개념을 파악하자
__인덱스의 개념
__인덱스의 종류
[3가지 키워드로 끝내는 핵심 포인트]
[표로 정리하는 핵심 포인트]
[확인문제]
06-2 인덱스의 내부 작동
__인덱스의 내부 작동 원리
__인덱스의 구조
[5가지 키워드로 끝내는 핵심 포인트]
[확인문제]
06-3 인덱스의 실제 사용
__인덱스 생성과 제거 문법
__인덱스 생성과 제거 실습
__인덱스를 효과적으로 사용하는 방법
[5가지 키워드로 끝내는 핵심 포인트]
[확인문제]
Chapter 07 스토어드 프로시저
: 스토어드 프로시저로 SQL에 프로그래밍 로직을 추가하는 방법을 배웁니다.
07-1 스토어드 프로시저 사용 방법
__스토어드 프로시저 기본
__스토어드 프로시저 실습
[6가지 키워드로 끝내는 핵심 포인트]
[확인문제]
07-2 스토어드 함수와 커서
__스토어드 함수
__커서로 한 행씩 처리하기
[5가지 키워드로 끝내는 핵심 포인트]
[확인문제]
07-3 자동 실행되는 트리거
__트리거 기본
__트리거 활용
[좀 더 알아보기] 트리거가 사용하는 임시 테이블
[6가지 키워드로 끝내는 핵심 포인트]
[확인문제]
Chapter 08 SQL과 파이썬 연결
: 프로그래밍 언어로 SQL과 연결하면 일반 사용자도 MySQL을 편리하게 사용할 수 있습니다. SQL과 파이썬 연동에 대해 배워봅니다.
08-1 파이썬 개발 환경 준비
__파이썬 소개
__파이썬 설치
__파이썬 사용 방법
[6가지 키워드로 끝내는 핵심 포인트]
[확인문제]
08-2 파이썬과 MySQL의 연동
__연동 프로그래밍 기본
__연동 프로그래밍 활용
[6가지 키워드로 끝내는 핵심 포인트]
[순서도로 살펴보는 핵심 포인트]
[확인문제]
08-3 GUI 응용 프로그램
__GUI 기본 프로그래밍
__완전한 형태의 GUI 응용 프로그래밍
[7가지 키워드로 끝내는 핵심 포인트]
[확인문제]
__부록 A MySQL 연동을 위한 파이썬 필수 문법
[확인문제 정답]
[찾아보기]
출판사리뷰
도서 특징
하나, 탄탄한 학습 설계 : ‘입문자 맞춤형 7단계 구성’을 따라가며 체계적으로 반복 학습한다
이 책은 SQL의 핵심 내용을 7단계에 걸쳐 반복 학습하면서 자연스럽게 머릿속에 기억되도록 구성했다. 모든 절에서 [핵심 키워드]와 [시작하기 전에]를 통해 각 절의 주제에 대한 대표 개념을 워밍업한 후, 본격적인 SQL 핵심 이론과 실습을 거쳐 마무리에서는 [핵심 포인트]와 [확인문제]로 한번에 복습한다. ‘혼자 공부할 수 있는’ 커리큘럼을 그대로 믿고 끝까지 따라가다 보면 프로그래밍 공부가 난생 처음인 SQL 입문자도 무리 없이 책을 끝까지 마칠 수 있다!
둘, 255개의 직접 해보는 ‘손코딩’으로 문법은 물론 실무 감각까지 제대로 익힌다
핵심 문법과 이론 설명은 두 눈과 머리로 술술 읽으며 넘어가고, 실전 감각은 직접 손코딩하며 익히도록 255개의 엄선된 실습 예제를 담았다. 반복 학습과 연습이 가장 필수적인 입문자도, 실전형 코드로 연습하면서 책에 담긴 코드를 ‘나의 코드’로 만들 수 있다. 8장에서 파이썬과 데이터베이스를 연동하는 과정에 필요한 파이썬 필수 문법은 부록을 참고하도록 한다.
책으로만 학습하기엔 여전히 어려운 입문자를 위해 저자 직강 동영상도 지원한다. 또 학습을 하며 궁금한 사항은 언제든 질문할 수 있도록 학습 사이트를 제공한다. 저자가 질문 하나하나 직접 답변을 달아주고 있으며, SQL 관련 최신 기술과 정보도 공유한다. 게다가 혼자 공부하는 그 길에 함께 공부하기를 원하는 사람들의 모임인 혼공 학습단을 운영하여 마지막까지 포기하지 않고 독자가 완주할 수 있도록 최대한 지원하고 있다.
넷, 언제 어디서든 가볍게 볼 수 있는 혼공 필수 [용어 노트] 제공
꼭 기억해야 할 핵심 개념과 용어만 따로 정리한 [용어 노트]를 제공한다. 처음 시작하는 사람들에게 프로그래밍 공부가 어려운 이유는 낯선 용어 때문이라는 것을 베타 리더를 통해 확인했고, 어려운 것이 아니라 익숙하지 않아서 헷갈리는 것이므로 잘 생각나지 않을 때는 언제든 부담 없이 펼쳐보자. 제시된 용어 외에도 새로운 용어를 추가하면서 자신만의 용어 노트를 완성해가는 것도 또 다른 재미가 될 것이다.
먼저 읽은 베타리더들의 한 마디
『혼자 공부하는 SQL』은 독학러를 위한 교과서입니다. _김동희 님
이론만 공부하는 게 아니라, MySQL로 코드 실습까지 함께하며 더 깊이 이해할 수 있어서 굉장히 좋았습니다. _이현주 님
친절한 설명과 이해하기 쉬운 도식화는 이 책의 큰 장점입니다. _장대혁 님
절마다 마무리, 확인문제가 있어 공부한 내용을 제대로 이해했는지 스스로 확인할 수 있습니다. _신도인 님
실습 위주의 구성으로 책을 완독할 때까지 SQL에 대한 흥미를 잃지 않고 학습할 수 있습니다. _노우준 님
저는 비전공자 출신의 인공지능 서비스 개발자이다보니, 간혹 정통 개발자라 할만한 분들과 소통할 때 종종 어려움이 생기는 경우가 잦았습니다. 이를 보완하기 위해 메신저 툴을 통해 문자로 의견을 주고 받기도 하였으나, 업무의 진행을 위한 미팅 등을 모두 메신저로 할 순 없으니 한계가 존재했죠.
또한 인공지능 서비스를 더 잘하기 위해서 하드웨어적 특성을 알아야 하는구나 느끼는 순간들이 한 번씩 찾아오는만큼 이 책을 읽는 시간들이 제법 유익하게 다가왔습니다.
# 02. 책 소개
소위 '혼공' 시리즈라 불리는 혼자 공부하는 시리즈의 최신작입니다.
기존의 다른 혼공 시리즈를 살펴보지 않아 명확한 비교가 어렵지만, 이 책을 보고 느낀 점은 처음 이 분야를 공부하는 사람들이 보기에 쉽게 설명되어 있으며, 이를 위해 굉장히 많은 그림이 들어가있다는 것입니다.
설명을 돕기 위한 비유, 그림을 통한 직관적 이해, 그리고 이것들을 하나로 묶어 만일 특정 순서로 과정이 진행된다면 이에 대한 그림 및 설명까지 그야 말로 혼자 공부하기 좋은 구조입니다. 또한 입문서이기에 설명하려는 주제를 이해시키려 하되, 필요 이상으로 깊어지지 않는다는 점에서 좋았습니다.
수업 내용이 끝나면 각 챕터마다 퀴즈가 존재하고, 그 퀴즈에 대한 답이 책의 마지막 부분에 있으며(생각보다 관련 서적들 중 퀴즈는 내놓고 답은 알아서 구하란 식으로 빼거나, 해설이 대충 달려있는 것들이 많지만 이건 그렇지 않아 더욱 좋았습니다), 가장 결정적으로! 각 챕터의 길이가 약 12페이지 정도로 길지 않습니다.
틈틈히 읽기에 좋고, 여러 호흡으로 끊어서 읽거나 공부하기 좋은 구조라는 것이 생각보다 아주 큰 매력 포인트였던 것 같습니다.
그리고 마지막으로 제일 뒤에는 작게 각 챕터별 용어 사전이 마련되어 있습니다!
따로 내용을 추가할 여분의 공간이 부족한 것이 아쉬웠지만, 각 챕터별 정리된 단어사전에 대한 목차까지 앞부분에 따로 마련되어 있어 무척이나 감동적이었네요.
#02. 정리
우선 이 책의 특징은 다음과 같습니다.
초심자용 책으로, 이해를 돕기 위해 많은 삽화와 노력이 들어가있다
각 챕터의 길이가 짧아, 틈틈히 공부하거나 집중력을 유지하며 공부하기 좋다!
각 챕터별 퀴즈와 용어사전으로 내용 정리 및 복습이 용이하다
컴퓨터 구조와 운영체제와 관련해 처음 배우거나, 이에 관한 주제로 이야기를 나눠야하는 사람, 제반 지식이 필요한 이들에게 추천할만한 책이라 판단되며, 추후 프론트앤드나 백앤드 엔지니어링 관련된 혼공 시리즈가 나온다면 소통을 위해서라도 반드시 읽어볼 시리즈로 보여집니다.
<혼자 공부하는 SQL>은 한빛미디어의 유명한 기본서 시리즈 중 하나이다. 유명한 이유는 책을 펼쳐보면 다 알 수 있다. 대부분 SQL은 이론보다는 개념 위주로 공부를 많이 해왔었다,,, 나뿐만 아니라 다른 사람들도 개념 위주로 공부를 한거 같다. 그렇기에 이론에는 다들 기초부터 시작하는 것이 좋다고 생각한다!
이론부터 MySQL으로 코드 실습 리뷰까지 함께 할 수 있어, 차근차근 이해할 수 있었다. SQL 실습이 처음인 나에게 기초 실습부터 응용된 실습까지 한 번에 해결할 수 있는 책을 발견해서 너무 좋았다.
SQL은 서버 플랫폼부터 임베디드 분야에서도 광범위하게 사용되고있기 때문에 개발을 한다면 피할 수 없는 분야라고 생각됩니다. 본 도서는 SQL 입문자가 읽기에 무리가 없는 서술 방향을 확인할 수 있었습니다. 도서는너무 얇거나 두껍지 않은, “적당한” 양을 가지고 SQL의 기본이 되는 핵심적인 내용을 충실히 담고 있습니다. 개인적인선호라고 하면 입문도서는 이런 핵심을 담은 적당한 두께의 도서를 선호합니다. 핵심을 파악하고 파고 들어야겠다는마음이 생기면 그때 필요한 내용을 두루두루 갖춘 도서로 학습이 이어지면 된다고 생각하기 때문입니다.
무엇보다 학습 내용을 독자 머릿속에 입력하도록 잘 편집된 도서이며, 온라인커뮤니티와 강의 무료 제공을 통해서 제대로 "혼자 공부할 수 있는" 과정이 준비되어 있습니다. 2차, 3차, 4차까지 많은 학습 장치가 제공된 좋은 SQL 입문서라 생각되며 이만 서평을 마무리 합니다.
혼자 공부하는 시리즈는 워낙에 유명하다. 이번이 개인적으로 6번째 책인데 어느 하나 부족함이 없다. 처음 설치하는 방법부터 자세히 나와있어서 베타리더로 활동하게 되었다. 다른 리더분들과 다르게 윈도우7에서도 설치가 잘 되는지부터 꼼꼼히 리뷰를 했었다. 확인 결과 메시지가 약간 다른 부분은 있지만 문제없이 잘 설치되고 동작되는 것을 확인하였다. 그런 점에서 1장 2절의 확인문제 1번은 답이 여러개가 될 수 있어 약간 출제오류가 있는 듯하다. 그리고 MariaDB와 MySQL을 소개하는 데 동일하게 사용할 수 있으면서도 오픈소스인 MariaDB를 추천한다.
이 책에서는 처음 설계도 격인 데이터베이스 모델링부터 데이터베이스 만들기, 테이블 만들기, 데이터 입력/수정/삭제하기, 데이터 조회/활용하기까지 꼼꼼하게 자세히 설명해준다. 그리고 놓치기 쉬운 대소문자 입력의 차이라던지 창 확대/숨김 방법과 뷰와 인덱스와 스토어드 프로시저와 트리거의 차이에 대해서 명확하게 설명해준다.
이 책을 읽다보면 쇼핑몰데이터나 친근한 걸그룹 이름과 함께 조인, 머지, 정렬 등에 대해서 자세히 알 수 있다. 오류로 발생할 수 있는 상황등에 대해서도 자연스럽게 유도하여 오류 대응능력을 향상시켜준다. 단순 뷰와 복합 뷰의 차이를 알 수 있고 공백에 대처하는 방법이나 보조 인덱스를 활용하는 방법 등에 대해서 확인할 수 있고 스토어드 프로시저를 만들어서 재활용하는 방법에 대해서도 알 수 있다.
이 책의 내용을 일일이 열거하기는 너무 분량이 많으므로 직접 확인해보는 것을 추천한다. 디지털 변환 시대에 데이터를 다루는 훌륭한 방법을 알고자 하는 분들께 추천한다.
요즘 혼자 공부한다는 '혼공 시리즈'가 많이 출간되었다. 이름만 다를 뿐 비슷한 컨셉의 책들도 타 출판사에서 많이 생산되고 있기도 한다. 혼공 시리즈 중에 내가 접해보았던 것은 '자바', '자바스크립트', '머신러닝+딥러닝' 등이 있다. 매번 새로운 기획으로 출간이 될 때마다 절대로 기대를 실망으로 바꾸지 않는 시리즈인 것 같다.
이 책의 저자는 동 출판사에서 '이것이 MySQL'와 '이것이 Oracle이다' 등 DB 관련 책을 출간하신 적이 있는데 본 책은 MySQL을 기준으로 설명되어 있어 '이것이 MySQL이다' 시리즈의 개정판으로 보아도 될 것 같다. 그렇다고 해서 이 책의 기본 의미가 퇴색되는 것은 아니다. MySQL의 SQL 문법만 잘 배워놓아도 다른 DBMS에서 사용하는 SQL은 보기만 해도 이해가 술술 될 것이다. 게다가 MariaDB와 거의 완벽 호환되고 Oracle에서 사용하는 문법과도 크게 다르지 않다. MS SQL-Server 로 들어가면 이야기가 조금 달라지지만 시작하는 부분에서 이 정도만이라도 SQL을 능숙하게 잘 사용할 수 있다면 SQL에 있어 실력이 떨어진다는 생각이 들지는 않을것이다.
어쩌다보니 나도 DB와 SQL로 생활을 영위하는 사람이 되었고 내가 필요한 수준의 내용은 모두 이 책에 담겨있다고 봐도 과언이 아니다. 개인적으로 자주 사용하게 되는 SQL이 정해져있다. 그래서 다른 고급 문법 부분은 내가 조금 약한 편이다. SQL을 잘한다고 할 수 있으려면 최소한 여러가지 조인을 잘 다룰 수 있어야 한다.
이책은 처음에는 데이터베이스를 소개하고 MySQL 서버, 클라이언트를 설치하는 방법, 그리고 Select, Insert 등 매우 기초적인 SQL 문법을 설명한다. 그 다음 장부터가 가장 중요한데 제4장부터 SQL의 고급 문법을 공부한다. SQL을 기본적으로 잘 알고는 있는데 나처럼 Join 부분이나, Index 같은 고급 기능 사용이 익숙치 않다면 앞 쪽은 건너뛰고 바로 이 장부터 끝까지를 심도있게 공부하는 것이 좋을 것 같다. 나 또한 그러한 방법으로 공부하였다.
이 책만의 차별성은 크게 두 가지이다. 먼저 SQL 또는 DB 입문자도 SQL을 잘 이해할 수 있도록 친절한 설명과 함께 시각화로 결과를 잘 표현했다는 것이다. 두번째로는 책 후반부에 파이썬과 SQL을 연결해보는 부분이 있다. DB 그 자체로도 활용도가 무궁무진하지만 대개는 Python, C, Java를 통해 DB를 제어한다. 프로그래밍의 한 과정으로 DB와 개발하고자 하는 프로그램을 연결시키도록 하는 것이 매우 중요하다. 그런 점에서 그냥 SQL만 공부하고 끝내는 것이 아니라 프로그래밍 언어와 결합하여 DB가 어떤 역할을 하게 되는지 간접적으로 이해할 수 있는 것이다.
이제 마무리를 짓기 위해 이 책의 장단점을 살펴보자.
먼저 단점을 이야기하자면 책 제목처럼 독학으로도 SQL을 공부할 수 있을 정도로 친절한 설명이 이 책의 특징이지만 15일, 20일, 30일 등 일 단위로 수립된 계획표를 따로 제시해주었으면 좋지 않았을까라는 생각이 들었다.
장점으로는 따라해볼 수 있는 예제가 많고 해당 출판사에서 운영하는 유튜브 채널을 통해 저자가 직접 설명하는 직강을 무료로 들을 수 있다. 보통 이런 인강은 적지 않은 돈을 주고 구매해야 볼 수 있는데 말이다. 초보자가 어떠한 부분에서 막히는 부분이 있다면 현재 순차적으로 올라오고 있는 저자의 직강을 통해 책을 넘어서 이해를 증진시킬 수 있는 기회가 있다.
나는 이 책을 개발자나 IT 업계 취업을 희망하는 사람에게만 추천하고 싶지는 않다. 최근 마케팅, 인사, 총무 등 기술과는 크게 관련이 없는 곳에서도 효율적인 시스템 운영을 위해서거나, 개발자와의 원활한 커뮤니케이션을 위해 프로그래밍, SQL 등을 열심히 배우고 있는 추세이다. 그리고 아주 많은 각광을 받고 있는 '데이터 분석' 분야도 기본적으로 SQL 쿼리를 짜는 것 정도는 당연히 할 수 있다고 깔고 들어간다. 실제 SQLD 시험장에 가보면 가장 많은 시간을 지체하는 것이 해당 상황에 알맞은 쿼리를 찾아내는 것이다. 짧은 쿼리 들은 그렇게 어렵지 않겠지만 테이블 끼리의 조인이 들어가게 되면 시간도 촉박하고 빨리 풀어야 한다는 강박관념 때문에 제대로 시험을 치룰 수 없게 된다. 이 부분은 이 책의 "고급 문법" 부분을 완벽하게 숙지한다면 충분히 커버 가능할 것이라고 본다.
혼자 공부하는 시리즈. 일명 혼공 시리즈의 최신간으로 SQL을 다룬 책이다. 혼공 시리즈는 제목 그대로 혼자 공부하는 사람들을 위한 입문서라 쉽게 설명하려고 노력한 흔적이 많이 보이는 책이다.
아마 대학 컴공 새내기들에게도 좋은 책이 아닐까 싶다. 솔직히 아무 생각없이 컴공에 입학하면 프로그래밍이 어렵기만 하기 때문에 이런 책으로 학교 공부와 병행하면 많은 도움이 될 것 같다.
아주 기본적인 개념부터 설명해주고 그림으로도 표시해주는 것이 정말 초보자를 위한 것임을 느끼게 해준다.
SQL문도 실제 명령어만이 아니라 그 명령어가 어떤 식으로 동작하는지 테이블을 그려서 설명하기 때문에 이해하는데 큰 도움을 준다. 어찌보면 당연히 그림으로 표현해야 될 수도 있는 부분이지만, 초보자의 입장에서 생각하고 더 쉽고 흥미롭게 하려는 노력이 느껴진다. 걸 그룹을 이름 컬럼의 값으로 사용한 것이 하나의 표본이랄까.
아무튼 기본적인 SQL의 개념과 사용법을 혼자서도 쉽게 익히기 좋은 역시 혼공 시리즈라는 말이 나올 책이다! 독학, 초보자 모두에게 추천한다!
'혼자 공부하는'시리즈는 이전에 파이썬과 머신러닝을 읽어보았던지라, 나오기 전부터 무한한 신뢰를 가지고 기다리고 있었다.
여러 SQL기초 서적들이 있지만, 그렇게 눈에 들어오는 책은 없어서 수학의 정석 집합마냥 초반만 읽고 드랍한 적이 한 두번이 아니었는데 혼공에스(?)는 역시나 달랐다.
파이썬과 머신러닝을 읽은지 어느정도 되서 그런지 모르겠지만, '혼자 공부하는'시리즈가 나날이 진화하는 느낌을 받았다. 예시가 일상 생활에 빗댄 예시가 많아서 추상적인 개념인 데이터베이스 등이 잘 와닿았고, 이미 개념을 알고 있는 사람들에겐 정리가 아주 잘되어서 독자가 어느 레벨이라도 도움이 되는 책이라고 생각한다.
친절한 설명도 설명이지만, 정말 목적에 맞췄다는 느낌이 들었는데 복잡해보이는(초보자가 보고 뒷걸음질 칠 만한) 용어는 비유만 적절히들어주고 너무 깊게 안들어갔다는 점에서 느꼈다. 일단 책의 목적은 혼자 공부하는 초보자 용이기 때문에 그런 용어를 구구절절 짚어주면 쉽게 질려버리기 때문이다. 그렇다고 너무 가볍게 다루지도 않고 독자가 읽으면서 성장하는 속도에 맞춰 안내를 해준다(몇 챕터에 상세히 설명한다 등...).
그리고 '혼자 공부하는' 시리즈의 가장 좋은 점 중 하나인 '혼공 용어 노트'가 있다는 것이다. 책의 주요 개념을 정리해 놓은 용어집 느낌인데, 책과 분리할 수 있어 들고 다니며 보기 좋게 구성 되어 있다.
SQL뿐만 아니라 다른 혼공 시리즈도 기회가 되면 꼭 보시는 것을 추천드리며 글을 마무리 하려고 한다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
저자 분은 서버 및 데이터베이스 관련 교육을 주로 하신 분이라 그 경험을 토대로 책을 쓰셔서 그런지 내용이 입문자에게 아주 이해하기가 좋고 자습하면 생길 수 있는 질문에 대해서 어지간한 것은 다 책에 정리해두신 것 같습니다. 혼자공부하는 SQL은 기본문법부터 고급기술까지를 다루는데 SQL을 이해하는데는 훌륭하다고 볼 수 있습니다. 특히 이 책은 비전공자를 대상으로 집필되어서 선행지식이 없는 사람도 익힐 수 있는 것이 큰 장점입니다. 각 장의 내용은 서로 다른 영역이지만 그 내용은 자연스럽게 이어지기에 마치 재미있는 소설 책을 읽는 것처럼 구성되어 흥미를 느낄 수 있게 구성되어 있습니다. 흥미를 느끼며 학습을 하다보면 어느 순간 지식이 확장되어 있는 자신의 모습을 볼 수 있을 것있습니다. 각 장의 끝에는 "마무리"라고 하는 영역이 있는데 이 영역에 있는 것은 필수로 외워야 하는 내용이며 한 눈에 보기 쉽게 정리되어 있어서 상당히 유용합니다. 학습자가 스스로 자신이 얼마나 잘 학습했는지를 느낄 수 있게 해주는 확인 문제도 함께 있습니다. 심지어 무료 온라인 강의와 질문답변까지 제공하니 아주 훌륭한 자습서입니다. 이 책은 DBMS 중에 MySQL 커뮤니티 8.0을 기준으로 SQL 실습을 진행하기에 기본적인 DBMS를 다루는 방법도 실습을 하면서 자연스럽게 배울 수 있습니다. 요즘 같이 비전공자들도 데이터 분석을 위해 DBMS와 SQL을 다루어야 하는 시대에는 이러한 자습서가 비전공자에게 참 도움이 될 것 같습니다.
혼자 공부하는 시리즈(일명 혼공)의 책은 기본적으로 대상 독자가 관련 주제에 대해 기초적인 지식이 얕거나 없는 사람들을 대상으로 하고 있는 책이다. 책의 이름에 있듯 혼자 공부하기 위해 학습한 내용을 정리하는 구성을 제공하고 있다.
각 챕터의 마무리 단계에서 키워드, 표로 핵심 포인트를 정리하는 부분을 통해 학습 내용을 한 번 정리해볼 수 있다. 그리고 단답형, 선다형 형태로 제공되는 확인 문제를 통해서 학습한 내용을 확인할 수 있다.
기본편과 고급편 구성
책은 크게 기본편과 고급편으로 나누어져 있지만, 고급편에 배치되어 있다. 환경 설치나, SQL 기초 문법 정도에 대한 내용을 기본편에서 다루고 있고, 고급편에서는 테이블 관련된 내용이나, 인덱스, 스토어드 프로시져, 파이썬과의 연결 및 GUI 프로그램을 만들어 보는 구조로 가져가고 있다. 책의 난이도가 입문자를 주 독자층으로 잡고 있어서 테이블과 인덱스 관련 부분을 고급편으로 가져가고 있는데, 다루는 내용의 난이도나 실무에서의 요구사항들을 감안하면 기본편에 배치되는 것이 더 맞지 않을까 싶다.
총평
SQL 학습에 입문하는 사람에게는 제격이라고 생각한다. 기본적인 환경 설치부터 개념 잡기, 요약, 반복 학습 등을 제공하고 있고, 여러모로 익숙하지 않은 사람들에게 파이썬과의 연결까지 해서 어떻게 사용할 수 있는지에 대한 가이드도 제공하고 있기 때문에, 책 한 번을 전부 읽고 나면 기본적인 지식과 활용 능력은 갖출 수 있을 것이라 생각한다.
SQL의 쿼리 뿐 아니라 데이터베이스의 기초부터 시작하는 것을 컨셉으로 잡고 있으며, 학습과 실습으로 주로 구성된 책임을 표지에서 말해주고 있다.
255개의 손코딩 예제 및 MySQL Community 8.0 지원이라는 말이 인상깊었다.
근데, 지원이라는 말보다는.. 인용 정도로 하는것이 적절하지 않았을까 하는 생각도 들었다.
마치 프로그램 자체를 제공하는 것처럼 보였다.
> 인상깊은 부분들
혼자 공부하는 파이썬에서도 느꼈지만, 이 책에도 동일하게 로드맵을 제공하고 있다.
이 책의 챕터 1에서부터 시작하여 챕터 8까지 진행하면서 어떤 것을 익혀야 하는지를 미리 보여주고 있다.
많은 책에서 다루지 않는 부분이기 때문에, 매우 인상깊고, 좋았던 부분이라는 기억이 남았다.
기본과 고급으로 이어지는 흐름이 보인다.
이 책에는 또 하나의 소단원이 끝날 때 마다 확인 문제가 기다린다.
얼마나 잘 알고 있는지 확인하는 문제인데, 이 부분이 좋았던 것은, 그냥 대충 이해했다 생각하고 넘어갔던 부분들 조차도 이 문제를 보면서 잘 몰랐었다는 것을 깨달았다. 그래서 다시 앞으로가서 정확하게 찾아보고 문제를 풀게 되었다. 즉, 이말은 이 문제들이 단순이 요식행위로 달아놓은 수준이 아닌, 적절하게 필요한 내용을 잘 출제하였다는 의미이다. 대충 알면 풀기 어렵다. LIMIT에 대한 문법도 첫 번째와 두 번째 입력값이 어떠한 의미를 담고 있는지 안다면 충분히 왜 저 답이 나왔는지 알 수 있을 것이다.
쿼리 문법 순서도 잘 생각하지 않으면 알기 어려운 부분이기에 유용하다고 느껴졌다.
또 인상적으로 보았던 부분 중 하나인데, 손코딩 부분이다.
사실 손코딩이라는 용어가 중의적인데, 연필로 연습장에 코딩한다는 뜻의 손코딩이라는 의미가 더 넓게 쓰이지만, 여기에서는 직접 타이핑하며 실습한다는 뜻으로 쓰인다.
직접 타이핑 하는 부분을 아주 명확하게 표현해주니, 헷갈릴 것도 없었으며, 위치에 따라서는 예상되는 오류도 잘 알려주었다. 도움이 되는 부분이 많았다.
이 것은 책의 맨 마지막에 별책처럼 달려있는 혼공 용어노트이다.
앞에서 열심히 공부했던 내용들이 다시 깔끔히 정리되어 적혀있다.
반복학습을 몇번이고 할 수 있도록 도와주는 최후의 수단으로 보인다. 사실 SQL을 실무에서 다룰정도로는 아는 입장에서 볼 때, 이 노트는 중간 중간 아쉬운 지식을 채워줄 수단으로 충분하다고 보였다.
혼자 하는 것을 목표로 한 책이라는 것을 보여주는 마지막 표지이다.
이것은 실제 실습했던 내용 중 하나이다.
MySQL을 써본적은 많았지만 Workbench를 제대로 써본적은 없었기에 이 툴이 이렇게 괜찮은 툴이었다는 것을 이제야 알게 되었다.(모든 것이 만족스럽지는 않지만, 무료 툴 중에서는 좋은 편에 속한다.)
> 괜찮은 부분
1. 혼자 공부하기에 매우 깔끔한 구성이다.
공부할 때에 가장 필요하다고 생각하는 로드맵부터 시작하여, 기본 개념, 실습 내용과 요점 정리, 문제 등 혼자 공부할 때에 필요한 것들이 잘 수록된 느낌이다. 그것들이 단순 수록된 느낌만 있는 것이 아니라, 조화롭게 배치되어 있기 때문에, 적절한 텐션과 재미를 유지하며 볼 수 있었다. 물론 모든 책이 독학을 위한 것이지만, 이 책은 학습에 조금 더 초점을 맞춰서 되어있다고 느껴진다. 학교나 학원에서 공부할만한 내용을 혼자서 진행하기에 적절하다고 보면 된다.
2. 적절한 도표와 캡처를 통한 설명으로 보강하였다.
혼자 공부하기에 적절한 구성이라고 느껴지는 부분에 부합되는 부분이기는 하나, 조금 더 인상적인 부분이기 때문에 별도로 기재하였는데, 도표, 그림, 캡처 부분이 충분히 활용되었다. 내가 MySQL Workbench에서 보는 부분이 이 책에서 그대로 캡처되어 있었기 때문에 잘 따라왔다는 점을 알 수 있어서 안심이었다. 그리고 캐릭터를 통한 그림과 테이블을 설명할 때 화살표와 그림으로 표현하여 마치 앞에서 강사님이 그려주는 느낌을 받게 하였다.
3. 예상되는 오류메시지에 대한 핸들링을 적절히 포함하였다.
실습이기 때문에 오류 메시지가 많이 나올 수 밖에 없다. 하지만 해당 부분마저도 미리 잘 실행해보고, 알려주는 부분이 좋았다. 오류메시지 뿐 아니라 note라는 항목으로도 어떠한 상황에서 어떤 결과가 나올 수 있다는 점도 알려주어, 최대한 질문이 나올 수 있는 부분에 대해 답으로 알려주고 있다.
> 아쉬운 부분
1. 실제 개발을 위한 데이터베이스 설계의 원칙에 대해 설명이 부족했다.
이 책이 지향하고 있는 부분이 과연 어느정도인지를 알지 못하지만, 응용프로그램에 접목하는 부분까지 나온 이상, 이 데이터베이스를 처음부터 만들어서 활용하기 위해서는, 잘 설계하는 방법이 나왔으면 했다. 하지만, 설계에 대한 부분은 그렇게 깊게 다루지 않았으며, 그래서 막상 프로그램을 만들기 위해 처음 데이터베이스를 만들기라도 한다면, 막막할 것 같다는 생각이 든다.
2. 응용프로그램 연결과 활용에 관한 부분이 부족했다.
이 책의 마지막 부분이 파이썬과 연결하여 사용하는 부분에 대한 것이다. 하지만, 이 부분이 매우 적으며, 맛보기 수준의 느낌이었다. 이 지식가지고 뭔가 알 수 있는 것이 있을까 싶다. 물론 없는 것보다야 나을 수 있겠지만, 사족같다는 느낌도 들었다. GUI 부분을 표현한 것도 굳이 필요했을까 싶었다. 제대로 다루기엔 너무 길기 때문일까 하는 생각이다.
그래도 대체로 이 책은 SQL을 혼자 학습하기에 매우 좋다고 생각하며, 다른 프로그램을 통해 SQL을 간접적으로 경험한 사람이 제대로 공부하고자 한다면 추천할만한 책이라고 생각된다.
저부터도 비전공자인데 그래도 필요하게 되어서 독학했던 경험이 있습니다. 실제 실무에서 쓰기 위함이 아닌 기사 자격증 때문이었고 자격증 공부가 보통 그렇듯 좀 겉핥기에 벼락치기였죠. 그래서 씁쓸하지만 여전히 초심자에 가깝습니다... 이해보다 유형에 맞춘 암기를 했던 터라 그냥 놓치거나 지나친 부분이 상당히 많았는데 [혼자 공부하는 SQL]에서 재회하고 무언가 기분이 묘했습니다. 아쉽기도 했고요.
[혼자 공부하는 SQL]이 물론 자격증 합격에 겨냥된 내용은 아니지만 오히려 진짜 활용할 배움이라면 이렇게 해야 하는데라는 생각이 많이 들었습니다.
데이터베이스와 데이터베이스를 관리 운영하는 소프트웨어(Database Management system, DBMS)의 역사, 이른바 발전 과정을 먼저 살펴봅니다. 굉장히 전사적일 것 같지만 의외로 그 역사는 아날로그부터죠. 짧지만 이런 것도 알고 가면 나쁠 것 없는 것이고 이론과 실습이 교차하는 그런 강의가 이어집니다. 데이터베이스에 있는 여러 개체의 개념이나 용어를 설명하는 것으로 끝내는 게 아니었습니다.
다른 개체들이 연계됨에 있어서 매우 중요할 테이블 그리고 테이블을 쓰는 데 있어서 이해해야 할 '제약조건', 테이블의 구조, 가상의 테이블인 뷰를 이용함으로써 얻는 장점(보안과 SQL의 단순화 등), 큰 데이터베이스에서 원하는 정보를 빠르게 추출하기 위한 인덱스 그리고 인덱스의 작동 원리 및 실제 사용 방법, '데이터의 무결성'의 트리거 등이 차분하게 설명됐습니다. 마무리라고 해서 키워드로 핵심 포인트에 더해 확인 문제가 나왔습니다.
뭐랄까 약간 건조하다면 건조할 수도 있는 설명들이지만 이것이 꼭 단점처럼 다가왔던 건 아니었습니다. 도식화로 이해와 더불어 오래 기억에 남도록 도왔고 하나의 작은 개념들에 매몰되지 않도록 구성됐던 것 같습니다. 손코딩 예제에 명령문의 입력과 실행 결과도 읽기 괜찮았고 전반적으로 체계적이었던 [혼자 공부하는 SQL]입니다. 별책으로 '용어 노트'도 포함되어 있고 영상 강의도 유튜브에 있습니다. 제목의 '혼자 공부하는'이라는 수식어가 어울렸던 [혼자 공부하는 SQL] 리뷰 이상입니다!
SQL 입문서인 해당 책은 정말 모든 면에서 세심하게 신경을 썼다. 하나하나 책의 장점이자 특징들을 얘기해보자면 이렇다.
[말투] 개발 관련 책들이 평소 딱딱하고 지루하다고 느껴지기도 했는데, 해당 책은 전반적인 말투에서 부드럽고 친숙함이 묻어난다. 마치 빨간펜 선생님에게 SQL을 들을 수 있다면 딱 이런 느낌일 것 같다.
개인적인 취향이지만, 세세한 그림들, 폰트나 표, 페이지 등의 디자인들에서도 굳이 연필체를 사용한 소소한 디테일들이 보여서 더더욱 딱딱하게 보이지 않았던 것 같다.
[손코딩] 코드는 직접 써보면서 공부하는 것이 제일 기억에 잘 남는 다는 것은 다들 공감하는 바일 것이다. 그러나, 때로는 자잘하거나 기본적인 부분들에서는 매번 그러기 귀찮다고 생각할 수 있을 텐데, 이 책은 그런 작은 개념들의 이해를 위해 특이하게도 손코딩을 활용한다. 그렇기 때문에, 초반부나 개념을 공부하는 시점에서는 가볍게 카페에 책 한권, 노트, 펜만 들고도 확실히 공부가 가능하다. 물론, SQL의 특성이 있기에 가능한 면이지만 개발 관련 서적으로써는 큰 장점으로 느껴졌다.
[마치 교과서] 매 소분류 챕터마다 소소하게 확인 문제 및 핵심 포인트를 꼼꼼히 짚어주고 있다. 또한, 교과서에서 매우 친절하게 "이 개념은 잊지 마세요!" 라거나, "1번부터 8번까지 따라해보세요" 라거나, "혹시 모를까봐 추가적으로 이런것도 얘기해줄게요" 이런식으로 설명하는 것을 흔히 볼 수 있는데, 해당 책이 정확히 그렇게 기술하고 있다. 개념을 떠먹여주다 못해 놓친 개념도 다시보자, 이런것도 궁금해 할까봐 넣어줬어 이런느낌으로 친절해도 너무 친절한 교과서 기술법을 사용하고있다.
[많이 노력한 예제] 개발서들의 예제들은 다소 딱딱하거나 일상적인 면을 띄는 것이 많은데, 해당 책은 지루하지 않게하려고 매우 노력한 면이 보였다. 네이버 쇼핑이라거나, 여자 아이돌 그룹을 소녀시대부터 잇지까지 섭렵하는 예시를 보여주는데, 간혹 보이는 오타들에서(마마무는 MAMAMOO가 영문명이지만, 표기를 MMU로 표현하는 등
모든 프로그램에는 정형화된 데이터가 필요하다. 정말 단순한 프로그램이 아닌 이상 각 사이트 또는 앱별로 회원정보가 들어가게 되고, 이는 곧 다수의 정보를 포함하기 때문에 이런 정보를 저장하는 방법을 고안해야 할 것이다. 그렇기에 컴퓨터공학에서 배우는 과목 중 하나가 데이터베이스가 된다.
현재 다양한 데이터베이스 관련 언어가 있지만 역시나 제일 대두되는 언어라고 본다면 SQL이라고 생각된다. SQL 기반인 언어, 기반으로 하지 않는 언어로 뉠만큼 SQL이 데이터베이스에서 보여주는 입지는 굉장하기 때문에 SQL만을 단독으로 묶어서 가르치는 교재가 많이 나오게 되는데, 이번에 후발주자로 한빛미디어의 혼자 공부하는 시리즈가 따라붙게 되었다.
혼자 공부하는 시리즈는 한빛미디어에서 야심차게 준비하는 시리즈 중 하나로, 해당 언어나 내용을 처음 배우는 사람들을 대상으로 밑바닥에서부터 어느정도 문법을 다룰수 있을 정도까지 가르쳐주는 입문서 시리즈이다. 파이썬부터 시작해 자바, 머신러닝, 자바스크립트까지 많은 책을 쓰기도 했고, 다 읽고 스터디에도 참여를 해보기도 해서 나름 신뢰가 가는 시리즈였는데 이렇게 SQL까지 나오게 된게 무척 반갑기도 했다.
책의 전체적인 내용을 본다면 데이터베이스에 대한 이해를 다루는 부분이 25%, SQL 문법에 대한 내용이 50%, 그리고 SQL을 활용해 데이터베이스를 실제 프로그램에 적용하는 거 25%정도가 되었다. 물론 뒤에 실제 프로그램에 적용하는 것에 대한 경우에는 파이썬을 기반으로 아주 간단한 것만 보여주고 있지만 그래도 활용을 하는 것을 보여준다는 것은 분명해보였다.
현재 전공으로 데이터베이스를 배우면서 SQL을 실습으로 사용하다 보니 실제 이 책의 레벨이 어느정도인지를 쉽게 비교할 수 있었는데, 이제 막배우기 시작한 내가 보아도 정말 쉽게 내용을 소개해준것 같아서 입문용으론 무척 좋겠다는 생각이 들었다. 데이터베이스를 아예모르는 사람에게 데이터베이스에 대한 기본적인 내용을 이해시켜주는 것은 물론 중간부터는 SQL문법을 위주로 소개해주는 것 같아 어떤식으로 SQL을 실습을 하는지를 잘 보여주고 있는것 같았다.
그러고선 마지막에는 SQL을 다른 언어에 어떻게 쓰는지를 파이썬을 활용해 맛보기를 보여주는데, 이 부분은 개인적인 욕심으로 인해 생긴 아쉬움이 약간 남아있기도 했다. 간단하게 DB를 접근하고 출력하는것을 보여주고 있었는데, 이 부분을 좀 더 다양하게 활용할 아이디어를 소개해줬으면 어떨까도 싶었다. 그래도 출력하는 과정에서 변수를 담는 것을 보여주었으니 이 부분에 대한 응용은 추후 언어를 학습하면서 발전할 수 있지 않을까도 싶었다.
전체적으로 진짜 데이터베이스를 하나도 모르는 사람일지라도 이 책을 본다면 SQL 구문을 어느정도 해독할 수준까지는 올 수 있을거라 생각한다. 그렇기에 이 책은 데이터베이스를 이제 막 입문하려는 사람에게 추천을 하며, 어느정도 데이터베이스를 응용을 하여 프로젝트를 만들 사람이라면 이 책에서 얻을 정보는 없을거라 생각을 한다. 다른 혼공단 시리즈처럼 입문도서로 볼때 이 책은 잘 만든도서라고 생각되기에 SQL을 무슨 책으로 입문할지 고민되는 사람에게 이 책을 소개해주고 싶다.