はじめに
スッキリわかるSQL入門第4版を読んで、良かったところ、学んだこと、難しかったことをまとめていこうと思います。
良かったところ
- 環境構築なしに専用のサイトで演習問題ができる
- 読んでいて疑問に感じる部分を会話形式で説明してくれるのがわかりやすいです
- 最後の章で基本的なデータベースの設計の部分まで説明してくれる
学んだこと
SQLの体系(2章)
- SELECT、UPDATE、DELETE、INSERT の4つの命令が基本
- 4つは検索系と更新系(操作内容から見た)、既存系と新規系(対象とするデータから見た)の2通りの分類方法がある
主キー(3章)
「この値を指定すれば、ある1行を完全に特定できる」役割を担う列のこと
- 自然キー:自然に主キーの役割を担う列
- 人工キー:管理目的のために人為的に作られた列(自然キーが存在しない時は人工キーを追加して識別可能にする)
検索結果の加工(4章)
- DISTINCT:重複行を除外する
- ORDER BY:結果を並び替える
- OFFSET - FETCH:行を限定して取得する
- UNION、EXCEPT/MINUS、INTERSECT:結果を集合演算する
集計関数(6章)
- SUM:データを合計する (数値)
- MAX:最も大きい値を求める (数値、日付と時刻、文字列)
- MIN:最も小さい値を求める (数値、日付と時刻、文字列)
- AVG:データを平均する (数値)
- COUNT:行数をカウントする (すべてのデータ型)
副問い合わせ(サブクエリ)について(7章)
SQL文の中に別のSELECT文を記述することができる
副問い合わせパターン
- 単一行副問い合わせ:結果が1行1列になるもの
- 複数行副問い合わせ:結果がn行1列になるもの
- 結果がn行m列の表形式になる副問い合わせも使われる
複数行副問い合わせと演算子
- IN、ANY、ALL演算子と合わせてよく使われる
- 結果にNULLが含まれると、NOT IN、<>ALL演算子の評価結果もNULLになる
トランザクション(9章)
複数のSQL文を送るときにひとかたまりとして扱うように指示できる
テーブルの作成(10章)
- CREATE TABLE文:新規のテーブルを作成
- DROP TABLE文:テーブル削除
- ALTER TABLE文:テーブルの定義を変更
データベースをより安全に扱う(11章)
-
ACID特性:データを正確かつ安全に取り扱うためにシステムが備えるべき4つの特性
- 原始性: 処理が中断しても中途半端な状態にならない
- 一貫性:データの内容が矛盾した状態にならない
- 分離性:複数の処理を同時実行しても副作用がない
- 永続性:記録した情報は消滅せず保持され続ける
-
インデックス:テーブルの列に対して、索引情報を生成することができる。書き込み性能の低下を招く可能性もあるため乱用は禁物
-
ビュー:SELECT文の結果表を 仮想的なテーブルとして扱うことができる
-
採番とシーケンス:複雑な採番を行う際は、採番テーブルを作るなどして自力で実装する必要がある
-
バックアップ:正確なデータ処理には、正確なACID特性が求められる。データベースの内容だけでなく、ログファイルもバックアップしておき、そこからデータベースの操作をロールフォワードすることで、障害発生直前の状態まで復元できる。
難しかったこと
テーブル設計の部分はまだまだ理解が足りないと感じました。
自力で1から作成するには別の書籍も使って勉強する必要があると感じました。