今回は最近勉強した内容を自分用としてメモ。
リモートサーバの設定と削除
小規模ではあまり使わないと思いますが、リモートサーバ上のデータにアクセスする場合にsp_addlinkedserverプロシージャとopenquery関数を使えます。SQL Serverをもう一台増設した時に使えますね。
リンクサーバの作成方法
http://msdn.microsoft.com/ja-jp/library/ms190479.aspx
OpenQueryの使い方
http://msdn.microsoft.com/ja-jp/library/ms190479.aspx
リンクサーバの削除方法
http://msdn.microsoft.com/ja-jp/library/ms186218.aspx
MARS(Multiple Active Result Set)
SQL Server 2000時代に「複数の結果セット」を得るにはオープン⇒検索⇒クローズ
を複数回実行していましたが、SQL Server 2005から複数のアクティブな結果セットが得られるMARSという機能が搭載されました。
MSDNのサンプルコードは下記の通りですが、えらく便利ですな~
パーティションテーブル
パーティションテーブルは、行方向に複数の単位に分割することで大きいテーブルとインデックスの管理可能性と拡張性が向上します。ただし、SQL Server 2008R2系で使えるのは下記エディションだけです。- DataCenter Edition
- Enterprise Edition
- Developer Edition
使ってみたいなと思うけど、購入できるエディションがございません。
なお、SQL Server 2012でもサポート機能は同じようです。概要等を知りたい方は@ITの記事が分かりやすいですね。
データパーティショニングで巨大DBも楽々管理余談:オープンソースのPostgreSQLはパーティショニング使えます。
パーティショニング : 用途と利点
ローカル内の異なるデータベース間で検索
データベースの完全修飾名は4つの要素(識別子)から構成されています。[[[サーバ名].[データベース].][所有者].]データベースオブジェクト基本を知っていればすぐにSELECT文が書けます。
例えばこんな感じ。
SELECT a.[氏名コード] , b.[氏名] FROM [db1].[dbo].[table1] a INNER JOIN [db2].[dbo].[table2] b ON a.[氏名コード] = b.[氏名コード]
カラムにNULLを挿入する方法
SSMS上でテーブルのカラムにNULLを挿入するCtrl+0を押します。
coalesce関数の使い方
英和辞典の発音記号を見るとコウアレスと読むそうな。coalesce関数に与えた複数の引数を順番にチェックし、NULLではない最初の引数を表示します。
例えば
SELECT coalesce(NULL, 100, 200)を実行するとNULLをスキップして、次の値「100」が結果として得られます。
表の外部結合をするときにCASE WHENを使ってNULL判定していた自分が恥ずかしい・・・
SQL Injectionのチートシート
SQL Injectionのチートシート記事があったのでメモしておきます。PostgreSQL以外にSQL ServerやOracleでも使えるように書かれています。
セキュリティ対策に必須な内容ですので、テスト番長な方はブックマークしておいた方がいいでしょうね。
Postgres SQL Injection Cheat Sheet
余談:勉強用の本
先日ツイートした内容とカブリますが、SQL Serverを勉強するために購入&購入予定の本をご紹介。紹介した本以外に、「これいいよ!」という本あれば是非教えてほしいな~
SQL Server 2000 ストアドプロシージャ プログラミング
厚さがかなりあるストアドプロシージャのプログラミング本です。新品は高いですが、中古本なら送料込みで1000円しません。
Transact-SQLとストアドプロシージャについてかなり詳しく書いています。
新しい機能はありませんが、基本は勉強できますのでオススメです。
なお、私はこの本を使ってSQL Server 2008 R2上にストアドプロシージャを作成・稼働させています。
絵で見てわかるSQL Serverの内部構造(DB Magazine)
DB Magazineの連載を1冊にしたものです。SQL Server 2000の古い本を所持していますが、DB Magazineが発行した本は非常に分かりやすいです。
まだ購入していませんが、はよ読んでみたい・・・
達人に学ぶSQL徹底指南書
こちらもまだ購入していませんが、Amazonでかなり評価がいいので気になっています。Google Playでも購入できるので、Google Nexus7が到着次第購入してみようかと思っています。