WEB+DB PRESS plusシリーズ[データベースの気持ちがわかる]SQLはじめの一歩

書籍の概要

この本の概要

RDBMSの基本や「このSQLはなにをしているのか」といったことへの理解は,どのような専門をもつエンジニアにとってもいまだに必須となる知識の一分野であり続けています。本書は,データベースという概念にはじめて触れる新人エンジニアが,データベース周辺技術の基礎知識をまんべんなく学び,標準的なSQLの文法を豊富な図版と実践をとおして身に付けるためのはじめの一歩となる本です。

こんな方におすすめ

  • RDBの基礎を知りたい新人エンジニア
  • これまで直にSQLに触れることのなかった初級のアプリケーションエンジニア

本書に関するお知らせ

本書に関連する記事を公開しております。

目次

第1章 データベースとSQL

1-1 データベースとは

  • 1-1-1 システム内のデータベース
  • 1-1-2 DBとDBMS
  • 1-1-3 データベースを操作する言語SQL

1-2 さまざまなデータベース

  • 1-2-1 データベースの種類
  • 1-2-2 RDBMSが使われているシステム
  • 1-2-3 データベース製品
  • 1-2-4 SQLの方言と標準化

1-3 データベースサーバ

  • 1-3-1 クライアント/サーバモデル
  • 1-3-2 Webアプリケーションの構造
  • 1-3-3 MySQLサーバとmysqlクライアント

1-4 この章のまとめ

1-5 練習問題

第2章 テーブルからデータを取り出す

2-1 ハローワールドの実行

  • 2-1-1 「SELECT * FROM テーブル名」の実行
  • 2-1-2 SELECT命令の構文
  • 2-1-3 予約語とデータベースオブジェクト名
  • 2-1-4 ハローワールドで得られるれる結果=テーブル
  • 2-1-5 何もないデータ=NULL

2-2 テーブル構造を参照する

  • 2-2-1 DESCコマンド
  • 2-2-2 データ型

2-3 検索条件を付けて絞り込む

  • 2-3-1 SELECT句で列を指定する
  • 2-3-2 WHERE句で行を絞り込む
  • 2-3-3 文字列型の定数
  • 2-3-4 NULL値の検索
  • 2-3-5 比較演算子

2-4 条件を組み合わせる

  • 2-4-1 ANDで組み合わせる
  • 2-4-2 ORで組み合わせる
  • 2-4-3 ANDとORを利用する場合の注意点
  • 2-4-4 NOTで組み合わせる

2-5 LIKEによるパターン検索

  • 2-5-1 LIKEであいまい検索する
  • 2-5-2 LIKEで%を検索する
  • 2-5-3 文字列定数「'」のエスケープ

2-6 この章のまとめ

2-7 練習問題

第3章 ソートと演算

3-1 並べ替える ── ORDER BY

  • 3-1-1 ORDER BYで検索結果を並べ替える
  • 3-1-2 ORDER BY DESCで降順に並べ替える
  • 3-1-3 大小関係
  • 3-1-4 ORDER BYではテーブルは変化しない

3-2 複数の列を指定して並べ替える

  • 3-2-1 複数列での並べ替え指定
  • 3-2-2 ソート方法を指定する
  • 3-2-3 NULL値のソート順

3-3 取得行を制限する ── LIMIT

  • 3-3-1 取得する行数の制限
  • 3-3-2 オフセット指定

3-4 数値の演算

  • 3-4-1 四則演算
  • 3-4-2 SELECT句で演算する
  • 3-4-3 式の別名
  • 3-4-4 WHERE句で演算する
  • 3-4-5 NULL値の演算
  • 3-4-6 ORDER BY句で演算する
  • 3-4-7 関数
  • 3-4-8 ROUND関数

3-5 文字列の演算

  • 3-5-1 文字列結合
  • 3-5-2 SUBSTRING関数
  • 3-5-3 TRIM関数
  • 3-5-4 CHARCTER_LENGTH関数

3-6 日付の演算

  • 3-6-1 SQLにおける日付
  • 3-6-2 日付の足し算と引き算

3-7 CASE式でデータを変換する

  • 3-7-1 CASE式とは
  • 3-7-2 もうひとつのCASE構文
  • 3-7-3 CASEを使用する場合の注意点

3-8 この章のまとめ

3-9 練習問題

第4章 データの追加・削除・更新

4-1 行を追加する ── INSERT

  • 4-1-1 INSERTで行を追加する
  • 4-1-2 値を入れる列を指定する
  • 4-1-3 NOT NULL制約
  • 4-1-4 DEFAULT

