SQL Server のことなら SQL Quality SQL Server パフォーマンス チューニング、コンサルティング、アドバイス、相談、定期診断、トレーニング

第 29 回:書籍「SQL Server 2012の教科書 開発編」のお知らせ

2012年9月14日

SQL Server 2012の教科書 開発編

ソシムさんから出版していただきました。
書店に並ぶのは 9月19日ごろとのことです。
前著「SQL Server 2008の教科書」の改訂版となりますが、
今回も引き続き、日本マイクロソフト社の SQL Server の担当でいらっしゃる
アプリケーション プラットフォーム製品部 部長 斎藤泰行さまに推薦文を書いていただきました。
斎藤さんには、私たちがまだ会社を起こす前、フリーの時代から、記事や本を読んでいただいたり、セミナーでお世話になったりしていました。
そして、SQL Server の自習書もプレビューセミナーも一緒にやらせていただいてきたので、推薦文を書いてもらうのは斎藤さんしかいないと思ったわけです。
ご快諾いただいて、本当にありがとうございました!

Column や Hint も含めた目次をここに記載しておきます。

入門編

第1章 SQL Server 2012の概要とインストール

1-1 SQL Server 2012の概要
1-2 SQL Server 2012の製品ラインナップ
1-3 SQL Server 2012 Developerエディションのインストール

Column X64(64-bit)にネイティブに対応
Column エディション別の比較
Hint Visual Studio 2010 と共存させる場合の注意点
Hint .NET Framework 3.5.1 の有効化(Windows 7とWindows Server 2008 R2の場合)
Hint 後から機能を追加インストールする場合
Hint インスタンスとは?
Hint SQL Serverの名前はアプリからの接続時に利用される
Hint Windows ローカル ユーザー アカウントの作成
Hint サービス アカウントとは?
Column 照合順序の変更


第2章 インストール後の構成

2-1 インストール後のメニュー
2-2 SQL Server関連のサービス
2-3 SQL Serverが正常に動作していることの確認
2-4 システム データベース
2-5 インストール後のフォルダー構成
2-6 SQL Server 2005/2008やExpressエディションとの共存

Column SQL Server 2000とのツール比較
Column Resource データベース
Column 筆者の SQL Server 環境


第3章 SQL Server 2012を使ってみよう

3-1 とりあえず使ってみよう
3-2 SQLでデータの追加と検索
3-3 データの追加~INSERT~
3-4 データの検索(SELECT)
3-5 データの更新(UPDATE)と 削除(DELETE)

Column SQL ServerとOracleのデータベースの違い
Column SQLの呼び方は?
Column SQLの方言(ダイアレクト)
Hint クエリ エディターのインテリセンス機能
Hint SQLの実行に[F5]キーまたは[Ctrl]+[E]キー
Hint SQLステートメント内の記号は半角で入力
Hint 赤字のエラー メッセージが表示される場合
Hint データの追加または行単位
Column 列名を列挙したほうがよい?
Column Management StudioのINSERTステートメントのテンプレート
Hint 1ステートメントで複数行追加?
Hint ステートメント(スクリプト)の保存
Hint テーブル作成も「SQL」で
Column クエリ エディターを快適に使おう
Column GUI操作でデータの追加や更新を行う

第4章 正規化

4-1 正規化とは
4-2 関数従属とキー
4-3 正規化の手順

Column 正確には「候補キー」
Hint 識別子(ID)の身近な例
Hint コードは主キーに向いていない?
Hint ER図(ERダイアグラム)
Column 導出項目をあえて残す(正規化を崩す)
Column 複合主キー(自然キー)vs. 人工キー
Hint 正規化のポイント ~ 1 fact in 1 place ~

第5章 制約

5-1 制約とは
5-2 この章で使用するテーブル
5-3 PRIMARY KEY制約(主キー制約)
5-4 UNIQUE制約
5-5 CHECK制約
5-6 FOREIGN KEY制約

