Makale Özeti

Önceki yazılarımızda T-SQL konusunda kısa örneklerle değinmiştik. Lakin MS SQL Server 2005'in gündemimizde ciddi yer edinmesi ve daha yüksek performanslı SQL sorguları yazabilmemizin önemini kanıtlamasının ardından bu konuya tekrar değinmek ve çok daha fazla örnek ile birkaç yazıdan oluşan bir dizide bu konuyu bir kez daha açıklamakta yarar görüyorum.

Makale

Önceki yazılarımızda T-SQL konusunda kısa örneklerle değinmiştik. Lakin MS SQL Server 2005'in gündemimizde ciddi yer edinmesi ve daha yüksek performanslı SQL sorguları yazabilmemizin önemini kanıtlamasının ardından bu konuya tekrar değinmek ve çok daha fazla örnek ile birkaç yazıdan oluşan bir dizide bu konuyu bir kez daha açıklamakta yarar görüyorum.

Bu ve sonrasındaki yazılarımız T-SQL komutları, SQL Server'ın fonksiyonları ve bizim yaratacağımız fonksiyonlar üzerine olacak.

Kısaca T-SQL'i tanımlamak gerekirse; MS SQL Server 'ı daha etkin kullanabilmeniz, daha yüksek performansta sorgular çalıştırmanızı ve program içersinde yüksek kaynak kullanımı-düşük performans ikilisi ile yapmak zorunda olduğunuz işlevleri MS SQL Server üzerinde gerçekleştirmenizi olanaklı kılan teknolojidir.

MS SQL Server'ın eski sürümlerinden beri kullandığımız T-SQL MS SQL Server 2005 ile hala hayatımızda. Her ne kadar artık .net ile entegre bir SQL Server'dan bahsetsekte T-SQL üzerinde yapılan değişiklikler ile hala gündemde.

Bu yazıda klasik anlamda nasıl data getirilir (select), nasıl güncellenir (update), nasıl silinir(delete) komutları gibi standart SQL komutları ele alınmayacak, doğrudan özelleştirilmiş fonksiyonlar üzerinde durulacaktır.

MS SQL Server'ı gözden geçirdiğimizde bir çok fonksiyon tipi olduğunu görürürüz. String fonksiyonları, matematiksel fonksiyonlar, aggregate fonksiyonlar,vs. Şimdi bunların en çok kullanılanlarını birer birer ele almaya çalışalım.


Not : Hemen hemen tüm örneklerde "Select" ifadesi kullanılmıştır. Bu ifade fonksiyon çıktısını ekranda görüntülemek için konulmuştur. Klasik kullanımlarda "Select" ifadesine yer vermeniz gerekmiyor.


- ASCII : Tek bir parametre alır. Parametre olarak göndereceğiniz harf bilgisinin ascii karşılığını verir.

SELECT ASCII('A')


- CHAR : Tek bir parametre alır. Parametre olarak gönderdiğiniz ascii kodunun karakter karşılığını verir.

SELECT CHAR(65)


 


- AVG : Tek bir parametre alır. Parametre olarak verilecek kolon bilgisinin ortalama değerini verir. Aslında burada yaptığı işlemin açılımı şudur ki öncelikle belirtilen kolonun tooplam değerini ve toplam kayıt sayısını bulur. Daha sonra bölme işlemi gerçekleştirerek aritmetik ortalamayı verir.

Select AVG(StandardCost) from Production.Product


 


- SUM : Tek bir parametre alır. Parametre olarak göndereceğiniz kolonun tüm kayıtlarını toplar.

Select SUM(StandardCost) from Production.Product


 


- MAX/MIN : Tek bir parametre alır. Parametre olarak verilecek kolonun sayısal tipteyse en büyük - en küçük değerini, string tipteyse A-Z bakımından değerini, tarih tipindeyse yakın-uzak tarih bakımından değerini verir.

Select MAX(StandardCost) from Production.Product



Select MIN(StandardCost) from Production.Product


 


- GETDATE() : O anın tarih ve saat bilgisini verir.

Select GetDate()


 


