Top

PostgreSQL 9.4 공식 가이드 Vol.2 SQL 언어

  • 원서명PostgreSQL Documentation 9.4.4
  • 지은이The PostgreSQL Global Development Group
  • 옮긴이(주)비트나인
  • ISBN : 9788960778511
  • 40,000원
  • 2016년 04월 26일 펴냄
  • 페이퍼백 | 656쪽 | 188*235mm
  • 시리즈 : 오픈소스 프로그래밍

책 소개

요약

PostgreSQL 공식 가이드 9.4 버전 문서에서 '1부 튜토리얼과 2부 SQL 언어' 부분을 발췌해 한 권의 책으로 출간되었다. 이 책에서는 PostgreSQL을 처음 접하는 사용자들이 쉽게 따라할 수 있는 튜토리얼과 데이터베이스를 사용하는데 반드시 필요한 내용인 SQL 언어에 대하여 다룬다. 'PostgreSQL 공식 가이드’는 PostgreSQL 개발자 및 그 외 지원자가 PostgreSQL 소프트웨어 개발과 병행해 작성된 문서로서, 이번 책 'Vol.2 SQL 언어’에서는 일반적인 SQL 문법, 데이터 타입, 함수 및 연산자, 지워하는 인덱스, 동시성 제어 등을 설명한다. PostgreSQL 공식 가이드 9.4 버전 시리즈로서 『PostgreSQL 9.4 공식 가이드 Vol.1 서버 관리』(2015)가 출간되었으며, 향후 『PostgreSQL 9.4 공식 가이드 Vol.3 서버 프로그래밍』도 책으로 출간될 예정이다.

한국어판 출간에 부쳐

PostgreSQL의 공식 가이드가 한국어판 서적으로 번역 출간된다는 소식을 들으니 매우 기쁩니다. PostgreSQL 공식 가이드는 양이 방대하고 내용도 쉽지 않다 보니 몇 개의 언어로만 번역됐습니다. 이런 상황에서 한국어 버전이 나온다는 것은 대단한 일입니다.
복잡한 소프트웨어를 사용하는 사용자에게 확신을 주기 위해서는 자국어로 번역된 문서가 매우 중요합니다. PostgreSQL 프로젝트는 공식 가이드가 매우 훌륭하다는 평가를 받고 있으며, 이번 한국어판 출간 덕분에 한국의 사용자는 PostgreSQL의 전문 기술을 훨씬 빠르게 습득할 수 있을 것입니다.
PostgreSQL은 아시아 지역에서 오래 전부터 사용되어왔습니다. 이번 한국어판 출간을 기점으로, PostgreSQL이 한국에서도 광범위하게 도입되는 시작의 불씨가 되길 바랍니다.
-브루스 몸지안(Bruce Momjian) / The PostgreSQL Global Development Group 공동설립자, EnterpriseDB 수석 데이터베이스 아키텍트

이 책에서 다루는 내용

일반적인 RDBMS의 개념, SQL 언어 등 전반적인 PostgreSQL 개념에 대한 이해

테이블 생성 및 수정, 권한, 스키마, 파티셔닝 등 데이터베이스 구조 생성 방법

데이터베이스로부터 데이터를 어떻게 반환받는지 등에 대한 방법

PostgreSQL에서 사용가능한 데이터 타입들

배열, JSON, 날짜 타입 등 다양하게 사용되는 함수 및 연산자에 대한 설명

PostgreSQL에서 지원하는 다양한 인덱스 타입들에 대한 설명

동시성 제어를 PostgreSQL 내에서 어떻게 수행하는지 등에 대한 내용

이 책의 대상 독자

오픈소스 DBMS를 구축하고 싶은 데이터베이스 사용자

PostgreSQL DBMS를 처음 사용해보는 데이터베이스 사용자

개인 용도로 PostgreSQL 서버를 구축하려는 사용자

이 책의 구성