Column 整合性とは
Hint [保存]ボタンをクリックし忘れないように
Hint 重複データが存在する場合のエラー
Hint "変更の保存が許可されていません"エラーが発生する場合
Hint 制約の名前にも注目
Column SQLでPRIMARY KEY制約の設定
Column SQLで複合主キーを設定する場合
Column OracleのUNIQUE制約との違い
Column SQLでUNIQUE制約の設定
Column SQLでCHECK制約の設定
Column CHECK制約の無効化
Column SQLで列の追加
Column ERダイアグラムでFOREIGN KEY制約を設定
Column SQLでFOREIGN KEY制約の設定
Column FOREIGN KEY制約とパフォーマンス
Column 連鎖更新、連鎖削除オプション


第6章 SQLステートメントの基本(ANSI SQL92準拠)

6-1 この章で使用するテーブル
6-2 データを並べ替える~ORDER BY~
6-3 WHERE句で利用できる演算子
6-4 その他の演算子

Column NULL値の並べ替え順
Hint ORDER BY句を指定しない場合の並べ替え順は保証されない
Hint 漢字の場合の並べ替え順
Column ORDER BY句には数字も指定できる
Hint 構文内の大カッコ [ ] や | に慣れよう
Hint キーワード検索はパフォーマンスに注意
Hint 単一引用符は「'」は「''」にする
Hint 「_」や「%」が入った文字列をLIKEで検索するには
Hint NULL値に対する演算結果はNULL
Hint 演算結果の別名と列の別名(AS ~)
Hint ASの別名が既存の列名と同じ場合に注意
Hint 名前の命名規則に注意

第7章 SQLステートメントの応用(ANSI SQL92準拠)

7-1 集計関数とグループ化
7-2 複数テーブルの結合
7-3 外部結合~OUTER JOIN~
7-4 その他のSQL92規格
7-5 3つ以上のテーブルの結合
7-6 ビュー~仮想表~

Hint 集計関数ではNULL値が無視される
Column INNER JOINを利用しない内部結合(SQL92規格外)
Column 自己結合
Hint MAXやMINを使う方法
Column OUTER JOINを利用しない外部結合(SQL92規格外)
Column クエリとは
Hint サブクエリはカッコ内のSELECTを解釈
Hint UPDATEでサブクエリ
Hint UNIONはデータ型と列数が同じであれば連結可能
Hint CASE式は選択リスト以外でも利用可能
Column CASE式はOracleでDECODE関数、AccessでのIIF
Column JOINに記述したテーブル順に処理させる ~FORCE ORDER~
Hint クエリ デザイナーでGUI操作で結合
Column Reporting Servicesでグラフ化
Column Cube(キューブ)=立方体
Column ROLLUPとCUBEはANSI SQL99規格
Column PIVOTによるクロス集計
Column Accessのクエリ機能に相当
Hint ビュー デザイナーでGUI操作でビューを作成
Column ビュー経由の更新
Hint SQL Server 2012からはLAG関数で前年同月を取得
Hint SQL Server 2012からはウィンドウ操作で累積金額を取得


第8章 テーブル関連の操作とデータのインポート/エクスポート

8-1 テーブルのコピー~SELECT INTO~
8-2 データのみのコピー~INSERT SELECT~
8-3 IDENTITYプロパティで自動採番
8-4 データの全削除を高速に実行~TRUNCATE TABLE~
8-5 DEFAULT値(既定値)
8-6 CSVファイル出力(エクスポート)
8-7 Integration Servicesでデータのインポート

Column OralceではCREATE TABLE ~ AS
Hint テーブル デザイナーでIDENTITYプロパティを設定
Column Oracleでのシーケンス(順序)、Accessでのオートナンバー
Hint PRIMARY KEY制約違反に注意
Hint アプリケーションからIDENTITY値の取得
Hint テーブル デザイナーでDEFAULT値を設定
Column DEFAULT制約?
Column bcpは何の略?
Hint bcpコマンドの注意点
Hint 主キーとリレーションシップはコピーされない
Column Oracleデータベースのインポート
Column SQLステートメントでデータのインポート


第9章 照合順序、データ型

9-1 この章で使用するテーブル
9-2 照合順序(Collation)
9-3 データ型

