SQL 3 : Fonksiyonlar

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ı da aynı mantıkla üretilen fonksiyonlardır. Gerekli parametreleri alıp, sizin istediğiniz sonuçları geri döndürürler. Bir programlama dilinde olduğu gibi, bize kendi fonksiyonumuzu yazmamıza olanak sağlamıyor olsalar bile, hazır olarak bulunan çok yararlı fonksiyonlar vardır. Bunlar SQL’e güç katan unsurlar olarak değerlendirirler.

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.

  • UCASE
  • LCASE
  • MID
  • LEN
  • ROUND
  • NOW
  • DAY
  • MONTH
  • YEAR

Bu yazımda tüm bu fonksiyonları kısaca açıklayıp basit örnekler yapmaya çalışacağım. Üzerinde işlem yapabileceğimiz bir tablo oluşturalım ;

Film_No Ad Tarih IMDB_Puan
1 The Shawshank Redemption 1994 9,2
2 The Dark Knight 2008 8,8
3 Fight Club 1999 8,8
4 Forrest Gump 1994 8,6
5 Leon 1994 8,6
6 V For Vandetta 2006 8,1
7 A Beautiful Mind 2006 8,0
8 Eternal Sunshine of the Spotless Mind 2004 8,4
9 Inception 2010 8,8
10 Good Will Hunting 1997 8,1

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 IMDB Puanlarının toplamına ulaşalım ;

SELECT SUM(IMDB_Puan) AS Toplam_Puan
FROM Filmler

Tüm filmlerin IMDB Puanlarının ortalamasına ulaşalım ;

SELECT AVG(IMDB_Puan) AS Ortalama_Puan
FROM Filmler

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 ;

SELECT COUNT(*) AS Toplam_Film_Sayısı
FROM Filmler

Herhangi bir film için tarih değerinin NULL olduğunu düşünün, aşağıdaki sorgu bize 9 değerini döndürecektir.

SELECT COUNT(Tarih) AS Toplam_Film_Sayısı
FROM Filmler

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 IMDB_Puan değerine ulaşalım ;

SELECT FIRST(Tarih) AS İlk_Tarih, LAST(IMDB_Puan) AS Son_IMDB_Puan
FROM Filmler

Bu sorgu bize 1994 ve 8,1 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.

IMDB Puanı en yüksek filmin puanına ulaşalım ;

SELECT MAX(IMDB_Puan) AS En_Yüksek_Puan
FROM Filmler

UCASE ve LCASE 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 harfe çevirelim ;

SELECT UCASE(Ad) AS Tamamı_Büyük
FROM Filmler

Tüm filmlerin adlarını küçük harfe çevirelim ;

SELECT LCASE(Ad) AS Tamamı_Küçük
FROM Filmler

UCASE’in ORACLE’daki karşılığı UPPER, LCASE’in karşılığı ise LOWER‘dır.

MID 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 ;

SELECT MID(Ad, 2, 5) AS Kırpılmış_Ad
FROM Filmler

ORACLE için MID fonksiyonun ismi, SUBSTR‘dır.

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 ;

SELECT LEN(Ad) AS Uzunluk
FROM Filmler

ORCALE için LEN fonksiyonunun ismi, LENGTH‘dir.

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.

Filmlerin IMDB Puanlarını yuvarlayalım ;

SELECT ROUND(IMDB_Puan) AS Yuvarlanmış_Puan
FROM Filmler

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

Sonuç – Özet

SQL Fonksiyonlarını iki gruba ayırarak çalışmaktayız.

Bazıları bir grup veriyi çeşitli işlemlere sokarak, tek bir veri döndürmektedir. COUNT, AVG, SUM gibi fonksiyonlar buna örnektir.

Bazıları ise her satır için yapması gereken işlemi yapar. Bu tip fonksiyonlara ise LCASE, LEN, NOW gibi fonksiyonlarını örnek verebiliriz.

Benzer Yazılar

Yorumlar

  • bilgin aslan , 10 Mayıs 2013 - 15:19:03

    hocam benim bir sorunum var
    elimde şöyle bir tablo var

    1 2 3 4 5 6 7 8 9 10
    x x x x x x x

    hocam şimdi xlerin sayısı normalde 7
    ama benim istediğim x leri tek saymak koşuluyla 4 tane oluyor
    ben bunu tablomda nasıl saydırabilirim şimdiden teşekkürler

    Cevapla

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Arama
RSS
Beni yukari isinla