이 책은 관리자 안내서로 PostgreSQL 데이터베이스 관리자에게 필요한 주제를 다룬다. 소프트웨어 설치 및 셋업, 서버 환경 설정, 사용자와 데이터베이스 관리, 정기적인 관리에 대한 내용이 들어 있다. PostgreSQL 서버를 개인 용도로 쓰거나 특히 운영상 사용해야 하는 경우, 이 주제들에 익숙해야 한다. 이 책은 처음 PostgreSQL 사용 시 읽으면 좋은 순서로 정리해 놓았다. 각 장의 내용은 독립적이기 때문에 개인의 선호에 따라 읽으면 된다. 내용은 주제 단위로 기술되어 있으며, PostgreSQL 데이터베이스 시스템 기본 사용법에 익숙한 독자들이 읽을 수 있다.

저자/역자 소개

지은이 소개

The PostgreSQL Global Development Group

PostgreSQL 데이터베이스를 개발하는 개발자 그룹이다. 전 세계적으로 여러 기업의 개발자가 PostgreSQL의 개발에 참여하고 있으며 미국의 EnterpriseDB와 Salesforce, MeetMe.com, PostgreSQL Expertes INC., 2ndQuadrant 등 뿐만 아니라 일본의 NTT, 러시아 등 다양한 국가의 개발자가 프로젝트의 맴버로 활동하고 있다. 프로젝트의 주요 컨트리뷰터의 목록은 www.postgresql.org/community/contributors/에서 확인할 수 있다. PostgreSQL의 개발은 오픈소스로 진행되며 엄격한 심사를 통해 컨트리뷰터를 선정하고 있다. 또한 다양한 메일링 리스트를 통해 자유롭게 의견을 교환하며 개발을 진행하고 있으며, 일반 사용자들도 메일링 리스트를 통해 PostgreSQL에 대한 질문하고 개발자로부터 직접 답변을 받을 수 있다. 데이터베이스 엔진의 개발뿐만 아니라 이 책의 원문인 PostgreSQL Documentation 작성, 다양한 컨퍼런스의 개최 등 많은 활동을 하고 있다.

옮긴이의 말

최근 오픈소스에 대한 인식이 변화하고 도입 사례도 매우 빠르게 증가하고 있습니다. 이전에는 오픈소스 솔루션은 개인 또는 소규모 비즈니스 운영에만 적용했다면 이제는 대기업과 공공 기관에서도 적극적으로 오픈소스 솔루션을 도입하고 있는 실정입니다. 이런 변화는 그만큼 오픈소스 솔루션이 발전했음을 반영하는 것으로 볼 수 있습니다. 오픈소스의 성공 사례로 대부분 리눅스를 꼽지만 오픈소스 데이터베이스인 PostgreSQL에 대해서는 국내에는 아직 잘 알려지지 않았습니다. PostgreSQL은 20년 전부터 개발된 데이터베이스로 데이터베이스의 역사와 함께 발전해온 오픈소스 데이터베이스입니다. 전 세계적인 커뮤니티를 갖고 있으며 소스 코드에 대한 어떠한 형태의 사용과 배포도 허용하는 진정한 의미의 오픈소스 프로젝트라 할 수 있습니다.

흔히 오픈소스 데이터베이스라 하면 안정성과 성능에 대해 의구심을 갖지만 PostgreSQL은 세계적으로 많은 레퍼런스를 갖고 있으며 오랜 개발 역사가 말해주듯 매우 뛰어난 성능과 안정성을 제공하고 있습니다. 하지만 이런 우수성에 비해 국내에서는 PostgreSQL에 대한 인지도와 보급은 매우 낮은 실정입니다. 외국에서는 PostgreSQL의 도입 사례가 많고 인지도도 매우 높지만 반대로 국내에서는 외산 데이터베이스 솔루션이 독점하고 있고 이로 인해 많은 부작용이 발생하고 있는 상황입니다.