Hint 半角スペースと全角スペースは区別される?
Hint サーバーの照合順序は慎重に
Hint データベースの照合順序はテーブル名にも影響あり
Column Oracleでの大文字と小文字の区別
Hint "変更での保存が許可されていません" エラーが発生する場合
Column SQLで列単位の照合順序を設定する
Column 照合順序の一覧
Hint SQL単位の照合順序はなるべく利用しないように
Hint 社員テーブルを作成していない場合
Hint WHERE句の条件式では余分な空白は無視される
Column ''(空文字)とNULL値の区別?
Hint SQL Server 2000までのtext型は下位互換用
Column CLOBデータ型?
Hint Unicodeを表示できないクライアント
Hint Windows Vista以降でサポートされるJIS2004
Hint 小さいデータ型を選択しよう
Hint 数字をchar型で格納した場合
Hint 日付のBETWEENに注意


第10章 関数とユーザー定義関数

10-1 この章で使用するテーブル
10-2 文字列操作関数
10-3 日付と時刻の操作関数
10-4 変換関数~CONVERTとCAST~
10-5 数値操作の関数
10-6 その他の関数
10-7 ユーザー定義関数
10-8 .NET Framework言語を使ったユーザー定義関数(SQLCLR)
10-9 CLRユーザー定義関数のパフォーマンスは?

Hint 関数の結果のみを確認する
Hint REPLACEで全角スペースを削除
Hint 検索条件を関数処理する場合は注意
Column Oracleとの関数比較(文字列)
Hint CONVERTとCASTはどちらを利用する?
Column *1.0の追加はdecimal(n,1)と等価
Hint SQL Server 2008 R2以前での月末の取得
Column Oralceとの関数比較(日付と時刻、型変換)
Column Oracleとの関数比較(数値)
Hint ユーザー定義関数のパフォーマンスは?
Column SQL Server Migration Assistant for Oralce V5.2でOralce関数の移行
Hint CLRユーザー定義関数で利用できるクラス ライブラリと制限


第11章 Transact-SQL(T-SQL)の基本

11-1 Transact-SQLの構成要素
11-2 動的SQL(EXEC、sp_executesql)
11-3 TOP句での上位N件の取得
11-4 MERGE(UPSERT)
11-5 順位付け関数(ROW_NUMBER、RANK、 DENSE_RANK、NTILE)
11-6 ページング(OFFSET~FETCH)
11-7 CTE(共通テーブル式)
11-8 一時テーブルによる結果の一時的な保存
11-9 テーブル変数

Hint SETステートメントでは、複数の変数を一度に扱えない
Hint SELECTステートメントの結果が1件になるようにWHERE句の条件式を指定
Hint 半角スペースでの文末はTransact-SQL独特
Column CASE式による条件分岐
Column Oracle PL/SQLとの比較
Hint テーブル名や列名のパラメーター化はできない
Hint TOP句は更新系のステートメントで利用可能
Column 一括インポート時にMERGEを利用
Hint ROW_NUMBER関数の利用しすぎに注意
Hint インライン ビュー
Hint インライン ビューとCTEの使い分け
Column CTEと再帰クエリ
Hint インライン ビューとCTE、一時テーブルの使い分け
Hint テーブル変数と一時テーブルの使い分け
Hint テーブル変数を配列のように利用する


開発編

第12章 データベース アプリケーションの開発

12-1 データベースAPI
12-2 ADO.NETを使ってみよう
12-3 SQL Server Profilerによるデバッグ
12-4 SQLの動的生成とSQLインジェクション
12-5 更新系SQLの実行

Hint Visual Studio 2010 Expressを利用する場合
Hint インテリセンス(IntelliSense)による入力補充
Hint 実行時にエラーが出る場合
Hint VBでのTry ~ Catch(例外処理)
Column トレース ファイルの再生
Hint アプリから内部実行されるSQLを捕獲
Hint パラメーターが文字データの場合
Column プロシージャ キャッシュとは


第13章 ストアド プロシージャ

13-1 ストアド プロシージャ
13-2 ストアド プロシージャの作成
13-3 入力パラメーターの利用
13-4 ストアド プロシージャのデバッグ
13-5 OUTPUT(出力)パラメーター
13-6 RETURNコード.
13-7 ストアド プロシージャ定義の表示

