T-SQL' de Temel İfadeler

Eyl 08, 2013
İfade Seviyesi:

BEGIN...END blokları: BEGIN ve END arasında yazılan SQL ifadelerinin bir bütün olarak algılanmasını sağlar.

IF...ELSE blokları: Eğer o anki durum için ilk alternatif doğruysa SQL Server ilk ifadeyi gerçekler, ikinci ifade doğruysa ikinci ifade greçeklenir.

Örnek: 

USE veritabanı
IF EXISTS (SELECT * FROM KİŞİ WHERE NAME='isim1' AND SURNAME='soyad1')
   BEGIN
       PRINT '***tabloda mevcut.'
       SELECT * FROM KİŞİ WHERE NAME='isim1' AND SURNAME='soyad1'
   END
ELSE
   BEGIN
       PRINT '***tabloda mevcut değil, şimdi oluşturuluyor...'
       INSERT INTO KİŞİ VALUES ('isim1','soyad1',5)
       PRINT '***tabloya eklendi.'
   END

tabloda "isim1" ve "soyad1" kullanıcısının kaydı olduğu için ilk ifade doğrudur, çıktısı da şu şekilde olur:

***tabloda mevcut. 


(1 row(s) affected)

Örnek:

USE veritabanı
IF EXISTS (SELECT * FROM KİŞİ WHERE NAME='isim2' AND SURNAME='soyad2')
   BEGIN
       PRINT '***tabloda mevcut.'
       SELECT * FROM KİŞİ WHERE NAME='isim2' AND SURNAME='soyad2')
   END
ELSE
   BEGIN
       PRINT '***tabloda mevcut değil, şimdi oluşturuluyor...'
       INSERT INTO KİŞİ VALUES (11,'isim2','soyad2',117)
       SELECT * FROM KİŞİ WHERE NAME='isim2' AND SURNAME='soyad2'
       PRINT '***tabloya eklendi.'
   END

tabloda "isim2" ve "soyad2" kullanıcısına ait kayıt olmadığı için 2. ifade gerçeklendi, çıktısı da şu şekilde olur:

***tabloda mevcut değil, şimdi oluşturuluyor...

(1 row(s) affected)

(1 row(s) affected)

***tabloya eklendi.

"While" Yapısı:  

"While" ifadesindeki şartı doğrulayacak şekilde bir çevrim oluşturulur; "Break" ve "Continue" ifadeleri ile çevrim kontrol edilir.

Örnek: FİYAT isimli bir tablo olsun, Özgür'ün aldığı bir malın satış fiyatının alış fiyatından daha  yüksek olması için her seferinde alış fiyatının 2 ile çarpılmasını sağlayalım:

USE veritabanı
SELECT * FROM FİYAT WHERE ID='kullanıcı'
WHILE((SELECT SATIŞ FROM FİYAT WHERE ID='kullanıcı')<(SELECT ALIŞ FROM FİYAT WHERE ID='kullanıcı'))
BEGIN
    UPDATE FİYAT
    SET SATIŞ=SATIŞ*2 WHERE ID='kullanıcı'
END
SELECT * FROM FİYAT WHERE ID='kullanıcı'
GO

Çıktı da şu şekilde olacaktır:



Satır Seviyesi:

"Case" ifadesi: Her durum için belirlenmiş alternatiflere tek tek bakar ve hangisine uyuyorsa onu gerçekler.

Örnek: KARZARAR adlı bir tablo olsun. Bu tabloda alış ve satış fiyatlarından yola çıkarak kar ya da zarar ile ilgili bir alan oluşturup sonuç görülmek istenirse CASE ifadesini kullanılır.

 

SELECT MALNO,'DURUM'=
   CASE
       WHEN(SATIS>ALIS) THEN 'KAR VAR' 
       WHEN(SATIS<ALIS) THEN 'ZARAR VAR'
       ELSE 'NE KAR NE ZARAR VAR'
   END
FROM KARZARAR


çıktısı da şu şekilde olacaktır:



(4 row(s) affected)

Yorumlar:

SQL dili kullanılarak oluşturulan bloklarda bir satırda yorum yapmak için iki ifade kullanılabilir:

--yorum
--yorum--
Bir blok halinde yazılmak istenen yorumlar ya da açıklayıcı bilgiler olursa ;
/*yorum*/     
şeklinde  kullanılabilir.

Örnek:

SELECT MALNO,'DURUM'=
   CASE
       WHEN(SATIS>ALIS) THEN 'KAR VAR' --kar varsa hesaplar--
       WHEN(SATIS<ALIS) THEN 'ZARAR VAR' --zarar varsa hesaplar--
       ELSE 'NE KAR NE ZARAR VAR'
   END

/*SQL, CASE ifade yöntemi ile 
DURUM adı altında bir alan oluşturulup
görülmek istenilen bilgileri vermiş oldu */
FROM KARZARAR