저희 (주)비트나인은 국내의 이런 왜곡된 데이터베이스 시장 구조를 개선하고자 PostgreSQL의 보급에 앞장서고 있습니다. 국내 데이터베이스 시장에서의 외산 솔루션의 독점으로 인해 많은 외화가 유출되고 있으며 독점적인 위치를 이용한 비합리적인 관행도 많이 벌어지는 상황입니다. 아직까지는 외산 솔루션에 대적할 만한 국산 솔루션이 없었기 때문에 이런 상황을 두고 볼 수밖에 없었지만 이제는 오픈소스 소프트웨어의 발전으로 이런 상황이 달라지고 있습니다. 특히 PostgreSQL은 뛰어난 성능과 안정성으로 엔터프라이즈급의 서비스도 처리할 수 있어 외산 솔루션을 대체할 대안으로 각광을 받고 있습니다. (주)비트나인은 PostgreSQL의 보급을 위해 많은 노력을 기울이고 있으며 그중 하나의 결실로 이 책을 출간하게 됐습니다.

저희는 국내에 PostgreSQL의 인지도를 높이기 위해 가장 시급한 일은 개발자가 쉽게 PostgreSQL을 이해하고 기술을 습득하는 데 도움을 줄 수 있는 책을 발간하는 것이라 생각했습니다. 국내외 데이터베이스(오라클, MySQL, CUBRID 등)에 대해 한글로 작성된 책들은 상당히 많이 존재합니다. 하지만 오픈소스 DBMS인 PostgreSQL에 대한 책은 대부분 영문으로 쓰여진 원서가 대부분이며, 국내에서 한글로 된 PostgreSQL의 매뉴얼은 전혀 없는 실정입니다. 실제로 국내에서는 아직 PostgreSQL을 사용하는 업체가 소수이며, 해당 DBMS를 다루는 관리자의 경우 문제가 발생하였을 때 일부 블로거들이 작성한 글을 제외하면 그에 관련된 한글 레퍼런스를 찾기도 어렵습니다. 영문 버전 역시 PostgreSQL 공식 홈페이지를 통해 온라인으로만 제공되고 있으며 실제 개발자들이 쉽게 접근하고 사용할 수 있는 책은 국내에서는 찾기 어렵습니다.

이러한 불편함을 해소하고자 저희 비트나인은 PostgreSQL을 사용하는 국내 사용자들의 언어 장벽을 낮춰 쉽게 PostgreSQL을 접할 수 있도록 영문 매뉴얼을 번역하여 제공하고자 합니다. 이 책은 PostgreSQL 공식 가이드 9.4 버전을 번역한 책으로 총 세 권 중 두 번째 시리즈입니다. 이 책은 PostgreSQL을 처음 접하는 사용자들이 쉽게 따라할 수 있는 튜토리얼과 데이터베이스를 사용하는데 반드시 필요한 내용인 SQL 언어에 대하여 다루고 있습니다.

1권: 서버 관리(PostgreSQL 공식 가이드 중 15~30장)

2권: SQL 언어(PostgreSQL 공식 가이드 중 1~14장)

3권: 서버 프로그래밍(PostgreSQL 공식 가이드 중 31~46장)

이 책을 통해 PostgreSQL에 대한 국내의 인식이 높아지고 오픈소스 데이터베이스 보급에 일조하기를 바랍니다.

- (주)비트나인 대표이사 강철순

옮긴이 소개

(주)비트나인

오픈소스 데이터베이스 및 그래프 데이터베이스 연구 개발 전문기업으로 좀 더 효율적이고 친환경적인 IT 솔루션 및 서비스를 제공하는 업체다. PostgreSQL에 대한 소스 코드 레벨의 기술력을 보유하고 있으며 PostgreSQL 커뮤니티의 일원으로 활동하고 있다. 또한, 최신 그래프 데이터 및 빅데이터 처리를 위한 기술력을 보유하고 관련 솔루션을 개발하고 있다. 비트나인의 솔루션으로는 PostgreSQL의 통합 패키지 버전인 Agens SQL과 그래프 데이터 처리를 위한 Agens Graph 빅데이터 및 빅그래프(대용량 그래프 데이터) 분석이 가능한 Agens Analyzer(2017년 출시 예정) 등이 있다. (주)비트나인은 오픈소스의 가치를 통해 IT 기술 발전을 이루고자 한다. 모든 자사 솔루션을 오픈소스화하며 다양한 오픈소스 커뮤니티에 참가하고 주도하여 더욱 많은 사람들이 기술과 정보를 공유해 더욱 더 우수하고 진보된 기술을 창출하도록 노력하고 있다.

