初めてのSQL 第3版

[cover photo]
TOPICS
Database
発行年月日
PRINT LENGTH
376
ISBN
978-4-87311-958-8
原書
Leaning SQL, 3rd Edition
FORMAT
Print PDF EPUB
Ebook
3,080円
Ebookを購入する
Print
3,080円

SQL言語に初めて触れるプログラマを対象に、SQL言語の基本を解説します。データベースの歴史、概念などの基礎知識から、データベースの作成、クエリの基本、フィルタリング、トランザクションなどまで、実践に必要なポイントを過不足なくコンパクトにまとめ、理解を深められるよう練習問題を用意しています。改訂にあたり、「ビュー」「メタデータ」「解析関数」「大規模なデータベースの操作」「SQLとビッグデータ」の章が追加され、さらに充実しました。SQLを学び始めるのに最適の一冊です。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第1刷正誤表


■p. viii, p. 17 MySQL SandboxのURL変更
【記載内容】MySQL Sandbox(https://www.katacoda.com/mysql-db-sandbox/scenarios/mysql-sandbox)にアクセスする。MySQL Sandboxは、Sakilaサンプルデータベースが読み込まれたMySQLインスタンスである。Katacodaアカウントをセットアップした後(無償)、[Start Scenario] ボタンをクリックする。
【更新内容】katacoda.comはサービスを終了いたしました。新しいMySQL Sandboxであるhttps://learning.oreilly.com/scenarios/mysql-sandbox/9781492079705にアクセスしてください。オライリーアカウントが必要です。

■P. 102 練習問題5-2の問題文
【誤】ファーストネームがJOHNで始まる俳優が出演している各映画のタイトルを返すクエリを記述してみよう。
【正】ファーストネームがJOHNである俳優が出演している各映画のタイトルを返すクエリを記述してみよう。

■P. 249 コード2行目
【誤】
(payment_id,
【正】
(payment_id,

■P. 327 練習問題5-2の問題文
【誤】ファーストネームがJOHNで始まる俳優が出演している各映画のタイトルを返すクエリを記述してみよう。
【正】ファーストネームがJOHNである俳優が出演している各映画のタイトルを返すクエリを記述してみよう。

目次

目 次
はじめに

1章 背景情報
    1.1 データベースとは
        1.1.1 非リレーショナルデータベースシステム
        1.1.2 リレーショナルモデル
        1.1.3 用語
    1.2 SQL とは何か
        1.2.1 SQL 文の分類
        1.2.2 SQL:非手続き型言語
        1.2.3 SQL の例
    1.3 MySQL とは何か
    1.4 SQL アンプラグド
    1.5 本書の内容

2章 データベースの作成と設定
    2.1 MySQL データベースを作成する
    2.2 mysql コマンドラインユーティリティを使う
    2.3 MySQL のデータ型
        2.3.1 文字データ
        2.3.2 数値データ
        2.3.3 時間データ
    2.4 テーブルを作成する
        2.4.1 ステップ1:設計
        2.4.2 ステップ2:改良
        2.4.3 ステップ3:SQL スキーマ文を作成する
    2.5 データの挿入とテーブルの変更
        2.5.1 データを挿入する
        2.5.2 データを更新する
        2.5.3 データを削除する
    2.6 文も使い方次第
        2.6.1 主キーが一意ではない
        2.6.2 外部キーが存在しない
        2.6.3 列値の違反
        2.6.4 無効な日付の変換
    2.7 Sakila データベース

3章 入門:クエリ
    3.1 クエリの仕組み
    3.2 クエリの句
    3.3 select 句
        3.3.1 列エイリアス
        3.3.2 重複を取り除く
    3.4 from 句
        3.4.1 テーブル
        3.4.2 テーブルリンク
        3.4.3 テーブルエイリアスを定義する
    3.5 where 句
    3.6 group by 句とhaving 句
    3.7 order by 句
        3.7.1 昇順と降順
        3.7.2 数値のプレースホルダによる並べ替え
    3.8 練習問題

4章 フィルタリング
    4.1 条件の評価
        4.1.1 丸かっこを使う
        4.1.2 not 演算子を使う
    4.2 条件を組み立てる
    4.3 条件の種類
        4.3.1 等号条件
        4.3.2 範囲条件
        4.3.3 メンバーシップ条件
        4.3.4 マッチング条件
    4.4 null
    4.5 練習問題

5章 複数のテーブルからデータを取得する
    5.1 結合とは何か
        5.1.1 デカルト積
        5.1.2 内部結合
        5.1.3 ANSI の結合構文
    5.2 3 つ以上のテーブルを結合する
        5.2.1 サブクエリをテーブルとして使う
        5.2.2 同じテーブルを2 回使う
    5.3 自己結合
    5.4 練習問題

6章 集合
    6.1 入門:集合論
    6.2 実践:集合論
    6.3 集合演算子
        6.3.1 union 演算子
        6.3.2 intersect 演算子
        6.3.3 except 演算子
    6.4 集合演算のルール
        6.4.1 複合クエリの結果を並べ替える
        6.4.2 集合演算の優先順位
    6.5 練習問題

7章 データの生成、操作、変換
    7.1 文字列データを操作する
        7.1.1 文字列を生成する
        7.1.2 文字列を操作する
    7.2 数値データを操作する
        7.2.1 算術関数を実行する
        7.2.2 数値の精度を制御する
        7.2.3 符号付きのデータを扱う
    7.3 時間データを操作する
        7.3.1 タイムゾーンに対処する
        7.3.2 時間データを生成する
        7.3.3 時間データを操作する
    7.4 変換関数
    7.5 練習問題

8章 グループ化と集計
    8.1 グループ化
    8.2 集計関数
        8.2.1 暗黙的なグループと明示的なグループ
        8.2.2 異なる値を数える
        8.2.3 式を使う
        8.2.4 null をどのように扱うか
    8.3 グループを生成する
        8.3.1 1 つの列によるグループ化
        8.3.2 複数の列によるグループ化
        8.3.3 式によるグループ化
        8.3.4 小計と総計を生成する
    8.4 グループ化のフィルタ条件
    8.5 練習問題

9章 サブクエリ
    9.1 サブクエリとは何か
    9.2 サブクエリの種類
    9.3 非相関サブクエリ
        9.3.1 複数行/単一列のサブクエリ
        9.3.2 複数列のサブクエリ
    9.4 相関サブクエリ
        9.4.1 exists 演算子
        9.4.2 相関サブクエリを使ってデータを操作する
    9.5 サブクエリを使う状況
        9.5.1 データソースとしてのサブクエリ
        9.5.2 式ジェネレータとしてのサブクエリ
    9.6 サブクエリのまとめ
    9.7 練習問題

10章 結合
    10.1 外部結合
        10.1.1 左外部結合と右外部結合
        10.1.2 3 つのテーブルによる外部結合
    10.2 クロス結合
    10.3 自然結合
    10.4 練習問題

11章 条件付きロジック
    11.1 条件付きロジックとは何か
    11.2 case 式
        11.2.1 検索case 式
        11.2.2 単純case 式
    11.3 case 式の例
        11.3.1 結果セットを変換する
        11.3.2 存在を確認する
        11.3.3 ゼロ除算エラー
        11.3.4 条件付き更新
        11.3.5 null 値の処理
    11.4 練習問題

12章 トランザクション
    12.1 マルチユーザーデータベース
        12.1.1 ロック
        12.1.2 ロックの単位
    12.2 トランザクションとは何か
        12.2.1 トランザクションを開始する
        12.2.2 トランザクションを終了する
        12.2.3 トランザクションのセーブポイント
    12.3 練習問題

13章 インデックスと制約
    13.1 インデックス
        13.1.1 インデックスを作成する
        13.1.2 インデックスの種類
        13.1.3 インデックスの使い方
        13.1.4 インデックスの欠点
    13.2 制約
        13.2.1 制約を作成する
    13.3 練習問題

14章 ビュー
    14.1 ビューとは何か
    14.2 ビューを使うのはなぜか
        14.2.1 データセキュリティ
        14.2.2 データ集計
        14.2.3 複雑さの隠蔽
        14.2.4 分割されたデータの結合
    14.3 更新可能なビュー
        14.3.1 単純なビューを更新する
        14.3.2 複雑なビューを更新する
    14.4 練習問題

15章 メタデータ
    15.1 データに関するデータ
    15.2 information_schema
    15.3 メタデータを操作する
        15.3.1 スキーマ生成スクリプト
        15.3.2 デプロイメントの検証
        15.3.3 動的SQL の生成
    15.4 練習問題

16章 解析関数
    16.1 解析関数
        16.1.1 データウィンドウ
        16.1.2 局所的な並べ替え
    16.2 ランキング
        16.2.1 ランキング関数
        16.2.2 複数のランキングを生成する
    16.3 レポート関数
        16.3.1 ウィンドウフレーム
        16.3.2 前の行と後の行
        16.3.3 列値の連結
    16.4 練習問題

17章 大規模なデータベースの操作
    17.1 パーティショニング
        17.1.1 パーティショニングの概念
        17.1.2 テーブルの分割
        17.1.3 インデックスの分割
        17.1.4 分割方式
        17.1.5 パーティショニングの利点
    17.2 クラスタリング
    17.3 シャーディング
    17.4 ビッグデータ
        17.4.1 Hadoop
        17.4.2 NoSQL とドキュメントデータベース
        17.4.3 クラウドコンピューティング
    17.5 まとめ

18章 SQL とビッグデータ
    18.1 Apache Drill
    18.2 Drill を使ってファイルからデータを取得する
    18.3 Drill を使ってMySQL からデータを取得する
    18.4 Drill を使ってMongoDB からデータを取得する
    18.5 複数のデータソースでDrill を使う
    18.6 SQL の未来
付録A サンプルデータベースのER 図
付録B 練習問題の解答
索引