본문 바로가기

오탈자 정보

[SQLite 마스터 북(제2판)]_오탈자

현재까지 발견된 위 책의 오탈자 정보와 오류 사항 그리고 보다 매끄러운 문장을 위해 수정한 내용들입니다. 불편을 끼쳐드려 죄송합니다.

혹시 이 외의 오탈자 정보를 발견하시는 분이 계시면 출판사 메일 jeipub골뱅이gmail.com이나 역자 메일 jcspro골뱅이hanafos.com으로 연락주시면고맙겠습니다.

최종수정일자: 2015년 5월 11일
2쇄본 오탈자


아래의 오탈자 사항은 추후 3쇄 시에는 모두 반영하도록 하겠습니다. 불편을 끼쳐드려 다시 한 번 죄송하다는 말씀을 드립니다. 번역 및 편집 시에 미처 확인을 하지 못한 점 사과드립니다. 


74쪽 그림 3-5에서(Jay Kim 님 제보)

WERE 절 ==> WHERE


75쪽 가운데 부분(Jay Kim 님 제보)

문자열 값("JujyFruit") ==> 문자열 값('JujyFruit')

"JujyFruit"와 같은 상수 ==> 'JujyFruit'와 같은 상수


99쪽 두 번째 문단 2-3행(Jay Kim 님 제보)

시즌 3에서 5까지에 출현한 상위 10개

==>

출현 횟수가 가장 많은 상위 10개 식품 중 시즌 3에서 5까지 출현한


100쪽 두 번째 문단 2행(Jay Kim 님 제보)

시즌 3에서 5까지 출현하지 않은 상위 10개 식품을

==>

출현 횟수가 가장 많은 상위 10개 식품 중 시즌 3에서 5까지 출현하지 않은 것을


89쪽 그림 3-10의 맨 우측 표의 마지막 행(권오건 님 제보)

412  Wax Beans  15  1 Vegetables ==>  412  Wax Beans  15  15 Vegetables  


89쪽 그림 3-10의 맨 좌측 표의 네 번째 행(역자 제보)

15  Chicken (kenny's)  8 ==> 15  Chicken (kenny's)  3


