Merhaba Arkadaşlar, Bir programlama dilinde fonksiyon denildiğinde akla ilk olarak belli işleri yapmak üzere tasarlanmış kod blokları gelir. Fonksiyonlarla çalışmak, tekrarlanan işleri yapmak üzere, gereksiz kod tekrarını önleyen çok sağlıklı bir yöntemdir. SQL Fonksiyonları 2 farklı mantık üzerine inşa edilmişlerdir. Bunlardan biraz, yazının indexini oluşturması açısından bahsetmek gerekirse ; Çoklu Satır Fonksiyonları (Aggregate Functions) : Bir sütundaki tüm satırlara uygulanırlar, bir hesap yapıp geriye tek bir değer döndürürler.
- AVG
- COUNT
- FIRST
- LAST
- MAX
- MIN
- SUM
Tek Satır Fonksiyonları (Scalar Functions) : Tablonun bir satırını temel alarak işlem yapan fonksiyonlardır. Ama her satır için ayrı ayrı işlem yapmaktadır.
- UPPER
- LOWER
- MID
- LEN
- ROUND
- NOW
- DAY
- MONTH
- YEAR
Bu yazımda bazı fonksiyonları kısaca açıklayıp basit örnekler yapmaya çalışacağım. Üzerinde işlem yapabileceğimiz bir database ve tablo oluşturalım hem kısaca bunları da hatırlamış oluruz.
Şimdi ”insert” komutu ile içerisini bir kaç veri ile dolduralım. Film tarih ve puanlamaları tamam rastgele vereceğim. insert into Yerli(Ad,Tarih,Puan) values (‘Bekçiler Kralı’,1978,9) ile 16 adet film ekledim.
1 |
Neşeli günler |
1978 |
7 |
2 |
Yol |
1980 |
8 |
3 |
Masumiyet |
1997 |
5 |
4 |
Züğürt Ağa |
1985 |
9 |
5 |
Babam ve Oğlum |
2015 |
7 |
6 |
Hababam sınıfı |
1975 |
9 |
7 |
Selvi Boylum |
1978 |
9 |
8 |
Eşkiya |
1996 |
8 |
9 |
Recep İvedik |
2005 |
6 |
10 |
Arog |
2009 |
5 |
11 |
Gora |
2009 |
5 |
12 |
Sevdalı Yürekler |
2009 |
4 |
13 |
Kapıcılar Kralı |
1974 |
10 |
14 |
Çöpçüler Kralı |
1974 |
10 |
15 |
Gol Kralı |
1978 |
10 |
16 |
Bekçiler Kralı |
1978 |
9 |
|
|
|
|
AVG ve SUM Fonksiyonları
SUM Fonksiyonu ile seçilen bir satırdaki tüm kayıtların toplamı hesaplanıp geri döndürülür, AVG Fonksiyonu ile ise tüm kayıtların ortalaması döndürülür. Tüm filmlerin Puanlarının toplamına ve ortalamasına ulaşalım ;
COUNT Fonksiyonu
COUNT Fonksiyonu ile oluşturduğunuz sorgunun ürettiği satır sayısı bulunur ve geriye döndürülür. Eğer COUNT fonksiyonunu sadece bir sütun için uygularsanız NULL olmayan, yani değeri boş olmayan kayıtların sayısı bulunur. Tüm filmlerin sayısına COUNT fonksiyonunu kullanarak ulaşabiliriz ;
Herhangi bir film için tarih değerinin NULL olduğunu düşünün, aşağıdaki sorgu bize NULL olan değerini döndürmeyecektir. Yani 16 yerine 15 değer döndürecektir. select count(Tarih) as Toplamsayı from Yerli
FIRST ve LAST Fonksiyonları
Seçtiğiniz sütun için ilk satıra FIRST Fonksiyonu ile, son satıra ise LAST Fonksiyonu ile ulaşabilirsiniz. İlk tarih değerine ve son Puan değerine ulaşalım ; select FIRST(Tarih) as İlk_tarih, LAST(Puan) as Son_Puan from Yerli Bu sorgu bize 1978 ve 9 değerlerini getirecektir.
MAX ve MIN Fonksiyonları
Seçilen sütundaki en büyük değere MAX Fonksiyonu ile, en küçük değere MIN Fonksiyonu ile ulaşabilirsiniz. IPuanı en yüksek filmin puanına ulaşalım ;
UPPER ve LOWER Fonksiyonları
Seçilen sütundaki tüm satırlar için büyük harfe veya küçük harfe çevirme işlemini yaparlar. Tüm filmlerin adlarını büyük ve küçük harfe çevirelim ;
SUBSTRING Fonksiyonu
Seçilen kayıtları istenilen karakterinden başlayarak, istenilen uzunluk kadar gösterir. Pek açıklayıcı olmamış olabilir ama örneğe bakınız. Tüm filmlerin ikinci karakterlerinden itibaren, 5 karakter gösterelim ;
LEN Fonksiyonu
Seçilen sütundaki her satır için, kaydın harf sayısını, yani uzunluğunu döndürür. Filmlerin kaç harften oluştuklarına bakalım ; Not: Boş karakterleride sayar.
ROUND Fonksiyonu
Seçilen ondalıklı kayıtlar için yuvarlama işlemini gerçekleştirir. Virgülden kaç basamak sonra yuvarlayacağınızı da fonksiyona parametre olarak verebiliyorsunuz. Fakat vermek zorunda değilsiniz. Örnek sorgu şu şekildedir, bizim tablomuzda onlıklı sayı olmadığı için ekran görüntüsü ile gösteremeyeceğin. select round(Puan) as Yuvarlanmışpuan from Yerli
Tarih Fonksiyonları (Now, Day, Month, Year)
NOW() : Sistemin tarihini geri döndürür. DAY() : Aldığı tarih değerinin gününü döndürür. MONTH() : Aldığı tarih değerinin ayını döndürür. YEAR() : Aldığı tarih değerinin yılını döndürür. Sistemin tarihini döndürelim ;
SELECT NOW() AS Sistem_Tarihi
FROM Filmler
Sistem tarihinin gününü döndürelim ;
SELECT DAY(NOW) AS Gün
FROM Filmler
Sistem tarihinin ayını döndürelim ;
SELECT MONTH(NOW) AS Ay
FROM Filmler
Sistem tarihinin yılını döndürelim ;
SELECT YEAR(NOW) AS Yıl
FROM Filmler