Hint バッチの先頭に記述する必要があるステートメント
Hint ビューとの違い
Hint ストアドプロシージャの削除
Hint パラメーター化した場合の未入力チェック
Hint IN演算子の値やLIKE演算子のキーワードが動的に変化する場合
Column Management Studioからストアド プロシージャの作成
Column [ローカル]ウィンドウが表示されない場合
Column SQL Server Data Toolsのスキーマ比較機能
Column 出力パラメーターがある場合はSQL Server Data Toolsからのデバッグが便利
Column ADOの場合はSET NOCOUNT ONが必要だった
Column ストアドプロシージャを利用しないIDENTITY値の取得
Hint IDENTITYは完全な連番ではない?
Column @@INDENTITY vs. SCOPE_IDENTITY
Column SQL Server 2000を利用している場合はsyscomments


第14章 トランザクションとエラー処理

14-1 トランザクションとは
14-2 SQL Serverにおけるトランザクションの実装
14-3 トランザクションの例
14-4 ロールバックされない処理(制約違反エラー)
14-5 エラーの再スローとユーザー定義エラー
14-6 ADO.NETでトランザクション~SqlTransaction~

Column 原子性(Atomicity)
Column All or Nothing
Hint OracleやDB2でのトランザクションの実装
Hint 明示的 vs. 暗黙的トランザクション
Hint ネストしたトランザクションの注意点
Hint ROLLBACKを記述しなかった場合
Column SQL Server 2000を利用している場合の例外処理
Column SQL Server 2000ではエラー メッセージを取得できない
Hint キャッチできないエラー
Column ADOでのエラー取得にはSET NOCOUNT ONが必要
Hint 分離レベルの注意点
Hint TransactionScopeは複数接続時にMSDTCが利用される

第15章 ロックと分離レベル

15-1 ロックとは
15-2 デッドロック
15-3 トランザクションの分離とIsolation Level
15-4 ダーティ リードとRead UnCommitted
15-5 反復読み取り不可: Non Repeatable Read
15-6 ファントム読み取り(Phantom Read)
15-7 楽観的(オプティミスティック)同時実行制御

Column SQLステートメントでロック状況の監視
Column ページやエクステントとは?
Hint ロック エスカレーションの監視
Column Oracleと同じように動作させたい場合
Hint ロック エスカレーションの無効化
Column Oracleのデッドロック時の動作
Column SQL Server 2000ではトレース フラグ1204
Column Deadlock graph(デッドロックのグラフィカル表示)
Column COM+コンポーネントの場合(VB6.0など)
Hint Read UnCommittedはパフォーマンス向上がメリット
Column OracleでのSELECT…FOR UPDATE
Column TransactionScopeとCOM+コンポーネントのデフォルトはSerializable
Column ASP.NETでの楽観的同時実行制御の自動実務
Hint ADO.NETでは0.333秒に注意


第16章 ロックの実践と読み取り一貫性

16-1 テーブル スキャンによるロック待ち
16-2 読み取り一貫性
16-3 読み取り一貫性のオーバーヘッド

Column インデックスとは
Column クラスター化インデックスでは Clustered Index Scan

付録 SQL Serverへの接続方法と提供される機能のまとめ

A-1 ネットワークを介したSQL Serverへの接続
A-2 SQL Serverの各バージョンで提供された代表的な機能
A-3 SQL Server 2012の主な新機能
A-4 今後の情報源

 

改訂版ということで、新規の執筆部分はそれほど多くないはずが、
本当に動作が変わっていないのかといった、細かい検証に時間がかかってしまいました(出たばかりのバージョン製品のコンピュータ本というのは、そういうものですね)。
それと、ちょうど脱稿時期に Windows 8 や Visual Studio 2012 がリリースされたことで、各製品が関わる画面をどのバージョンでとるかということで、紆余曲折した部分がありました。
ページボリュームの都合などで、すべてを書けたわけではありませんが、無事、出版できてうれしいです。
ソシムの片柳様、佐藤様、ありがとうございました!

今年の夏は、完全にクーラー無しで過ごしたので、汗だくの作業となりましたが、やれば出来るという感じですね(お陰で、ひどかった冷え性が治りました)。
ちょっと前までは、クーラーをつけないと、人間よりもマシンが熱暴走してしまって壊れてしまい、どちらかというとマシンのためにクーラーをつけていた感がありますが、今年はマシンにまったく問題なし。
それだけ、マシンも向上しているということですね。


事例1

MPNロゴ


SQLQualityは執筆とセミナーを通じて技術の啓蒙やエンジニアの育成支援も行っています
最新刊
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要(Amazon Kindle 書籍)

