05 Aralık 2008

Sql Server 2008 Programlama Yenilikleri

Nedense database yönetim sistemlerinin yeni versiyonları çıktığında bizde çok heyecan yaratmıyor. Nedeni de çok az yeni özellikle gelmeleri. Bunun nedeni ilişkisel veritabanı kavramının yaygın olması sebebiyle yeni özellikten ziyade varolan servislerde performans artışına odaklanılması. Bu sebeple de her yeni versiyonda yüzde olarak performans kazançları belirtilir. Sql Server 2008'de de çok yeni özellik olmasa da ben özellikle veritabanı programlama ile ilgili hoşuma giden birkaç küçük yeniliği yazmak istiyorum.

* Değişken tanımlama
Benim çok canımı sıkan bir durumdu bu. Önce değişkeni tanımlayıp, sonra başlangıç değerini atamak zorunda olmak.

Declare @userid int
Set @userid=999

Geç de olsa bu özellik eklenmiş

Declare @userid=999

* Toplu insert
Daha önce bir kolaylık olarak yazdığım toplu insert konusu union cümlesine gerek kalmadan çözülmüş

insert into user(firstName,lastName,status)
select "Ali","Yazar",1 union all
select "Veli","Okur",0 union all
select "Veysel","Bakar",1

şeklindeki ifade

insert into user(firstName,lastName,status)
values
("Ali","Yazar",1),
("Veli","Okur",0),
("Veyseş","Bakar",1)

bu şekilde yazılabiliyor

* Merge

İki tablonuz olduğunu düşünün. Biri gerçek kullanıcılarınızın olduğu "user" tablosu, diğeri de herhangi bir kaynaktan topladığınız yeni kullanıcılarınız olan "newUSer" tablosu. Yapmak istediğiniz userid bazında bakıp, olmayanları eklemek, olanların ise bilgilerini güncellemek.

Aşağıdaki cümleyle bu işlem yapılabiliyor

Merge user as u
using newUser as n
on u.userid=n.userid
when not matched by target then
insert(firstName,lastName,status)
when matched then
update set
firstName=n.firstName,
lastName=n.lastName,
status=n.status

* Grouplama Setleri
Bu özellikle de birden fazla gruplama alanına göre sonuçlar aynı select cümlesi içinde toplanmış. Msdn sitesindeki örnek bu ihtiyaç için çok uygun olduğu için direk aynısını kullandım.

Select Region,Country,Store,SalePerson,Sum(TotalDue) as TotalSales
from SalesData
group by grouping sets
(
(Region,Country,Store,SalesPerson),
(Region,Country),
(Country),
(Region)
()
)

şeklinde yazılan sorgu sonucu aşağıda şekilde listelenir



Daha fazla bilgiye buradan ulaşabilirsiniz.

0 yorum: