書籍概要

これからはじめる PostgreSQL入門

著者
発売日
更新日

概要

本書は,データベース初学者を対象にPostgreSQLを使って,データベース操作の基本から運用までを学ぶための本です。付属DVD収録のファイルを利用することで,自宅のWindowsパソコンやMacで実際にデータの検索や更新などを行いながら,PostgreSQLによるリレーショナルデータベースの操作をマスターすることができます。

こんな方におすすめ

  • データベース初学者
  • PostgreSQLを学びたい人

目次

Chapter1 PostgreSQLの概要

  • 1-1 データベースとは
  • 1-2 リレーショナルデータベースとは
  • 1-3 PostgreSQLとは

Chapter2 PostgreSQL環境の準備

  • 2-1 仮想マシンイメージの利用
  • 2-2 pgAdmin4からPostgreSQLを使用する
  • 2-3 コマンドラインからPostgreSQLを使用する

Chapter3 データベース基本操作

  • 3-1 データの抽出 ~ SELECT~
  • 3-2 データの追加 ~ INSERT~
  • 3-3 データの変更 ~ UPDATE~
  • 3-4 データの削除 ~ DELETE~
  • 3-5 テーブル作成 ~ CREATE TABLE~
  • 3-6 トランザクション

Chapter4 SQL言語の構文

  • 4-1 SQLの基本要素と分類
  • 4-2 関数と演算子
  • 4-3 データ型とNULL

Chapter5 文字列データ型と関数/演算子

  • 5-1 文字列データ型
  • 5-2 文字列に対する関数/演算子
  • 5-3 文字列データと文字エンコーディング

Chapter6 数値データ型と関数/演算子

  • 6-1 数値データ型
  • 6-2 数値に対する関数/演算子
  • 6-3 数値の文字列表現

Chapter7 日付時刻データ型と関数/演算子

  • 7-1 日付時刻のデータ型
  • 7-2 日付時刻に対する関数/演算子

Chapter8 その他のデータ型と関数/演算子

  • 8-1 配列型
  • 8-2 範囲型
  • 8-3 JSON型
  • 8-4 バイナリ列型
  • 8-5 ラージオブジェクト

Chapter9 複数テーブルへの問い合わせ

  • 9-1 テーブル結合
  • 9-2 サブクエリ
  • 9-3 集合演算
  • 9-4 SELECT結果による更新

Chapter10 データ分析の問い合わせ

  • 10-1 データの並べ替え
  • 10-2 集約関数による集計
  • 10-3 グループ化
  • 10-4 ウィンドウ関数

Chapter11 テーブルの制約とデフォルト値

  • 11-1 制約
  • 11-2 列のデフォルト値

Chapter12 スキーマとビュー

  • 12-1 スキーマ
  • 12-2 ビュー
  • 12-3 マテリアライズドビュー

Chapter13 データベース作成

  • 13-1 PostgreSQLの基本構造
  • 13-2 データベースクラスタ作成
  • 13-3 PostgreSQL設定の基礎
  • 13-4 サービス起動・停止
  • 13-5 ユーザとデータベース作成

Chapter14 インデックスとデータ物理配置

  • 14-1 インデックス
  • 14-2 fillfactor
  • 14-3 テーブルスペース
  • 14-4 テーブルパーティショニング
  • 14-5 一時的データのテーブル

Chapter15 トランザクション制御とロック

  • 15-1 トランザクション
  • 15-2 トランザクション分離
  • 15-3 セーブポイント
  • 15-4 ロック

Chapter16 ユーザ定義関数

  • 16-1 ユーザ定義関数の作成
  • 16-2 SQLによる関数
  • 16-3 PL/pgSQL手続き言語の基本
  • 16-4 PL/pgSQLの制御構造
  • 16-5 PL/pgSQL内の問い合わせ実行
  • 16-6 エラー報告とエラー捕捉
  • 16-7 トリガ関数

Chapter17 データベースの運用管理

  • 17-1 バックアップとリストア
  • 17-2 レプリケーション
  • 17-3 監視とログ出力
  • 17-4 データのメンテナンス
  • 17-5 アクセス制御

Chapter18 アプリケーションから利用する

  • 18-1 スクリプト言語からの利用
  • 18-2 C言語からの利用
  • 18-3 その他の言語からの利用

Chapter19 PHPによるアプリケーション例

  • 19-1 PHPによるWebアプリケーション
  • 19-2 アプリケーションの概要
  • 19-3 アプリケーションの実装

Chapter20 付録

  • 20-1 yumリポジトリからのインストール手順

サポート

ダウンロード

電子版用ダウンロード

電子版用に,付録DVD-ROM収録コンテンツを以下から入手できます。ダウンロードには電子版本紙に掲載されているIDとパスワードが必要です。

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2020年6月2日最終更新)

P.121本文2行目

浮動小数点型は誤差が発生する場合あるので、
浮動小数点型は誤差が発生する場合があるので、

P.141表8-1「説明」の6段目の2行目

切ったた文字列にする
切った文字列にする

P.144表8-3のlower(r)とupper(r)の例