SQL Server 2012 の教科書
SQL Server 2012 の教科書(ソシム)

弊社オリジナル制作の
SQL Server 2012 自習書も
マイクロソフトのサイトで公開中!
ロングセラー
ASP.NET でいってみよう  SQL Server 2000 でいってみよう
ASP.NET でいってみよう
第7刷 16,500 部発行
SQL Server 2000 でいってみよう
第12刷 28,500 部発行


セミナー風景
セミナー風景

弊社執筆の
SQL Server 2012 自習書
マイクロソフトのサイトで公開中
全30冊
ダウンロードはこちら
弊社執筆の
SQL Server 2008 R2 自習書
マイクロソフトのサイトで公開中
全30冊
目次はこちら
松本美穂のコラム
(公開活動などのお知らせ)

第55回:書籍「SQL Server 2016の教科書 開発編」(ソシム)が発刊されました
第54回:「SQL Server 2016 プレビュー版 Reporting Services の新機能」自習書のお知らせ
第 53 回:SQL Server 2016 Reporting Services の新しくなったレポート マネージャーとモバイル レポート機能
第 52 回:SQL Server 2016 の自習書を作成しました!
第 51 回:PASS Summit と MVP Summit で進化を確信!
第 50 回:新しくなった Power BI(2.0)の自習書を作成しました!
第49 回:Excel 2016 の Power Query を使う
第 48 回:新しくなった Microsoft Power BI ! 無料版がある!!
第 47 回:「Microsoft Azure SQL Database 入門」 完成&公開!
第 46 回:Microsoft Power BI for Windows app からの Power BI サイト アクセス
第 45 回:Power Query で取得したデータを PowerPivot へ読み込む方法と PowerPivot for Excel 自習書のご紹介
第44回:「SQL Server 2014 への移行とアップグレードの実践」ドキュメントを作成しました
第43回:SQL Server 2014 インメモリ OLTP 機能の上級者向けドキュメントを作成しました
第42回:Power Query プレビュー版 と Power BI for Office 365 へのクエリ保存(共有クエリ)
第41回:「SQL Server 2014 CTP2 インメモリ OLTP 機能の概要」自習書のお知らせです
第40回: SQL Server 2012 自習書(HTML版)を掲載しました
第39回: Power BI for Office 365 プレビュー版は試されましたか?
第38回: SQL Server 2014 CTP2 の公開
第37回: SQL Server 2014 CTP1 の自習書をご覧ください
第36回: SQL Server 2014 CTP1 のクラスター化列ストア インデックスを試す
第35回: SQL Server 2014 CTP1 のインメモリ OLTP の基本操作を試す
第34回: GeoFlow for Excel 2013 のプレビュー版を試す
第33回: iPad と iPhone からの SQL Server 2012 Reporting Servicesのレポート閲覧
第32回: PASS Summit 2012 参加レポート
第31回: SQL Server 2012 Reporting Services 自習書のお知らせ
第30回: SQL Server 2012(RTM 版)の新機能 自習書をご覧ください
第29回: 書籍「SQL Server 2012の教科書 開発編」のお知らせ
第26回: SQL Server 2012 の Power View 機能のご紹介
第25回: SQL Server 2012 の Data Quality Services
第24回: SQL Server 2012 自習書のご案内と初セミナー報告
第23回: Denali CTP1 が公開されました
第22回 チューニングに王道あらず
第21回 Microsoft TechEd 2010 終了しました
第20回 Microsoft TechEd Japan 2010 今年も登壇します
第19回 SQL Server 2008 R2 RTM の 日本語版が公開されました
第18回 「SQL Azure 入門」自習書のご案内
第17回 SQL Server 2008 自習書の追加ドキュメントのお知らせ
第16回 SQL Server 2008 R2 自習書とプレビュー セミナーのお知らせ
第15回 SQL Server 2008 R2 Reporting Services と新刊のお知らせ
第14回 TechEd 2009 のご報告と SQL Server 2008 R2 について
第13回 SQL Server 2008 R2 の CTP 版が公開されました
第12回 MVP Summit 2009 in Seattle へ参加

技術コミュニティでも活動中

Microsoft MVP for SQL Server

松本美穂松本崇博

松本崇博 Blog(SQL Server Tips)
松本美穂ブログ(SQL Serverノート)