Makale Özeti

SQL Server 2005 ile gelen T-SQL yeniliklerinden bahsedilmektedir. Artık daha az kod yazarak daha hızlı sorgular oluşturabileceğiz.

Makale

 

SQL Server 2005 T-SQL

TSQL, veri sorgulama ve veritabanını yönetmemizi kolaylaştıran ifadeleri içeren bir komut kümesidir. DML, DDL ve DCL adında 3 temel unsur içerir. Makale içerisinde de DML sorguları üzerinde yoğunlaşacağım.

DML Data Manipulation Language yani veri manipulasyon işlemleri, bizim sıklıkla kullandığımız SELECT, INSERT, UPDATE ve DELETE ifadelerini içermektedir. SQL Server 2005 ile gelen yenilikleri bu sorgular için anlatıyor olacağım.

T-SQL ifadelerine eklenen yeni deyimlerle birlike bu bahsettiğim DML deyimlerinin kapsamı biraz daha genişlemiş durumdadır. Bunları kategoriler halinde incelersek

- Derecelendirme İfadeleri

- Geliştirilmiş TOP Operatörü

- CTE (Common Table Expressions)


Derecelendirme İfadeleri

Derecelendirme ifadelerinin temel amaçlarını sıralamak gerekirse veriyi daha verimli analiz edebilme ve daha az kod yazarak daha hızlı sorgular çalıştırabilme olarak sıralayabiliriz. Bu derecelendirme fonksiyonarından bazılarını sıralamak gerekirse;

-ROW_NUMBER

-RANK

-DENSE_RANK

-NTILE


ROW_NUMBER

Bu ifade, sıralama yapısı oluşturarak, bu sıralamaya göre her kaydın değerini sorgu sonucuna ekler.

Örnek:

SELECT ROW_NUMBER() OVER (ORDER BY ad)AS satir, ad, soyad

FROM ornek

ORDER BY ad

Bu sorgu ile,döndürülen her bir kayıt için ayrı bir kolon içerisinde satır numarasını görüntüledik.

ROW_NUMBER ifadesi satır numarası göstereceğimiz gibi, veri üzerinde sayfalama işlemleri için de rahatlıkla kullanabiliriz.

Örnek:

SELECT *

FROM (SELECT ROW_NUMBER() OVER (ORDER BY ad)AS satir,ad,soyad FROM ornek) X

WHERE satir BETWEEN 2 AND 4

Burada satır numarası 2 ile 4 arasında bulunan tüm kayıtların listesini getirdik. Buradaki 2 ve 4 değerlerini dinamikleştirerek, kayıtlarımızı rahatlıkla sayfalayabiliriz.


Bölüştürülmüş Sıra Numaraları Oluşturma

Sıra numaraları, bölüştürülmüş biçimde de rahatlıkla sorgu ifadesinde gösterilebilir. Bu işlem için PARTITION BY deyimini kullanacağız

SELECT ROW_NUMBER() OVER (PARTITION BY soyad ORDER BY ad)as satirno,ad,soyad

FROM ornek

ORDER BY soyad,ad


 

RANK ve DENSE_RANK

Bu iki ifade, ROW_NUMBER ile temelde benzer işleve sahiptir. Ancak sıralama yapılan kolonun aynı değerleri için sıra numarasının da aynı olmasını sağlar. İki ifade arasındaki tek fark, RANK ifadesinde kayıt sırasına göre, DENSE_RANK ifadesinde ise grup sırasına göre değer verilir.

Örnek:

SELECT ad, soyad,

RANK() OVER(ORDER BY soyad DESC) AS derece,

DENSE_RANK() OVER(ORDER BY soyad DESC) AS grupderece

FROM ornek

ORDER BY soyad DESC


 

NTILE

Sorgu sonucunda dönen kayıt kümesini, herhangi bir kolonun değerine bakarak bölüştürme işlemi yapabilirsiniz. Bu işlem için NTILE ifadesini kullanacağız. Yapacağımız işlem, öğrenci notlarını içeren kolonun değerine bakarak, öğrencilerin seviyesini (1,2,3,4,5) şeklinde rakamsal olarak başka bir kolon içerisinde göstermek olacak.

SELECT ad, soyad, sonuc,

NTILE(5) OVER (ORDER BY sonuc)as seviye

FROM ornek

ORDER BY sonuc


 

Son değineceğim konu da TOP operatöründeki yenilikler olacak

TOP Operatöründeki Yenilikler

Daha önceki kullanımıyla tablodan ilk n kayıdın getirilmesini ya da kayıtların belli bir yüzdelik kısmının getirilmesini sağlayabiliyorduk. Bu operatörün varolan özellikleri korunmakla birlikte üzerine yenilikler ekleyip kapsamı genişletmiş durumdadır.

TOP operatörü için istediğimiz kayıt sayısını ya da listelenecek kayıt yüzdesi miktarını artık parametrik değerler ile de kullanabileceğiz. Bununla birlikte dilediğimiz gibi prosedürümüzde parametre olarak bir değer verip, prosedürden dönecek satır sayısını, kayıt yüzdesini dinamik olarak değiştirmemizi sağlayabilecek.

Örnek:

DECLARE @n int

SET @n = 3

SELECT TOP (@n) ad,soyad FROM ornek

ORDER BY ad

Bu sorgu ifadesiyle ilk 3 kayıdın sorgudan sonuç olarak getirilmesini sağladık.

Bu operatörle gelen yeniliklerden diğeri de operatörün INSERT, UPDATE DELETE işlemleri için de kullanılabilmesidir.

Özet

Bu makalede SQL Server 2005 ile gelen T-SQL yeniliklerini inceledik. SQL Server 2005 T-SQL yenilikleri ile artık daha az kod yazarak daha hızlı sorgular oluşturabileceğiz.

Umarım faydalı olmuştur. Her türlü görüş ve önerileriniz için bana ulaşabilirsiniz

Volkan UÇARKAYA

vucarkaya@hotmail.com