Head First SQL

―頭とからだで覚えるSQLの基本

[cover photo]
TOPICS
Head First , Programming , Database
発行年月日
PRINT LENGTH
608
ISBN
978-4-87311-369-2
原書
Head First SQL
FORMAT
PDF
Ebook
4,620円
Ebookを購入する

初めて学ぶ方、過去に挫折した経験のある方、知識を確固たるものにしたい方を対象に、イラストや写真を使ってやさしく楽しく解説する人気のHead FirstシリーズのSQL編。視覚的にデータベースの仕組みと、それを操作するSQLについて詳しく解説しています。刺激的なレイアウト、楽しいクイズやパズル、あっと驚くたとえでSQLが直感で理解できます。基本だけでなく、SQLをさらに活用するための応用力も身につきます。「やさしく学ぶ」「楽しく学ぶ」「深く学ぶ」をすべて満たしてくれる一冊です。

正誤表

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

第1刷正誤表

1刷正誤表

Head First SQL 第1刷正誤表

2008年7月29日更新

位置
p82
エクササイズ
3番目の質問
SELECT last_name, first_name, email
FROM my_contacts
WHERE location = 'San Antonio, TX'
AND gender = 'M'
SELECT last_name, first_name, email
FROM my_contacts
WHERE location = 'San Antonio, TX'
AND gender = 'M'
AND status = 'single';
(1行追加)
p123
表中3行目
スナッグルズの
last_seenの欄
ボールマート
ディクソンパーク
p125
表中3行目
スナッグルズの
last_seenの欄
ボールマート
ディクソンパーク
p125
表中4行目
ミスター・ホボの
last_seenの欄
ビージーサーカス
オークランド病院
p131
表最終行
ミスター・ホボの
last_seenの欄
エリック・グレイのパーティ
ディクソンパーク
p149
表中3行目スナッグルズの
last_seenの欄
ボールマート
ディクソンパーク
p150
コード
1行目
UPDATE colown_info
UPDATE clown_info

目次

序章
	この本が対象としている読者
	読者の考えていることは理解しています
	メタ認知
	この本を読むときに気を付けること
	その他の注意事項
	テクニカルレビューチーム
	謝辞

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