連載
» 2008年07月14日 00時00分 公開

一気に分かるSQL Server 2008 新機能(3):SQL Server 2008で変わる開発スタイル (2/3)

[岡田朋之,日本ユニシス]

新しいDML(Data Manipulation Language):MERGEステートメント

 Oracleでは以前から提供されていましたが、SQL Serverでも2008からMERGEステートメントが使えるようになります。MERGEステートメントではキー項目で比較し、一致する場合と一致しない場合でそれぞれ異なる処理を行えます。

 例えば、リスト1のようなSQL文を実行することで、図1のTable1、Table2をマージできます。

MERGE Table1

Using Table2

On (Table1.Col1 = Table2.Col3)

When Matched Then

 Update Set Table1.Col2 = Table2.Col4 -----(1)

When Not Matched Then

 INSERT (Table1.Col1, Table1.Col2) Values (Table2.Col3, Table2.Col4); ----(2)

リスト1 SQL Server 2008のMERGEステートメントを使ってテーブルをマージする
図1 MERGEステートメント 図1 MERGEステートメント

 リスト1では、Table1のCol1列とTable2のCol3列を比較し、一致する場合はTable1のCol2列をTable2のCol4列に変更し(1)、Table2にしかないレコードはTable1に追加します(2) 。

 従来であれば、例えば更新処理が多いケースではまず更新を行い、更新件数が0件であれば追加する、というロジックをアプリケーション側で逐一実装していました。

  SQL Server 2008で実装されるこのMERGEステートメントを利用すれば、同様の処理を1つのSQL文で実現できるようになります。結果として、開発やテストフェイズでの作業負荷の軽減が期待できます。

インテリセンス機能/文法エラーチェック機能

 Visual StudioではおなじみのインテリセンスがSQL Server 2008のManagement Studioで使用できるようになりました。インテリセンスはSQL文作成中に、次に入力すべきキーワードの候補を表示し、クエリ作成を支援する機能です。

 例えば、サンプルデータベースである「AdventureWorks」データベースに対して、Management Studioの「クエリエディタ」より次のクエリを作成するとします。

SELECT ProductID, Name, ProductNumber FROM AdventureWorks.Production.Product


 まず「SELECT ProductID, Name, ProductNumber FROM AdventureWorks」と入力します。その後に「.」(ドット)を入力すると、入力可能な候補一覧が表示されます。

図2 インテリセンス機能 図2 インテリセンス機能

 Visual Studioでのアプリケーション開発と同様、表示された候補から選択するか、あるいはさらに入力を続けて候補を絞り込むこともできるため、単純なタイプミスや文法エラーがすぐに分かり、入力負荷の軽減が図れます。派手さはありませんが、実用的な改善です。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。