목차

목차
  • 1부 튜토리얼
  • 1장 시작
  • 1.1 설치
  • 1.2 기본적인 아키텍처
  • 1.3 데이터베이스 생성
  • 1.4 데이터베이스 액세스

  • 2장 SQL 언어
  • 2.1 소개
  • 2.2 개념
  • 2.3 새 테이블 생성
  • 2.4 테이블을 행으로 채우기
  • 2.5 테이블에서 쿼리 사용
  • 2.6 테이블 간 조인
  • 2.7 집계 함수
  • 2.8 업데이트
  • 2.9 삭제

  • 3장 고급 기능
  • 3.1 소개
  • 3.2 뷰
  • 3.3 외래 키
  • 3.4 트랜잭션
  • 3.5 Window 함수
  • 3.6 상속
  • 3.7 결론

  • 2부 SQL 언어
  • 4장 SQL 구문
  • 4.1 어휘 구조
  • 4.1.1 식별자 및 키워드
  • 4.1.2 상수
  • 4.1.2.1 스트링 상수
  • 4.1.2.2 C 스타일 이스케이프를 사용한 스트링 상수
  • 4.1.2.3 유니코드 이스케이프를 사용한 스트링 상수
  • 4.1.2.4 달러 인용 스트링 상수
  • 4.1.2.5 비트 스트링 상수
  • 4.1.2.6 숫자 상수
  • 4.1.2.7 다른 타입의 상수
  • 4.1.3 연산자
  • 4.1.4 특수 문자
  • 4.1.5 주석
  • 4.1.6 연산자 우선 순위
  • 4.2 값 표현식
  • 4.2.1 컬럼 참조
  • 4.2.2 위치 매개변수
  • 4.2.3 첨자
  • 4.2.4 필드 선택
  • 4.2.5 연산자 호출
  • 4.2.6 함수 호출
  • 4.2.7 집계 표현식
  • 4.2.8 Window 함수 호출
  • 4.2.9 타입 캐스트
  • 4.2.10 콜레이션 표현식
  • 4.2.11 스칼라 서브쿼리
  • 4.2.12 배열 생성자
  • 4.2.13 행 생성자
  • 4.2.14 표현식 평가 규칙
  • 4.3 함수 호출
  • 4.3.1 위치 표시법 사용
  • 4.3.2 지명 표시법 사용
  • 4.3.3 혼합 표시법 사용

  • 5장 데이터 정의
  • 5.1 테이블 기초
  • 5.2 기본값
  • 5.3 제약 조건
  • 5.3.1 CHECK 제약 조건
  • 5.3.2 NOT NULL 제약 조건
  • 5.3.3 UNIQUE 제약 조건
  • 5.3.4 기본 키
  • 5.3.5 외래 키
  • 5.3.6 제외 제약 조건
  • 5.4 시스템 컬럼
  • 5.5 테이블 수정
  • 5.5.1 컬럼 추가
  • 5.5.2 컬럼 삭제
  • 5.5.3 제약 조건 추가
  • 5.5.4 제약 조건 삭제
  • 5.5.5 컬럼의 기본값 변경
  • 5.5.6 컬럼의 데이터 타입 변경
  • 5.5.7 컬럼 이름 변경
  • 5.5.8 테이블 이름 변경
  • 5.6 권한
  • 5.7 스키마
  • 5.7.1 스키마 생성
  • 5.7.2 공용 스키마
  • 5.7.3 스키마 검색 경로
  • 5.7.4 스키마 및 권한
  • 5.7.5 시스템 카탈로그 스키마
  • 5.7.6 사용 패턴
  • 5.7.7 이식성
  • 5.8 상속
  • 5.8.1 주의점
  • 5.9 파티셔닝
  • 5.9.1 개요
  • 5.9.2 파티셔닝 구현
  • 5.9.3 파티션 관리
  • 5.9.4 파티셔닝 및 제약 조건 제외
  • 5.9.5 대체 파티셔닝 방법
  • 5.9.6 주의점
  • 5.10 외래 데이터
  • 5.11 기타 데이터베이스 개체
  • 5.12 종속성 추적

  • 6장 데이터 조작
  • 6.1 데이터 삽입
  • 6.2 데이터 업데이트
  • 6.3 데이터 삭제

  • 7장 쿼리
  • 7.1 개요
  • 7.2 테이블 표현식
  • 7.2.1 FROM 절
  • 7.2.1.1 조인된 테이블
  • 7.2.1.2 테이블 및 컬럼 별칭
  • 7.2.1.3 서브쿼리
  • 7.2.1.4 테이블 함수
  • 7.2.1.5 LATERAL 서브쿼리
  • 7.2.2 WHERE 절
  • 7.2.3 GROUP BY 및 HAVING 절
  • 7.2.4 Window 함수 처리
  • 7.3 선택 목록
  • 7.3.1 선택 목록 항목
  • 7.3.2 컬럼 라벨
  • 7.3.3 DISTINCT
  • 7.4 쿼리 결합
  • 7.5 행 정렬
  • 7.6 LIMIT 및 OFFSET
  • 7.7 VALUES 목록
  • 7.8 WITH 쿼리(공통 테이블 표현식)
  • 7.8.1 WITH의 SELECT
  • 7.8.2 WITH에서의 데이터 수정 문구

  • 8장 데이터 타입
  • 8.1 숫자 타입
  • 8.1.1 정수 타입
  • 8.1.2 임의의 전체 자릿수 숫자
  • 8.1.3 부동소수점 타입
  • 8.1.4 시리얼 타입
  • 8.2 금액 타입
  • 8.3 문자 타입
  • 8.4 바이너리 데이터 타입
  • 8.4.1 bytea 16진수 형식
  • 8.4.2 bytea 이스케이프 형식
  • 8.5 날짜/시간 타입
  • 8.5.1 날짜/시간 입력
  • 8.5.1.1 날짜
  • 8.5.1.2 시각
  • 8.5.1.3 타임 스탬프
  • 8.5.1.4 특수 값
  • 8.5.2 날짜/시간 출력
  • 8.5.3 시간대
  • 8.5.4 간격 입력
  • 8.5.5 간격 출력
  • 8.6 Boolean 타입
  • 8.7 열거형 타입
  • 8.7.1 열거형 타입의 선언
  • 8.7.2 순서
  • 8.7.3 타입 안전성
  • 8.7.4 구현 세부 사항
  • 8.8 기하학적 타입
  • 8.8.1 점
  • 8.8.2 선
  • 8.8.3 선분
  • 8.8.4 상자
  • 8.8.5 경로
  • 8.8.6 다각형
  • 8.8.7 원
  • 8.9 네트워크 주소 타입
  • 8.9.1 inet
  • 8.9.2 cidr
  • 8.9.3 inet vs. cidr
  • 8.9.4 macaddr
  • 8.10 비트 스트링 타입
  • 8.11 텍스트 검색 타입
  • 8.11.1 tsvector
  • 8.11.2 tsquery
  • 8.12 UUID 타입
  • 8.13 XML 타입
  • 8.13.1 XML 값 생성
  • 8.13.2 인코딩 처리
  • 8.13.3 XML 값 액세스
  • 8.14 JSON 타입
  • 8.14.1 JSON 입력 및 출력 구문
  • 8.14.2 효율적으로 JSON 도큐먼트 설계
  • 8.14.3 jsonb 제약 조건 및 존재
  • 8.14.4 jsonb 인덱싱
  • 8.15 배열
  • 8.15.1 배열 타입의 선언
  • 8.15.2 배열 값 입력
  • 8.15.3 배열 액세스
  • 8.15.4 배열 수정
  • 8.15.5 배열에서의 검색
  • 8.15.6 배열 입력 및 출력 구문
  • 8.16 컴포지트 타입
  • 8.16.1 컴포지트 타입의 선언
  • 8.16.2 컴포지트 값 입력
  • 8.16.3 컴포지트 타입 액세스
  • 8.16.4 컴포지트 타입 수정
  • 8.16.5 컴포지트 타입 입력 및 출력 구문
  • 8.17 범위 타입
  • 8.17.1 기본 제공 범위 타입
  • 8.17.2 예제
  • 8.17.3 경계 포함 및 제외
  • 8.17.4 무한(무경계) 범위
  • 8.17.5 범위 입력/출력
  • 8.17.6 범위 생성
  • 8.17.7 불연속 범위 타입
  • 8.17.8 새 범위 타입 정의
  • 8.17.9 인덱싱
  • 8.17.10 범위에 대한 제약 조건
  • 8.18 개체 식별자 타입
  • 8.19 pg_lsn 타입
  • 8.20 의사 타입

  • 9장 함수 및 연산자
  • 9.1 논리 연산자
  • 9.2 비교 연산자
  • 9.3 수학 함수 및 연산자
  • 9.4 스트링 함수 및 연산자
  • 9.4.1. format
  • 9.5 바이너리 스트링 함수 및 연산자
  • 9.6 비트 스트링 함수 및 연산자
  • 9.7 패턴 일치
  • 9.7.1. LIKE
  • 9.7.2. SIMILAR TO 정규 표현식
  • 9.7.3. POSIX 정규 표현식
  • 9.7.3.1. 정규 표현식 디테일
  • 9.7.3.2. 대괄호 표현식
  • 9.7.3.3. 정규 표현식 이스케이프
  • 9.7.3.4. 정규 표현식 Metasyntax
  • 9.7.3.5. 정규 표현식 일치 규칙
  • 9.7.3.6. 제한 및 호환성
  • 9.7.3.7. 기본 정규 표현식
  • 9.8 데이터 타입 서식 지정 함수
  • 9.9 날짜/시간 함수 및 연산자
  • 9.9.1. EXTRACT, date_part
  • 9.9.2 date_trunc
  • 9.9.3 AT TIME ZONE
  • 9.9.4 현재 날짜/시간
  • 9.9.5 실행 지연
  • 9.10 Enum 지원 함수
  • 9.11 기하학적 함수 및 연산자
  • 9.12 네트워크 주소 함수 및 연산자
  • 9.13 텍스트 검색 함수 및 연산자
  • 9.14 XML 함수
  • 9.14.1 XML 콘텐츠 생성
  • 9.14.1.1 xmlcomment
  • 9.14.1.2 xmlconcat
  • 9.14.1.3 xmlelement
  • 9.14.1.4 xmlforest
  • 9.14.1.5 xmlpi
  • 9.14.1.6 xmlroot
  • 9.14.1.7 xmlagg
  • 9.14.2 XML 조건자
  • 9.14.2.1 IS DOCUMENT
  • 9.14.2.2 XMLEXISTS
  • 9.14.2.3 xmliswell_formed
  • 9.14.3 XML 처리
  • 9.14.4 테이블을 XML에 매핑
  • 9.15 JSON 함수 및 연산자
  • 9.16 시퀀스 조작 함수
  • 9.17 조건 표현식
  • 9.17.1 CASE
  • 9.17.2 COALESCE
  • 9.17.3 NULLIF
  • 9.17.4 GREATEST 및 LEAST
  • 9.18 배열 함수 및 연산자
  • 9.19 범위 함수 및 연산자
  • 9.20 집계 함수
  • 9.21 윈도우 함수
  • 9.22 서브쿼리 표현식
  • 9.22.1 EXISTS
  • 9.22.2 IN
  • 9.22.3 NOT IN
  • 9.22.4 ANY/SOME
  • 9.22.5 ALL
  • 9.22.6 단일 행 비교
  • 9.23 행 및 배열 비교
  • 9.23.1 IN
  • 9.23.2 NOT IN
  • 9.23.3 ANY/SOME (배열)
  • 9.23.4 ALL(배열)
  • 9.23.5 행 생성자 비교
  • 9.23.6 컴포지트 타입 비교
  • 9.24 집합 리턴 함수
  • 9.25 시스템 정보 함수
  • 9.26 시스템 관리 함수
  • 9.26.1 구성 설정 함수
  • 9.26.2 서버 시그널링 함수
  • 9.26.3 백업 제어 함수
  • 9.26.4 복구 제어 함수
  • 9.26.5 스냅샷 동기화 함수
  • 9.26.6 복제 함수
  • 9.26.7 데이터베이스 개체 관리 함수
  • 9.26.8 일반 파일 액세스 함수
  • 9.26.9 경고성 잠금 함수
  • 9.27 트리거 함수
  • 9.28 이벤트 트리거 함수

  • 10장 타입 변환
  • 10.1 개요
  • 10.2 연산자
  • 10.3 함수
  • 10.4 값 저장
  • 10.5 UNION, CASE 및 관련 구문

  • 11장 인덱스
  • 11.1 소개
  • 11.2 인덱스 타입
  • 11.3 멀티컬럼 인덱스
  • 11.4 인덱스 및 ORDER BY
  • 11.5 복수 인덱스 조합
  • 11.6 고유 인덱스
  • 11.7 표현식의 인덱스
  • 11.8 부분 인덱스
  • 11.9 연산자 클래스 및 연산자 패밀리
  • 11.10 인덱스 및 콜레이션
  • 11.11 디스크 사용 검사

  • 12장 전체 텍스트 검색
  • 12.1 소개
  • 12.1.1 도큐먼트란
  • 12.1.2 기본 텍스트 일치
  • 12.1.3 구성
  • 12.2 테이블 및 인덱스
  • 12.2.1 테이블 검색
  • 12.2.2 인덱스 생성
  • 12.3 전체 텍스트 제어
  • 12.3.1 도큐먼트 파싱
  • 12.3.2 쿼리 파싱
  • 12.3.3 검색 결과 순위 지정
  • 12.3.4 결과 강조 표시
  • 12.4 추가 기능
  • 12.4.1 도큐먼트 조작
  • 12.4.2 쿼리 조작
  • 12.4.2.1 쿼리 재작성
  • 12.4.3 자동 업데이트의 트리거
  • 12.4.4 도큐먼트 통계 모으기
  • 12.5 파서
  • 12.6 사전
  • 12.6.1 불용어
  • 12.6.2 간단 사전
  • 12.6.3 동의어 사전
  • 12.6.4 유의어 사전
  • 12.6.4.1 유의어 구성
  • 12.6.4.2 유의어 예제
  • 12.6.5 Ispell 사전
  • 12.6.6 Snowball 사전
  • 12.7 구성 예제
  • 12.8 텍스트 검색 테스트 및 디버깅
  • 12.8.1 구성 테스트
  • 12.8.2 파서 테스트
  • 12.8.3 사전(dictionary) 테스트
  • 12.9 GiST 및 GIN 인덱스 타입
  • 12.10 psql 지원
  • 12.11 제한
  • 12.12 8.3 이전 텍스트 검색에서 마이그레이션

  • 13장 동시성 제어
  • 13.1 소개
  • 13.2 트랜잭션 격리
  • 13.2.1 읽기 커밋됨 격리 레벨
  • 13.2.2 반복 가능 읽기 격리 레벨
  • 13.2.3 직렬화 가능 격리 레벨
  • 13.3 명시적 잠금
  • 13.3.1 테이블 레벨 잠금
  • 13.3.2 행 레벨 잠금
  • 13.3.3 페이지 레벨 잠금
  • 13.3.4 데드락
  • 13.3.5 경고성 잠금
  • 13.4 애플리케이션 레벨에서 데이터 일관성 검사
  • 13.4.1 직렬화 가능 트랜잭션을 이용한 일관성 강제
  • 13.4.2 명시적 차단 잠금을 사용한 동시성 강제
  • 13.5 잠금 및 인덱스

  • 14장 성능 팁
  • 14.1 EXPLAIN 사용
  • 14.1.1 EXPLAIN 기초
  • 14.1.2 EXPLAIN ANALYZE
  • 14.1.3 주의점
  • 14.2 플래너에 의해 사용되는 통계
  • 14.3 명시적 JOIN 절을 사용해 플래너 제어
  • 14.4 데이터베이스 채우기
  • 14.4.1 자동 커밋 비활성화
  • 14.4.2 COPY 사용
  • 14.4.3 인덱스 삭제
  • 14.4.4 외래 키 제약 조건 삭제
  • 14.4.5 maintenanceworkmem 증가
  • 14.4.6 checkpoint_segments 증가
  • 14.4.7 WAL 아카이브 및 스트리밍 복제 비활성화
  • 14.4.8 나중에 ANALYZE 실행
  • 14.4.9 pg_dump에 대한 몇 가지 주의 사항
  • 14.5 비영속적 설정

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

