SQL Server 2008 から記述が短くなったもの の紹介
INSERT の VALUES が複数個かける様になった
insert into [人] ( [名前], [年齢] ) values ( '田中', 10 ), ( '佐藤', 20 ), ( select '鈴木', 30 )
実はこれ テーブル値コンストラクタ と呼びます。
テーブル値コンストラクタ (Transact-SQL)
INSERT 以外でもこんなことも出来る
select [名前], [年齢] from ( values ( '田中', 10 ), ( '佐藤', 20 ), ( '鈴木', 30 ) ) as [テーブルに見立てた]( [名前], [年齢] )
これが出来るということは、MERGE の ソースとしても使える
merge [人] as [target] ( values ( '田中', 15 ), ( '佐藤', 25 ), ( '鈴木', 35 ) ) as [src]( [名前], [年齢] ) on [target].[名前] = [src].[名前] when mateched then update set [年齢] = [src].[年齢] when not matched by target then insert ( [名前], [年齢] ) values ( [src].[名前], [src].[年齢] ) when not matched by source then delete;
DECLARE で変数宣言時に代入も出来るようになった
DECLARE @local_variable (Transact-SQL)
SQL Server 2005
declare @hoge as int set @hoge = 10 select @hoge // 10SQL Server 2008
declare @hoge as int = 10 select @hoge // 10複合演算子がサポートされた
複合演算子 (Transact-SQL)
+=, -=, *=, /=, %=, &=, ^=, |=SQL Server 2005
declare @hoge as int set @hoge = 10 set @hoge = @hoge + 10 select @hoge // 20SQL Server 2008
declare @hoge as int = 10 set @hoge += 10 select @hoge // 20