Head First SQL
頭とからだで覚えるSQLの基本
- Lynn Beighley 著、佐藤 直生 監訳、松永 多苗子 訳
- 2008年06月 発行
- 608ページ
- ISBN978-4-87311-369-2
- フォーマット PDF
- 原書: Head First SQL
内容
初めて学ぶ方、過去に挫折した経験のある方、知識を確固たるものにしたい方を対象に、イラストや写真を使ってやさしく楽しく解説する人気のHead FirstシリーズのSQL編。視覚的にデータベースの仕組みと、それを操作するSQLについて詳しく解説しています。刺激的なレイアウト、楽しいクイズやパズル、あっと驚くたとえでSQLが直感で理解できます。基本だけでなく、SQLをさらに活用するための応用力も身につきます。「やさしく学ぶ」「楽しく学ぶ」「深く学ぶ」をすべて満たしてくれる一冊です。
目次
序章 この本が対象としている読者 読者の考えていることは理解しています メタ認知 この本を読むときに気を付けること その他の注意事項 テクニカルレビューチーム 謝辞 1章 データとテーブル:あらゆるものにふさわしい場所 データの定義 データをカテゴリごとに見てみよう データベースの中には何があるの? X線メガネを通して見たあなたのデータベース データベースは関連のあるデータを含む テーブルをクローズアップ コマンドで指示しよう! テーブルを設定する:CREATE TABLE文 より複雑なテーブルの作成 SQLを書くのはこんなに簡単 ようやく、my_contactsテーブルを作成します テーブル準備完了 データ型との出会い テーブルへのDESCコマンドの実行 既存のテーブルやデータベースを再作成することはできません! 古きテーブルを捨て、新しきを得る データをテーブルに追加するには、INSERT文を使います INSERT文の作成 INSERT文のバリエーション 値を持たない列 SELECT文を使ってテーブルを覗く SQLの真実:NULLの告白 NULLの内部制御 NOT NULLはDESCに現れる デフォルト値で空欄を埋める SQLツールボックス 2章 SELECT文:天賦のデータ検索 デートする? しない? より良いSELECT 「*」って何でしょう? データ型のクエリ方法 引用符のさらなる問題 釣り合わないシングルクォート シングルクォートは特殊文字 シングルクォートが入ったデータのINSERT 結果を制限するための特定列のSELECT より早く結果を得るための特定列のSELECT クエリの結合 数値の検索 比較演算子 比較演算子を用いた数値データの検索 比較演算子を用いたテキストデータへの投げ縄 生きるべきか死ぬべきか ANDとORとの違い NULL検索のためのIS NULLの使用 1つのキーワードで時間を節約:LIKE ワイルドカードの呼び出し ANDと比較演算子を用いた範囲選択 ここだけの話ですが… もっと良い方法があります デートの後、あなたはアリ?… …それとも、ナシ? NOTについてもっと SQLツールボックス 3章 DELETE文とUPDATE文:役に立つ変更 道化師は怖い 道化師の追跡 道化師は活動的 道化師データの入力方法 ボンゾ、困ったことになったよ DELETE文によるレコードの削除 新しいDELETE文の使用 DELETE文の規則 INSERT文とDELETE文の2段階 DELETE文に注意 不正確なDELETE文に関する問題 UPDATE文を使ったデータの変更 UPDATE文の規則 UPDATE文は新しいINSERT文/DELETE文 UPDATE文実行中 道化師の動作の更新 価格のUPDATE 1つのUPDATE文で十分 SQLツールボックス 4章 賢いテーブル設計:正規化の理由 魚に関する2つのテーブル テーブルは関係がすべて 原子的なデータ 原子的なデータとテーブル 原子的なデータの規則 正規化の理由 正規化されたテーブルの利点 道化師は正規化されていない 1NFへの道半ば 主キーの規則 正規形にする グレッグのテーブルの修正 私達が書いたCREATE TABLE文 テーブルを見せて 時間節約コマンド 主キーを持ったCREATE TABLE文 1、2、3… 自動インクリメント 既存テーブルへのPRIMARY KEYの追加 ALTER TABLE文とPRIMARY KEYの追加 SQLツールボックス 5章 ALTER文:過去の書き換え 変更が必要 テーブルの変更 テーブルの大改造 テーブル名の変更 計画が必要 列の一新 構造の変更 ALTERとCHANGE 1つのSQL文で2つの列を変更 早く!その列を捨てて 原子的ではないlocation列の詳しい調査 パターンの検索 便利な文字列関数 現行の列を使って新しい列を埋める UPDATE文とSET句を組み合わせた場合の動作 SQLツールボックス 6章 高度なSELECT文:新たな目でデータを見る データビル・ビデオ再編成中 現行テーブルの問題 既存データの突き合わせ 新しい列への移入 CASE式を伴うUPDATE文 問題があるらしい テーブルは乱雑になり得る SELECTするデータを整理する手段が必要 ORDER BYを少し試す 1つの列の順序付け(ORDER) 2つの列を使うORDER 複数の列を用いたORDER 整然としたmovie_tableテーブル DESCを用いたORDERの逆転 ガールスカウトのクッキー販売リーダーの問題 SUMが代わりに合計する GROUP BYを用いて一度に全部を合計(SUM) GROUP BYを使ったAVG MINとMAX 日数のCOUNT 異なる(DISTINCT)値のSELECT 結果の数の制限(LIMIT) 2位だけへの制限(LIMIT) SQLツールボックス 7章 複数テーブルのデータベース設計:現行テーブルからの脱却 ナイジェルにデート相手を見つける すべてが無駄に…でも待って 1つのテーブルから離れて考える 複数テーブルを使った道化師追跡データベース clown_trackingデータベーススキーマ 1つのテーブルを2つにする方法 テーブルの接続 外部キーへの制約 外部キーで悩む必要なし 外部キーを使ったテーブルの作成 テーブル間の関係 データのパターン:1対1 データのパターン:1対1テーブルはいつ使う? データのパターン:1対多 データのパターン:多対多に到達 データのパターン:交差テーブル データのパターン:多対多 ついに1NFへ 複合キーは複数の列を使用 省略記法 部分的関数従属性 推移的関数従属性 第2正規形 (ついに)第3正規形 こうして、リージス(そしてgregs_listデータベース)はいつまでも幸せに暮らしました SQLツールボックス 8章 結合と複数テーブル操作:みんなでうまくやれないの? まだ繰り返す、まだ繰り返す… テーブルへのデータの事前移入 「テーブルの正規化は簡単じゃない」ブルース 特別な趣味(列) 興味を持ち続ける すべての趣味をUPDATE すべての趣味を取得 1つの場所へ至る多数の道 CREATE文、SELECT文、INSERT文を(ほぼ)同時に実行 CREATE文、SELECT文、INSERT文を同時に実行 そのASはどうなっている? 列の別名 テーブル別名、誰が必要としている? 内部結合に関して知りたいことのすべて デカルト結合 内部結合の公開 内部結合が動作中:等価結合 内部結合が動作中:非等価結合 最後の内部結合:自然結合 一緒になったクエリ? テーブル別名と列の別名の真実:何から隠れているの? SQLツールボックス 9章 サブクエリ:クエリの中にあるクエリ グレッグが求人ビジネスに進出 グレッグのリストのテーブルが増加 グレッグは内部結合を使う 彼は他のクエリも試したい サブクエリ サブクエリで2つのクエリを1つに結合 1つのクエリでは不十分:サブクエリとの出会い サブクエリ動作中 サブクエリの規則 サブクエリ構築のウォークスルー SELECT列としてのサブクエリ 別の例:自然結合を用いたサブクエリ 非相関サブクエリ SQLの真実:最善のクエリ方法の選択 複数の値を伴う非相関サブクエリ:IN、NOT IN 相関サブクエリ NOT EXISTSを伴う(便利な)相関サブクエリ EXISTとNOT EXIST グレッグの求人サービスが営業開始 パーティに向かう途中で SQLツールボックス 10章 外部結合、自己結合、UNION:新しい戦略 古いデータの除去 左右について これが左側外部結合 外部結合と複数の合致 右側外部結合 外部結合している間に… 新しいテーブルを作成できるはず 新しいテーブルをどう適合させる? 自己参照外部キー テーブルをそれ自体に結合 自己結合が必要 複数テーブルの情報を取得する別の方法 UNIONが使える UNIONは制限されている UNIONの規則 UNION ALL UNIONからテーブルを作成 INTERSECTとEXCEPT 結合に関してはおしまいです。次の話題は… サブクエリと結合の比較 サブクエリを結合に サブクエリとしての自己結合 グレッグの会社は成長中 SQLツールボックス 11章 制約、ビュー、トランザクション:料理人が多すぎると、データベースがダメになる グレッグは従業員を雇用 ジムの初日:新規顧客の情報の入力 ジムはNULLを回避 それから3ヵ月後 CHECKをお願い:CHECK制約の追加 性別のCHECK フランクの仕事は退屈 ビューの作成 ビューの表示 ビューが実際に行うこと ビューとは? ビューに対する挿入、更新、削除 秘訣は、ビューが本当のテーブルのふりをすること CHECK OPTIONを伴うビュー ビューが更新可能になる条件 ビューを使い終わったとき 良いデータベースに悪いことが起きるとき ATM内部で起きたこと ATMのさらなるトラブル 夢じゃない。それがトランザクション ACID特性 SQLはトランザクション管理を手伝う ATM内で何が起きるべきだったか MySQLでのトランザクションの動作 それでは、自分でやってみよう SQLツールボックス 12章 セキュリティ:資産の保護 ユーザの問題 道化師追跡データベースのエラーの回避 ルートユーザアカウントの保護 新規ユーザの追加 ユーザが必要とすることを正確に決定 単純なGRANT文 GRANTのバリエーション 権限のREVOKE 使用されたGRANT OPTIONの取り消し 正確なREVOKE 共有アカウントに関する問題 ロールの使用 ロールの削除 ADMIN OPTION付きのロールの使用 CREATE USERとGRANTの組み合わせ グレッグリストが世界に進出! SQLツールボックス あなたの街にもグレッグリストはいかが? あなた自身のプロジェクトでSQLを使ってください。 そうすれば、あなたもグレッグのように成功するかもしれません! 付録i 残りの事項:本編で触れなかった重要事項トップ10 (1) RDBMSのためのGUIの入手 (2) 予約語と特殊文字 (3) ALL、ANY、SOME (4) データ型に関する追加情報 (5) 一時テーブル (6) データのキャスト (7) あなたは誰?今は何時? (8) 便利な数値関数 (9) 速度向上のためのインデックスの利用 (10) 2分で分かるPHP/MySQL 付録ii MySQLのインストール:自分で試してみよう すぐに始めよう! ドキュメントとトラブルシューティング WindowsにMySQLをインストールする手順 Mac OS XにMySQLをインストールする手順 付録iii ツールのまとめ:新しいSQLツールのすべて 記号 A-C D-E F-M N-R S-U V-W