#2016. 10. 26 수정 사항

[p.52: 주석]
그러나 SQL 표준에서는 이것이 불필요하며
->
그러나 SQL 표준에서는 이를 요구하지 않으며

[p.58: 5행]
SET temp_hi = temp_hi 2, temp_lo = temp_lo 2
->
SET temp_hi = temp_hi - 2, temp_lo = temp_lo - 2

[p.63: 아래에서 2행]
UPDATE accounts SET balance = balance 100.00
->
UPDATE accounts SET balance = balance - 100.00

[p.64: 첫 행]
UPDATE branches SET balance = balance 100.00
->
UPDATE branches SET balance = balance - 100.00

[p.125: 팁]
no null
->
not null

[p.407: 8행]
mloption
->
xmloption

[p.427: 참고]
4.2.14절에서 설명한 대고,
->
4.2.14절에서 설명한 대로,

[p.518: 7행]
컬럼이 개 이상
->
칼럼이 3개 이상

[p.598: 5행]
반본 가능 읽기
->
반복 가능 읽기

[p.621: 아래에서 6행]
저의 흡사하다
->
거의 흡사하다.


#2016. 11. 1 수정 사항

[p.112 9~10행]
이것은 테이블의 모든 행이 x > 0이더라도 런타임 시 절대 ELSE에 들어가지 않도록 플래너가 상수 하위 표현식을 단순화하기 때문에 결과적으로 0 으로 나누기 실패가 된다.
->
이것은 테이블의 모든 행이 x > 0이더라도 절대 ELSE 런타임에 입력되지 않을 것임에도 불구하고, 상수 하위 표현식을 단순화하려는 플래너 때문에 0으로 나누는 데 오류가 발생할 가능성이 높다.


[p.180: 아래에서 5행]
t2:
->
t2


[p296: 아래에서 5행]
(1108, '[2010-01-01 14:30, 2010-01-01 15:30)');
->
(1108, '[2010-01-01 14:30, 2010-01-01 15:30]');


[p.632: 12행]
플래너는 이 샘플 테이블이 너무 작아서 인덱스 스캔이 성가시지 않다고 생각하기 때문에(아주 정확하게),
->
플래너는 이 샘플 테이블이 인덱스 스캔을 방해하기엔 너무 작기 때문에