4-2 行を削除する ── DELETE

  • 4-2-1 DELETEで行を削除する
  • 4-2-2 DELETE命令の句

4-3 データを更新する ── UPDATE

  • 4-3-1 UPDATEでデータを更新する
  • 4-3-2 UPDATEで更新する場合の注意点
  • 4-3-3 複数列の更新
  • 4-3-4 NULLに更新する

4-4 物理削除と論理削除

  • 4-4-1 種類の削除方法
  • 4-4-2 どちらの削除方法を使うべきか

4-5 この章のまとめ

4-6 練習問題

第5章 集計とサブクエリ

5-1 行数を数える ── COUNT

  • 5-1-1 COUNTで行数を数える
  • 5-1-2 集約関数におけるNULL値
  • 5-1-3 DISTINCTで重複を取り除く
  • 5-1-4 集計関数でのDISTINCT

5-2 COUNT以外の集約関数

  • 5-2-1 SUMで合計を計算する
  • 5-2-2 AVGで平均を計算する
  • 5-2-3 MIN・MAXで最小・最大を計算する

5-3 グループ化する ── GROUP BY

  • 5-3-1 GROUP BYでグループ化する
  • 5-3-2 HAVING句で絞り込む
  • 5-3-3 複数列でグループ化する
  • 5-3-4 結果の順番

5-4 サブクエリ

  • 5-4-1 DELETEのWHERE句でサブクエリを使う
  • 5-4-2 スカラ値
  • 5-4-3 SELECT句でサブクエリを使う
  • 5-4-4 SET句でサブクエリを使う
  • 5-4-5 FROM句でサブクエリを使う
  • 5-4-6 INSERT命令とサブクエリを使う

5-5 相関サブクエリ

  • 5-5-1 EXISTS述語
  • 5-5-2 NOT EXISTS述語
  • 5-5-3 相関サブクエリ
  • 5-5-4 IN述語

5-6 この章のまとめ

5-7 練習問題

第6章 データベースオブジェクトの作成と削除

6-1 データベースオブジェクト

  • 6-1-1 データベースオブジェクトとは
  • 6-1-2 スキーマ

6-2 テーブルの作成・削除・変更

  • 6-2-1 テーブルの作成
  • 6-2-2 テーブルの削除
  • 6-2-3 テーブルの変更
  • 6-2-4 ALTER TABLEでのよくあるテーブル管理

6-3 制約

  • 6-3-1 テーブル作成時に制約を定義する
  • 6-3-2 制約の追加
  • 6-3-3 制約の削除
  • 6-3-4 プライマリキー

6-4 インデックスのしくみ

  • 6-4-1 インデックスとは
  • 6-4-2 検索に使われるアルゴリズム
  • 6-4-3 一意性

6-5 インデックスの作成と削除

  • 6-5-1 インデックスの作成
  • 6-5-2 インデックスの削除
  • 6-5-3 EXPLAIN
  • 6-5-4 最適化

6-6 ビューの作成と削除

  • 6-6-1 ビューとは
  • 6-6-2 ビューの作成と削除
  • 6-6-3 ビューの弱点

6-7 この章のまとめ

6-8 練習問題

第7章 複数のテーブルを扱う

7-1 集合演算

  • 7-1-1 SQLと集合
  • 7-1-2 UNIONで和集合を計算する
  • 7-1-3 積集合と差集合

7-2 テーブルの結合

  • 7-2-1 直積と交差結合
  • 7-2-2 内部結合
  • 7-2-3 INNER JOINで内部結合する
  • 7-2-4 内部結合を活用したデータの管理
  • 7-2-5 外部結合

7-3 リレーショナルモデル

  • 7-3-1 リレーショナルモデルとは
  • 7-3-2 リレーショナルモデルとSQLの対応

7-4 この章のまとめ

7-5 練習問題

第8章 データベース設計

8-1 データベース設計

  • 8-1-1 データベース設計とは
  • 8-1-2 ER図

8-2 正規化

  • 8-2-1 正規化とは
  • 8-2-2 第1正規形
  • 8-2-3 第2正規形
  • 8-2-4 第3正規形
  • 8-2-5 正規化の目的

8-3 トランザクション

  • 8-3-1 トランザクションとは
  • 8-3-2 ロールバックとコミット
  • 8-3-3 トランザクションのかけ方

8-4 この章のまとめ

8-5 練習問題

  • 付録A MySQLのセットアップ
  • 付録B 練習問題の回答