- DATEADD : Üç parametre alır. Birinci parametre datepart yani eklemek istediğiniz zaman dilimidir. İkinci parametre ne kadar zaman ekleneceği ve üçüncü parametre de eklenecek zaman için referans zamandır. Aşağıdaki örnek "12.12.2005" tarihine "127" gün eklemektedir.

Select DateAdd(dd, 117, '12.12.2005')

Datepart konusunda aşağıdaki referanslara uyulmalıdır:

-- Gün için = d , dd
-- Ay için = m , mm
-- Yıl için = yy , yyyy
-- Hafta için = wk , ww
-- Saat için = hh
-- Dakika için = mi , n
-- Saniye için = ss , s
-- Milisaniye için = ms


 


- DATEDIFF : Üç parametre alır. Birinci parametre datepart yani iki tarih arasındaki hangi zaman diliminden farkı istediğinizi belirtmeniz gereken kısım, ikinci parametre birinci tarihi, üçüncü parametre ise ikinci tarihi belirtmeniz içindir.

Select DateDiff(dd, '08.04.2005', '12.12.2005')

Datepart konusunda aşağıdaki referanslara uyulmalıdır:

-- Gün için = d , dd
-- Ay için = m , mm
-- Yıl için = yy , yyyy
-- Hafta için = wk , ww
-- Saat için = hh
-- Dakika için = mi , n
-- Saniye için = ss , s
-- Milisaniye için = ms


 


- DATENAME : İki parametre alır. Birinci parametre datepart ikinci parametre ismini getireceğiniz tarih bilgisidir.

Select DateName(m,'2005-12-18')

Datepart konusunda aşağıdaki referanslara uyulmalıdır:

-- Gün için = d , dd
-- Ay için = m , mm
-- Yıl için = yy , yyyy
-- Hafta için = wk , ww
-- Saat için = hh
-- Dakika için = mi , n
-- Saniye için = ss , s
-- Milisaniye için = ms



Select (DateName(dd,'2005-12-18') + ' ' + DateName(m,'2005-12-18') + ' ' + DateName(YY,'2005-12-18'))


 


- SUBSTRING : 3 parametre alır. Birinci parametre metnin kendisi, ikinci parametre kaçıncı karakterden başlanacağı ve üçüncü parametre kaç karakter alınacağı şeklindedir.

Declare @Degisken varchar(10)
Set @Degisken = 'EVREN AYAN'
Select SUBSTRING(@Degisken,1,3)



 


- UPPER/LOWER : Bir parametre alır. Parametre olarak gönderilen textin karakterlerini büyük-küçük harfe çevirir.

Select UPPER('evren ayan')



Select Lower('EVREN AYAN')


 


- SQUARE : Bir parametre alır. Parametre olarak gönderilen sayı tipindeki değerin matematiksel karesini geri döndürür.

Select SQUARE(20)


 


- DAY/MONTH/YEAR : Bir parametre alır. Parametre olarak gönderilen tarih tipindeki alanın gün-ay-yıl bilgisini geri döndürür.

Select DAY('2005-04-08')



Select MONTH('2005-04-08')



Select YEAR('2005-04-08')





- COS/SIN/TAN/COT : Bir parametre alır. Verilecek açı değerinin(sayısal) sinüs, cosinüs, tanjant ve kotanjant değerini geri döndürür.

Select COS(30)



Select SIN(30)

Select TAN(30)



Select COT(30)



- LEFT/RIGHT : İki parametre alır. Parametre olarak gönderilen string ifadenin soldan yada sağdan ikinci parametre ile belirtilecek sayı kadar karakterini geri döndürür.

Select Left('Evren AYAN',5)



Select Right('Evren AYAN',4)





- LEN : Bir parametre alır. Parametre olarak gönderilen dtring tipteki verinin uzunluğunu geri döndürür.

Select Len('Evren Ayan')




- REPLACE : Üç parametre alır. Birinci parametre orjinal stringi, ikinci parametre değiştirilecek karakter bloğunu ve üçüncü parametre neyle değiştirileceği bilgisini içerir.

Select Replace('Evren Ayan', 'Evren', 'Ahmet')



Bir sonraki yazımızda sistem fonksiyonları üzerinde duracağız.


Evren AYAN
Microsoft MVP
http://www.evrenayan.net