81쪽 위에서 5번째 줄(이미연 님 제보

order by type_id desc, name limit 1,2;  ==> order by type_id desc, name limit 2,1;


81쪽 본문 위에서 두 번째 문단 첫 번째 행(이미연 님 제보)

여기서 limit 1 다음에 나오는 콤마(,)는 2가 offset임을 의미한다.

==>

여기서 limit 다음에 나오는 2는 offset을 나타내고, 콤마(,) 다음에 나오는 1은 limit를 의미한다.



최종수정일자: 2011년 5월 2일
1쇄본 오탈자


아래의 오탈자 사항은 추후 2쇄 시에는 모두 반영하도록 하겠습니다. 불편을 끼쳐드려 다시 한 번 죄송하다는 말씀을 드립니다. 출간된 후 역자께서 책 전체를 다시 한 번 검토하여 보내주신 내용들입니다. 원서의 오류가 대부분이나 번역 및 편집 시에 미처 확인을 하지 못한 점 사과드립니다.

27쪽 하단에서 두 번째 줄(역자 제공)
www.sqlite.com에 ==> www.sqlite.org

60쪽 그림 3-1의 맨 우측 episodes 데이터 모델(역자 제공)
+id: Integer와 +name: text 사이에 다음이 포함되어야 함 ==> +season: Integer

68쪽 본문 맨 마지막 문단(역자 제공)
(앞의 문법에서 constraints로 나타낸) ==> (앞의 문법에서 제약조건으로 나타낸)

126쪽 상단에서 6번째 줄(역자 제공)
text 그룹의 값들은 ==> text 그룹의 값들은

200쪽 본문 두 번째 문단 첫 번째 줄(역자 제공)
zSQL 문자열 ==> zSql 문자열

203쪽 본문 두 번째 문단 네 번째 줄(역자 제공)
zSQL 문자열 ==> zSql 문자열

205쪽 소스 코드 첫 번째 줄(역자 제공)
#define SQLITE_NULL     5<A NAME="50520099_sqlite3_column_name16">
==>
#define SQLITE_NULL     5

287쪽 첫 번째 문단 마지막 행(역자 제공)
Java의 명령행 옵션으로 ==> java의 명령행 옵션으로

291쪽 본문 첫 번째 문단 네 번째 줄(역자 제공)
SQLite. Database.create_function()을 ==> SQLite.Database.create_function()을

292쪽 소스 코드 첫 번째 줄(역자 제공)
<A NAME="50520101_jdbc_driver">jdbc:sqlite:dirA/dirB/dbfile
==>
jdbc:sqlite:dirA/dirB/dbfile

314쪽 본문 마지막 문단 위에서 네 번째 줄(역자 제공)
Ctrl+click한 후 ==> Ctrl+클릭한 후

316쪽 Food 클래스 절 첫 번째 줄(역자 제공)
Cmd+click한다. ==> Cmd+클릭한다.

342쪽 본문 하단에서 두 번째 문단 첫 번째 줄(역자 제공)
지금까지 Android SQLite API를 ==> 지금까지 안드로이드 SQLite API를

342쪽 본문 하단에서 두 번째 문단 세 번째 줄(역자 제공)
SQLiteDatabase(근간이 되는 SQLite 데이터베이스)를 관리하는 메서드를 오버라이딩하는 우리 클래스를 구현한다.
==>
그것의 메서드를 오버라이딩하는 우리 클래스를 구현한다(우리 데이터베이스 관리를 위해서).

365쪽 본문 하단에서 두 번째 문단 두 번째 줄(역자 제공)
타입 연관(type affinity)에서는 ==> 타입 연관에서는

366쪽 하단에서 두 번째 줄(역자 제공)
문자열인 blob ==> 문자열인 'blob'

367쪽 노트 박스 첫 번째 줄(역자 제공)
예를 들어, floatingpoint는 ==> 예를 들어, 부동소수점은

368쪽 본문 하단에서 두 번째 문단 두 번째 줄(역자 제공)
real 값을 inser했을 때 ==> real 값을 insert했을 때

찾아보기 전체 아래의 파일로 수정(역자 제공)
SQLite마스터북(제2판)찾아보기.pdf







  • Jay Kim 2015.05.05 20:43

    74페이지 3-5 그림 중간에 WERE -> WHERE

  • Jay Kim 2015.05.09 22:08

    75 Page "JujyFrute" -> 'JujyFrute' 틀린 것은 아니지만 작은 따옴표가 좋다고 책에 나와 있는데........

    • 심재철 2015.05.11 14:17

      안녕하세요? 이 책의 역자입니다.
      좋은 지적 감사 드립니다.^^

      네, SQLite에서는 큰 따옴표나 작은 따옴표 모두 사용 가능하지만
      말씀하신 대로 작은 따옴표로 하는 것이 좋습니다. 인쇄 오류입니다.

  • Jay Kim 2015.05.10 06:47

    96페이지 마지막 예제 정상적으로 작동하지 않네요...

    SELECT name,
    (SELECT COUNT(id) FROM foods_episodes WHERE food_id=f.id) count
    FROM foods f ORDER BY count DESC LIMIT 10;

    • 심재철 2015.05.11 14:20

      제가 다시 확인해 보니 말씀하신 예제 SQL 문은 정상적으로 잘 됩니다. 만일 잘 안 되신다면 어떤 에러가 발생하는지 답글을 올려주시면 제가 원인을 알려 드리겠습니다.

    • Jay Kim 2015.05.11 21:14

      name count
      ----- -----
      Wax Beans(Generic brand) 412

      라고 답이나오는데요.. 이유가 뭘까요? SQL은 처음입니다. ㅠ,.ㅠ

    • 심재철 2015.05.12 07:59

      네, 그랬었군요.

      Wax Beans(Generic brand)는 foods 테이블에 있는 식품 이름이고 412는 그것의 id 입니다.

      다음의 SQL 문을 실행해 보시죠.
      말씀하신 것과 동일하게 Wax Beans(Generic brand) 식품 하나만 결과로 나올 것 입니다.

      select name, count(id) count from foods order by count desc limit 10;

      이처럼 열(column)과 집계함수를 열 목록에 같이 사용하는 것은 모순이지요. 각 행의 열과 모든 행을 집계한 값을 같이 나타낸다는 것은 무의미하기 때문입니다. 이럴 때는 Group By가 필요합니다. 따라서 대부분의 RDBMS에서는 이런 식의 SQL 문을 에러로 처리합니다. 그러나 SQLite에서는 그냥 실행시키면서 무의미한(?) 결과를 내 줍니다. 즉, foods 테이블의 식품 이름을 알파벳의 역순(DESC)으로 정렬했을 때 Wax Beans(Generic brand) 식품은 11 번째로 나타납니다. 그리고 SQLite에서 10번째 식품까지 결과를 만들려다가 잘 안되어 (무의미하지만) 그 다음의 11 번째 식품의 이름과 id를 결과로 준 것 입니다. 사실 이런 경우는 SQL문을 에러로 처리하는 것이 좋습니다.

      서론이 너무 길었군요.
      말씀하신 SQL 쿼리문의 경우에 괄호 안에 있는 서브 쿼리를 잘못 작성할 경우에 위의 경우 처럼 될 수가 있습니다. 즉, 쿼리문에 의미적인 오류가 있지만 SQLite가 그냥 처리하면서 무의미한 결과인 11 번째 행(Wax Beans 식품)을 결과로 내준다는 것입니다.

      작성하여 실행했던 SQL 문의 서브 쿼리 부분에 틀린 것이 없는지 확인해보시면 될겁니다.

    • Jay Kim 2015.05.12 22:32

      예 책에는 저 예제의 답이

      name count
      ---- -----
      핫도그 5
      피자 4
      .
      .
      .
      .
      .

      이렇게 나옵니다. 확인 부탁드립니다.

      그리고 친절한 답변 감사합니다. ^^

      저라면 책이 요구한 답을 찾는다면... 대충 이런 식으로 했을 것 같은데요 ㅠ,.ㅠ

      SELECT name, COUNT(food_id) count
      FROM foods_episodes, foods
      WHERE id=food_id
      Group by food_id
      Order By count desc limit 10;

    • 심재철 2015.05.12 22:59

      네, 책에서 제공하는 foods.db 데이터베이스를 생성한 후 바로 열고 위의 SQL 쿼리문을 실행하면 다음과 같이 나옵니다.

      Hot Dog 5
      Kasha 4
      Ketchup 4
      Pizza 4
      Bear Claws 3
      Bosco 3
      Decaf Cappaccino 3
      Hennigen's 3
      Naya Water 3
      Banana 3

      단, 3장의 앞에 있는 다른 SQL문들을 실행하지 않았기 때문에 이 결과는 책에 있는 것과 조금 다를 수 있습니다. 그러나 여기서 중요한 것은 서브 쿼리의 활용 방법입니다. 서브 쿼리는 여러 가지 형태로 사용할 수 있으니 잘 익혀두시면 좋을겁니다.

      네, 이 경우에는 서브 쿼리를 사용하지 않고 추가로 얘기하신 SQL 쿼리로 해도 가능합니다. 단, 데이터가 많을 때 성능 차이는 생길 수 있습니다. 그리고 서브 쿼리를 해야만 가능한 경우도 많습니다.

    • Jay Kim 2015.05.15 17:09

      앗 그래서 그렇군요. 감사합니다. ^^

  • Jay Kim 2015.05.10 17:52

    99 페이지 시즌 3에서 5까지 출연한 상위 10개의 식품을 찾는다.

    그런데 왜 답이 7개죠?

    상위 10개의 식품 중 3에서 5까지 출현한 것을 찾는다 가 맞는 것 아닌가요?

    • 심재철 2015.05.11 14:24

      좋은 지적 해 주셔서 감사합니다.^^
      문장의 표현이 잘못되었군요.

      99 페이지 중간의 문장을 다음과 같이 수정해 주세요.
      "시즌 3에서 5까지에 출현한 상위 10개"
      ->
      "출현 횟수가 가장 많은 상위 10개 식품 중 시즌 3에서 5까지 출현한"

  • Jay Kim 2015.05.10 18:17

    100 페이지도 마찬가지.. 상위 10개의 제품 중 3에서 5까지 출현하지 않은 것을 찾을 수 있다...

    그러니까 답이 3개가 나오죠....

    상위 10개 중 출현한 것 7개, 출현하지 않은 것 3개

    • 심재철 2015.05.11 14:27

      좋은 지적 해 주셔서 감사합니다.^^
      마찬가지로 문장의 표현이 잘못되었군요.

      100 페이지 중간의 문장을 다음과 같이 수정해 주세요.
      "시즌 3에서 5까지에 출현하지 않은 상위 10개 식품을"
      ->
      "출현 횟수가 가장 많은 상위 10개 식품 중 시즌 3에서 5까지 출현하지 않은 것을"