データベース
データベースの
データベースとSQLを、基本から順に学ぶ
データベースとは何かから始めて、表の設計とSQL、トランザクション、NoSQLの順に並べています。
1本目から読むデータベースとは ― 仕組みと種類全36本・約6時間
この順で読む
データベースの基本と設計
1データベースとは ― 仕組みと種類 データを決まった形式でまとめ、大勢が同時に読み書きしても矛盾しないように管理する仕組みです。表計算ソフトとの違い、DBMSの働き、RDBとNoSQLの違いが分かります。 2RDBとは ― 表・行・列と表どうしのつながり データを行と列の表で持ち、主キーと外部キーで表どうしをつなぐ仕組みを、顧客と注文の表で説明します。注文を選ぶと、外部キーが指す顧客の行が分かります。 3主キーと外部キーとは ― 候補キー・複合キーの違い 主キー・外部キー・候補キー・複合キー・代替キーの違いを整理します。顧客と注文の表に操作を試して、外部キーが拒否する操作を確かめられます。 43層スキーマとは ― 外部・概念・内部スキーマ 外部・概念・内部スキーマが、ビュー・表の定義・索引のどれに当たるかをSQLの例で説明します。変更を選ぶと、影響がどの層で止まるかが分かります。 5概念設計・論理設計・物理設計の違いとは 概念設計・論理設計・物理設計で決めることの違いを、同じ顧客と注文の例で比べます。決めることを選ぶと、どの段階の作業かが分かります。 6E-R図とは ― エンティティ・属性・関連の書き方 エンティティ・属性・リレーションシップの描き方と、1対1・1対多・多対多の違いが分かります。図を1段ずつ組み立てて確かめられます。 7コード設計とは ― 種類とチェックディジット 順番・区分・桁別・表意・合成コードの長所と短所を、同じ商品の例で比べます。JANコードの12桁を入れると、チェックディジットを計算できます。
SQLの基本
8SQLの基本 ― SELECT文の書き方 SELECT・FROM・WHERE・ORDER BYで行と列を取り出す書き方と、WHEREが先に処理される順番が分かります。パターンを選ぶと結果の表が変わります。 9SQLのLIKEとは ― %と_の使い方 %と_の違い、前方一致・後方一致・部分一致、%そのものを探すESCAPE、インデックスが効く条件が分かります。パターンを選ぶと一致する行が光ります。 10SQLのINとBETWEENとは ― 使い方とNOT IN INとBETWEENをOR・ANDで書き換えた形、両端を含むBETWEEN、日時の列で最終日が漏れる理由が分かります。条件を選ぶと残る行が光ります。 11CREATE TABLEと制約 ― 非NULL・一意性・参照・検査 CREATE TABLEの書き方とデータ型、非NULL・一意性・参照・検査の4つの制約が分かります。行を選ぶと、追加されるか拒否されるかを確かめられます。 12メタデータとは ― データディクショナリの役割 表や列の定義のような「データを説明するデータ」と、それを管理するデータディクショナリが分かります。表を作ると増える行が光ります。 13SQLのNULLとは ― IS NULLと3値論理 NULLを=で比べると行が選ばれない理由と、IS NULL・3値論理・集約関数での扱いが分かります。条件を選ぶと、各行の判定が変わります。 14SQLのCASE式とは ― CASE WHENの条件分岐と集計 条件で値を切り替えるCASE式の書き方と、WHENの判定順、SUM・COUNTと組み合わせた条件付き集計が分かります。書き方を選ぶと各行の結果が変わります。 15INSERT・UPDATE・DELETE文とは ― SQLのデータ更新 行を追加・書き換え・削除する3つの文と、ROLLBACKで取り消せる範囲が分かります。WHEREを忘れたときと制約違反の結果は、表の行が変わる図で確かめられます。
表の結合と集計
16SQLのJOIN(結合)とは ― 種類と使い分け 顧客と注文のように分けた表をつなぐJOINを、INNER・LEFT・RIGHT・FULLの4種類で比べます。種類を選ぶと、結果に残る行が変わります。 17SQLのUNIONとは ― UNION ALL・JOINとの違い SELECTの結果を縦につなぐUNIONと、重複を残すUNION ALLの違い、JOINとの使い分けが分かります。演算を選ぶと、残る行と合計が変わります。 18関係演算とは ― 選択・射影・結合の違い 選択・射影・結合・直積・商と、和・差・積の演算を、社員表と部署表の例で比べます。WHEREやJOINがどの演算に当たるかも分かります。 19SQLのGROUP BYと集約関数とは ― HAVINGでの絞り込み 顧客ごとの件数や合計を求めるGROUP BYと、COUNT・SUM・AVG・MAX・MINの使い方が分かります。WHEREとHAVINGで絞る順番の違いも確かめられます。 20SQLのウィンドウ関数とは ― OVER句とRANK 行を残したままグループ内の順位や合計を付けるウィンドウ関数を説明します。ROW_NUMBER・RANK・DENSE_RANKの違いと、部署ごとの上位N件の取り出し方が分かります。
ビュー・権限・データベース内の処理
21データベースのビューとは ― 仮想テーブルの仕組み SELECT文の定義だけを保存するビューの仕組みと、テーブルとの違い、使う目的が分かります。どんなビューなら更新できるかを図で試せます。 22GRANT文・REVOKE文とは ― データベースの権限 利用者に表の権限を与えるGRANT文と、取り消すREVOKE文の書き方が分かります。WITH GRANT OPTIONでの権限の連鎖と、ビューで見せる列を絞る方法も説明します。 23SQLのサブクエリ(副問い合わせ)とは ― IN・EXISTS SELECT文の中に別のSELECT文を書くサブクエリを、WHERE句・FROM句での使い方ごとに説明します。IN・EXISTS・相関サブクエリの違いと、JOINとの使い分けが分かります。 24SQLのカーソルとは ― 埋込みSQLで1行ずつ読む仕組み プログラムがSQLの結果を1行ずつ読むカーソルの仕組みと、DECLARE・OPEN・FETCH・CLOSEの順序が分かります。FETCHのたびに進む位置を図で確かめられます。 25ストアドプロシージャとトリガとは ― DB内の処理 SQL文をDBに登録して呼び出すストアドプロシージャと、表の変更で自動で動くトリガの違いが分かります。どちらが動くかは図で確かめられます。
正規化とトランザクション
26正規化とは ― 第1正規形から第3正規形まで 重複と更新時の矛盾を防ぐために表を分ける正規化を、第1・第2・第3正規形の順に説明します。注文の表を1段ずつ分割して確かめられます。 27トランザクションとACID特性とは ― 排他制御の基本 複数の処理を「全部反映か全部取り消しか」にまとめるトランザクションと、ACID特性の4つの性質が分かります。ロックと障害回復の基本も説明します。 28排他制御とデッドロックとは ― ロック待ちと解消 専有ロックと共有ロックの組み合わせで待つかどうかが決まる仕組みと、デッドロックが起きる理由、防ぎ方が分かります。 29トランザクション分離レベルとは ― 4段階の違い ダーティリード・ノンリピータブルリード・ファントムリードの違いと、4つの分離レベルで防げる現象が分かります。分離レベルを選ぶと、読み取りの結果が変わります。 30楽観ロックと悲観ロックの違い ― 使い分け 在庫の更新が消えるロストアップデートを例に、SELECT ... FOR UPDATEとバージョン番号のUPDATEを比べます。2人の操作を1段ずつ進めて確かめられます。
障害からの回復と分散
31ロールフォワードとロールバックの違い ― 障害回復 ログとチェックポイントを使い、障害の種類ごとにロールフォワードとロールバックを使い分ける方法が分かります。障害の種類を選んで判定できます。 32フル・差分・増分バックアップの違いとは フル・差分・増分の取る範囲と、復元に使う本数の違いが、1週間の例で分かります。世代管理と3-2-1ルールも説明します。 33分散データベースと2相コミットとは ― 同期の仕組み 複数のサイトに置いたデータを1つのデータベースとして使う仕組みと、透過性・レプリケーションが分かります。2相コミットメントの流れを1段ずつ比べられます。
高速化と大量のデータ
おすすめの本 PR
セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

