Bar

SQLServer 最近勉強した内容をまとめてみました

imageSQL Serverを素人ながら使い続けていますが、知らない事が多すぎるんですよね。
今回は最近勉強した内容を自分用としてメモ。

リモートサーバの設定と削除

小規模ではあまり使わないと思いますが、リモートサーバ上のデータにアクセスする場合に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のサンプルコードは下記の通りですが、えらく便利ですな~
2012-10-02_142124

パーティションテーブル

パーティションテーブルは、行方向に複数の単位に分割することで大きいテーブルとインデックスの管理可能性と拡張性が向上します。ただし、SQL Server 2008R2系で使えるのは下記エディションだけです。
  • DataCenter Edition
  • Enterprise Edition
  • Developer Edition
SQL Server 2008 R2 の各エディションがサポートする機能より
使ってみたいなと思うけど、購入できるエディションがございません。
なお、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が到着次第購入してみようかと思っています。