contents memorandum はてな

目次とメモを置いとく場

『スッキリわかるSQL入門 第2版』(中山清喬, 飯田理恵子 インプレス 2018//2013)

著者:中山 清喬
著者:飯田 理恵子
シリーズ:スッキリわかる入門シリーズ
件名:データベース
NDC:007.609 情報学.情報科学 >> データ処理.情報処理 >> データ管理
メモ:Relational DatabaseとSQL[Structured Query Language]の入門書。


スッキリわかるSQL入門 第2版 - IT入門書籍 スッキリシリーズ
スッキリわかるSQL入門 第2版 ドリル222問付き! - インプレスブックス


【目次】
はじめに [003]
dokoQLの使い方 [004-005]
本書の見方 [006]
表の種類 [007]
CONTENTS [008-014]


第0章 データベースを学ぶにあたって 015
0.1 データベースを学ぼう 016


  第I部 SQLを始めよう 

第1章 はじめてのSQL 023
1.1 データベースとは 024
  1.1.1 データベースってなんだろう
  1.1.2 データベース管理システム(DBMS
  1.1.3 代表的なRDBMS製品
  1.1.4 データベースにSQLを送るには

1.2 はじめてのSQL 029
  1.2.1 SQLを体験してみよう
  1.2.2 検索してみよう
  1.2.3 条件付きの検索
  1.2.4 データを追加してみよう
  1.2.5 データを更新してみよう
  1.2.6 データを削除してみよう

1.3 この章のまとめ 038
  1.3.1 この章で学習した内容

1.4 練習問題 039
1.5 解答 040


第2章 基本文法と4大命令 041
2.1 SQLの基本ルール 042
  2.1.1 記述形式に関するルール
  2.1.2 コメントに関する2つのルール
  2.1.3 予約語に関するルール

2.2 データ型とリテラル 046
  2.2.1 リテラルの種類
  2.2.2 列とデータ型
  2.2.3 固定長と可変長

2.3 SQLの命令体系 051
  2.3.1 4つの重要なSQL
  2.3.2 4大命令の全体像を俯瞰する

2.4 SELECT文 ――データの検索 054
  2.4.1 SELECT文の基本構造
  2.4.2 ASによる別名の定義

2.5 UPDATT文 ――データの更新 057
  2.5.1 UPDATT文の基本構造

2.6 DELETT文 ――データの削除 059
  2.6.1 DELETT文の基本構造

2.7 INSERT文 ――データの追加 061
  2.7.1 INSERT文の基本構造

2.8 4つのSQLをスッキリ学ぶコツ 064
  2.8.1 4大命令を振り返って
  2.8.2 4大命令の2通りの分類を理解する
  2.8.3 テーブル指定を先に記述する

2.9 この章のまとめ 069
  2.9.1 この章で学習した内容
  2.9.2 この章でできるようになったこと

2.10 練習問題 071
2.11 解答 073


第3章 操作する行の絞り込み 075
3.1 WHERE句による絞り込み 076
3.2 条件式 078
3.3 さまざまな比較演算子 080
3.4 複数の条件式を組み合わせる 090
3.5 主キーとその必要性 094
3.6 この章のまとめ 100
  3.6.1 この章で学習した内容
  3.6.2 この章でできるようになったこと

3.7 練習問題 102
3.8 解答 105


第4章 検索結果の加工 109
4.1 検索結果の加工 110
  4.1.1 SELECT文にだけ可能な修飾

4.2 DISTINCT ――重複行を除外する 112
  4.2.1 値の一覧を得る

4.3 ORDER BY ――結果を並べ替える 114
  4.3.1 並び替えの基本
  4.3.2 複数の列を基準にした並び替え
  4.3.3 列番号を指定した並び替え

4.4 OFFSET - FETCH ――先頭から数行だけ取得する 118
  4.4.1 FFSET - FETCH句の利用

4.5 集合演算子 121
  4.5.1 集合演算子とは
  4.5.2 UNION ――和集合を求める
  4.5.3 EXCEPT/MINUS ――差集合を求める
  4.5.4 INTERSECT ――積集合を求める

4.6 この章のまとめ 130
  4.6.1 この章で学習した内容
  4.6.2 家計簿DBでできるようになったこと

4.7 練習問題 132
4.8 解答 134


  第II部 SQL を使いこなそう

第5章 式と関数 137
5.1 式と演算子 138
  5.1.1 式の種類
  5.1.2 選択列リストで計算式を使う
  5.1.3 データの代わりに計算式を使う
  5.1.4 式が評価されるしくみ

5.2 さまざまな演算子 144
  5.2.1 基本的な算術演算子
  5.2.2 CASE ――値を変換する

5.3 さまざまな関数 147
  5.3.1 関数とは
  5.3.2 関数の使い方
  5.3.3 関数が動作する流れ
  5.3.4 関数にまつわる注意点

5.4 文字列にまつわる関数 152
  5.4.1 LENGTH/LEN ――長さを得る
  5.4.2 TRIM ――空白を除去する
  5.4.3 REPLACE ――指定文字を置換する
  5.4.4 SUBSTRING/SUBSTR ―― 一部を抽出する
  5.4.5 CONCAT ――文字列を連結する

5.5 数値にまつわる関数 156
  5.5.1 ROUND ――指定桁で四捨五入
  5.5.2 TRUNC ――指定桁で切り捨てる
  5.5.3 POWER ――べき乗を計算する 

5.6 日付にまつわる関数 158
  5.6.1 CURRENT_DATE ――現在の日付を得る

5.7 変換にまつわる関数 159
  5.7.1 CAST ――データ型を変換する
  5.7.2 COALESCE ――最初に登場するNULLでない値を返す

5.8 この章のまとめ 163
  5.8.1 この章で学習した内容
  5.8.2 この章でできるようになったこと

5.9 練習問題 165
5.10 解答 168


第6章 集計とグループ化 171
6.1 データを集計する 172
  6.1.1 集計関数とは
  6.1.2 集計関数の特徴

6.2 集計関数の使い方 175
  6.2.1 代表的な集計関数
  6.2.2 合計、最大、最小、平均を求める
  6.2.3 検索結果の行数を求める

6.3 集計に関する4つの注意点 179
  6.3.1 SELECT文でしか利用できない
  6.3.2 結果表がデコボコになってはならない
  6.3.3 引数に許される型が異なる
  6.3.4 NULLの取り扱い

6.4 データをグループに分ける 183
  6.4.1 グループ別の集計
  6.4.2 グループ化
  6.4.3 グループ集計の流れ
  6.4.4 グループ集計後の絞り込み

6.5 集計テーブルの活用 191
  6.5.1 大量のデータ集計
  6.5.2 集計テーブルの活用
  6.5.3 集計テーブルを更新する

6.6 この章のまとめ 195
  6.8.1 この章で学習した内容
  6.8.2 この章でできるようになったこと

6.7 練習問題 198
6.8 解答 201


第7章 副問い合わせ 203
7.1 検索結果に基づいて表を操作する 204
  7.1.1 2回のSELECTが必要な状況
  7.1.2 SELECTをネストする
  7.1.3 副問い合わせを習得するコツ
  7.1.4 コツその1:副問い合わせが処理されるしくみ
  7.1.5 コツその2:副問い合わせのパターン

7.2 単一の値の代わりに副問い合わせを用いる 211
  7.2.1 単一行副問い合わせ
  7.2.2 SET句で利用する
  7.2.3 選択列リストで利用する

7.3 複数の値の代わりに副問い合わせを用いる 214
  7.3.1 複数行副問い合わせ
  7.3.2 IN演算子で利用する
  7.3.3 ANY/ALL演算子で利用する
  7.3.4 エラーとなる副問い合わせ
  7.3.5 副問い合わせとNULL

7.4 表の代わりに副問い合わせを用いる 221
  7.4.1 表の結果となる副問い合わせ
  7.4.2 FROM句で利用する
  7.4.3 INSERT文で利用する

7.5 この章のまとめ 226
  7.5.1 この章で学習した内容
  7.5.2 この章でできるようになったこと
7.6 練習問題 229
7.7 解答 233


第8章 複数テーブルの結合 235
8.1 「リレーショナル」の意味 236
  8.1.1 RDBMSの真の実力
  8.1.2 複数テーブルへのデータ格納
  8.1.3 外部キーとリレーションシップ
  8.1.4 複数テーブルに分けるメリット
  8.1.5 デメリットの克服

8.2 テーブルの結合 246
  8.2.1 結合の基本的な使い方
  8.2.2 結合の動作イメージ
  8.2.3 紙工作でJOINを体験する

8.3 結合条件の取り扱い 253
  8.3.1 結合相手が複数行の場合
  8.3.2 結合相手の行がない場合
  8.3.3 左外部結合
  8.3.4 RIGHT JOINとFULL JOIN

8.4 結合に関するさまざまな構文 261
  8.4.1 テーブル名の指定
  8.4.2 3テーブル以上の結合
  8.4.3 副問い合わせの結果との結合
  8.4.4 同じテーブル同士を結合

8.5 この章のまとめ 265
  8.5.1 この章で学習した内容
  8.5.2 この章でできるようになったこと
8.6 練習問題 267
8.7 解答 269


  第III部 データベースの知識を深めよう 

第9章 トランザクション 275
9.1 正確なデータ操作 276
  9.1.1 正確なデータ操作を脅かすもの
  9.1.2 トランザクション

9.2 コミットとロールバック 279
  9.2.1 トランザクションの中断
  9.2.2 原子性確保のしくみ
  9.2.3 トランザクションの指定方法
  9.2.4 自動コミットモードの解除

9.3 トランザクションの分離 284
  9.3.1 同時実行の副作用
  9.3.2 3つの代表的な副作用
    副作用1 ダーティーリード
    副作用2 反復不能読み取り
    副作用3 ファントムリード
  9.3.3 トランザクションの分離
  9.3.4 分離レベル

9.4 ロックの活用 292
  9.4.1 明示的なロック
  9.4.2 デッドロック

9.5 この章のまとめ 299
  9.5.1 この章で学習した内容
  9.5.2 この章でできるようになったこと
9.6 練習問題 301
9.7 解答 304


第10章 テーブルの作成 307
10.1 SQL命令の種類 308
  10.1.1 データベースを使う2つの立場
  10.1.2 4種類の命令
  10.1.3 DCLとは

10.2 テーブルの作成 312
  10.2.1 テーブル作成の基本
  10.2.2 デフォルト値の指定
  10.2.3 DROP TABLE文
  10.2.4 ALTER TABLE文

10.3 制約 318
  10.3.1 人為的ミスに備える
  10.3.2 基本的な3つの制約
    [その1]NOT NULL制約
    [その2]UNIQUE制約
    [その3]CHECK制約
  10.3.3 主キー制約

10.4 外部キーと参照整合性 325
  10.4.1 参照整合性の崩壊
  10.4.2 崩壊の原因
  10.4.3 外部キー制約

10.5 この章のまとめ 330
  10.5.1 この章で学習した内容
  10.5.2 この章でできるようになったこと
10.6 練習問題 332
10.7 解答 334


第11章 様々な支援機能 337
11.1 データベースをより速くする 338
  11.1.1 検索を速くする方法
  11.1.2 インデックスの作成と削除
  11.1.3 高速化のパターン
  11.1.4 インデックスの注意点

11.2 データベースをより便利にする 345
  11.2.1 ビュー
  11.2.2 ビューの制約とデメリット
  11.2.3 採番の方法

11.3 データベースをより安全に使う 355
  11.3.1 信頼性のために備えるべき4つの特性
  11.3.2 バックアップのしくみ
  11.3.3 バックアップの整合性
  11.3.4 ログファイルのバックアップ

11.4 この章のまとめ 361
  11.4.1 この章で学習した内容
  11.4.2 この章でできるようになったこと
11.5 練習問題 363
11.6 解答 365


  第Ⅳ部 データベースで実現しよう

第12章 テーブルの設計 369
12.1 システムとデータベース 370
  12.1.1 システム化と要件
  12.1.2 データベース設計の流れ

12.2 家計管理データベースの要件 375
  12.2.1 立花いずみの要件
  12.2.2 立花コウジの要件
  12.2.3 既存の家計管理ノート

12.3 概念設計 378
  12.3.1 概念設計ですること
  12.3.2 ER図【entity-relation diagram】
  12.3.3 ER図の記述ルール
  12.3.4 エンティティを導き出す方法

12.4 論理設計 385
  12.4.1 論理設計ですること
  12.4.2 「多対多」の分解
  12.4.3 キーの整理
  12.4.4 正規化

12.5 正規化の手順 390
  12.5.1 正規化の段階
  12.5.2 非正規形
  12.5.3 第1正規形への変形
  12.5.4 関数従属性
  12.5.5 第2正規形への変形
  12.5.6 第3正規形への変形
  12.5.7 正規化を覚えるコツ

12.6 物理設計 402
  12.6.1 物理設計の流れ
  12.6.2 家計管理データベースの物理設計

12.7 正規化されたデータの利用 405
  12.7.1 家計管理データベースを使おう
  12.7.2 エンジニアの使命

12.8 この章のまとめ 409
  12.8.1 この章で学習した内容

12.9 練習問題 410
12.10 解答 411


練習ドリル 413
 基礎問題 414
  〇題材A 銀行口座データベース
  〇題材B 商店データベース
  〇題材C RPGデータベース
 発展問題 434
  〇題材D ヘアサロンデータベース


付録A DBMS別互換性簡易リファレンス [441-461]
  A.1 各DBMSに共通するDMLの構文
  A.2 Oracle DBに関する互換性のポイント
  A.3 SQL Serverに関する互換性のポイント
  A.4 Db2に関する互換性のポイント
  A.5 MySQLに関する互換性のポイント
  A.6 MariaDBに関する互換性のポイント
  A.7 PostgreSQLに関する互換性のポイント
  A.8 SQLiteに関する互換性のポイント
  A.9 H2 Datebaseに関する互換性のポイント
  A.10 DBMS比較表


付録B エラー解決 虎の巻 [463-479]


索引 [480-486]