lower('[1,5]::int8range') ⇒ 1
upper('[1,5]::int4range') ⇒ 6
lower('[1,5]'::int8range)⇒ 1
upper('[1,5]'::int4range)⇒ 5

P.156図9-1右上のテーブルの表記

登録履歴テーブル
サービス会員テーブル

P.158リスト9-5下の本文2行目


t_userが3 行、t_user_authが5行なので、3行×5行で15行の結果が


t_userが3 行、t_user_authが4行なので、3行×4行で12行の結果が

P.180リスト10-9の下の本文


上の例では2017 年10 月の購入総計


上の例では2017年10月からの1年間の購入総計

P.180リスト10-10のタイトル


2017年10月の購入総計と1 件あたり平均購入ポイントが集計された


1年間の購入総計と1件あたりの平均購入ポイントが集計された

P.185表10-2

指定方法 同義のGROUPING SETS
GROUP BY ROLLUP (ampm, day) GROUP BY GROUPING SETS ((ampm, day), (day), ())
GROUP BY CUBE (ampm, day) GROUPING SETS ((ampm, day), (ampm), (day), ())
指定方法 同義の GROUPING SETS
GROUP BY ROLLUP (day, ampm) GROUP BY GROUPING SETS ((ampm, day), (day), ())
GROUP BY CUBE (day, ampm) GROUP BY GROUPING SETS ((ampm, day), (ampm), (day), ())

P.187リスト10-29の1~2行目


SELECT pid, ts, point,
rank() OVER (PARTITION BY to_char(ts, 'YYYYMMDD') ORDER BY point DESC),


SELECT ts, point,
    rank() OVER (PARTITION BY to_char(ts, 'YYYYMMDD') ORDER BY point  DESC) AS daily_rank,

P.200リスト11-31の下の本文2行目


nexrval関数を使って、


nextval関数を使って、

P.201表11-1「関数」列の1行目

nexrval(s)
nextval(s)

P.253リスト15-18の下の本文1行目


行を挿入する前はt_user_authテーブルには3行のデータがあったので、


行を挿入する前はt_user_authテーブルには2行のデータがあったので、

P.253リスト15-19の結果の最下段


2001 | md5 | cfdfbab28363a824a1e4290b9a567750


1010 | password | p2

P.263リスト15-37の下の本文2行目


データを取得してみます。ROOBACK;で


データを取得してみます。ROLLBACK;で

P.266リスト16-1の1行目


CREATE [OR REPLACE] FUNCTIN 関数名(引数定義) RETURNS 戻り値のデータ型


CREATE [OR REPLACE] FUNCTION 関数名(引数定義) RETURNS 戻り値のデータ型

P.281コラム内3行目

であれば実行後に「\ errvebose」コマンドを実行して、エラーのSQLSTETEを報告さ
であれば実行後に「\ errverbose」コマンドを実行して、エラーのSQLSTATEを報告さ

P.329リスト17-53の2行目


REVOKE 権限 FROM 対象オブジェクト TO ロール指定 ;


REVOKE 権限 ON 対象オブジェクト FROM ロール指定 ;

(以下2020年4月22日更新)

P.77リスト3-33の下の本文1行目

4行更新されたと表示されました。
5行更新されたと表示されました。

(以下2019年10月3日更新)

P.23本文5~6行目

リレーション
リレーションシップ

P.23図1-11の上部の説明

テーブル同士の関係
テーブル同士の関連

P.28「まとめ」2行目

サーバ型データベースソフト
クライアントサーバ型データベースソフト

(以下2019年9月12日更新)

P.27表1-2の2行目の機能

問い合わせ実行
問い合わせ実行計画

P.28表1-3の3行目のライブラリ

標準で付属するlibpgライブラリが使用できる
標準で付属するlibpqライブラリが使用できる

P.69表3-4


NOT 条件式		条件式が真ではない
条件式 AND 条件式	条件式が真ではない
条件式 OR 条件式	条件式が真ではない


NOT 条件式		条件式が真の時に偽、偽の時に真
条件式 AND 条件式	いずれの条件式も真の場合真
条件式 OR 条件式	いずれかの条件式が真の場合真

P.118本文下から3行目

リスト5-18のコマンドを実行してUTF8に戻します。
再度リスト5-17のコマンドを実行してUTF8に戻します。

P.120表6-1一番下の行

numeric(N,M)	desimal(N,M)

numeric(N,M)	decimal(N,M)

P.134表7-7下の行の例

'1 month 2 day 3 hour'::interval,'YYYYMMDD') ⇒ '00000102'

to_char('1 month 2 day 3 hour'::interval,'YYYYMMDD') ⇒ '00000102'

P.135表7-92行目の入力

to_char(now(), 'Mon. "week:"W' Dy')

to_char(now(), 'Mon. "week:"W Dy')

P.148表8-51行目の例

'["A","B","C"]'::json -> 0 → '"C"'

'["A","B","C"]'::json -> 0 → '"A"'

P.360図19-2の上の図

「<編集>をクリック」の引き出しの先の囲みが「削除」のチェックボックス
「<編集>をクリック」の引き出しの先の囲みが「編集」のチェックボックス

商品一覧