Çoğu programlama dilinde olduğu gibi SQL'in de veri işlemeye yönelik işlevleri vardır. SQL ifadelerinden farklı olarak, işlevlerin tüm DBMS türleri için standartlaştırılmadığını, yani veriler üzerinde aynı işlemleri gerçekleştirmek için farklı DBMS'lerin kendi işlev adlarına sahip olduğunu belirtmekte fayda var. Bu, bir DBMS'de yazılan sorgu kodunun diğerinde çalışmayabileceği ve bunun gelecekte dikkate alınması gerektiği anlamına gelir. Bu çoğunlukla metin değerlerini işlemek, veri türlerini dönüştürmek ve tarihleri değiştirmek için kullanılan işlevler için geçerlidir.
Çoğu DBMS standart bir dizi işlev türünü destekler:
MS Access'deki SQL uygulaması, metin işleme için aşağıdaki işlevlere sahiptir:
Islev | Tanım |
---|---|
Left() | Metindeki karakterleri soldan seçer |
Right() | Sağdaki metindeki karakterleri seçer |
Mid() | Metnin ortasındaki karakterleri seçer |
UCase() | Karakterleri büyük harfe dönüştürür |
LCase() | Karakterleri küçük harfe dönüştürür |
LTrim() | Metnin solundaki tüm boş karakterleri kaldırır |
RTrim() | Metnin sağındaki tüm boş karakterleri kaldırır |
Trim() | Metnin her iki tarafındaki tüm boş karakterleri kaldırır |
UCase() fonksiyonunu kullanarak ürün adlarını büyük harfe çevirelim:
Run SQLSELECT Product, UCase(Product) AS Product_UCase
FROM Sumproduct
LEFT() işlevini kullanarak metindeki ilk üç karakteri vurgulayalım:
Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT
FROM Sumproduct
Sayı işleme fonksiyonları, sayısal veriler üzerinde matematiksel işlemler gerçekleştirmek için tasarlanmıştır. Bu işlevler cebirsel ve geometrik hesaplamalar için tasarlandığından tarih ve saat işleme işlevlerine göre çok daha az kullanılırlar. Ancak sayısal işlevler, SQL'in tüm sürümlerinde en standartlaştırılmış işlevlerdir. Sayısal fonksiyonların listesine bakalım:
Islev | Tanım |
---|---|
SQR() | Belirtilen sayının karekökünü döndürür |
ABS() | Bir sayının mutlak değerini döndürür |
EXP() | Belirtilen sayının üssünü döndürür |
SIN() | Belirtilen açının sinüsünü döndürür |
COS() | Belirtilen açının kosinüsünü döndürür |
TAN() | Belirtilen açının tanjantını döndürür |
Ana özelliklerden yalnızca birkaçını listeledik, ancak ayrıntılı açıklamalarla birlikte desteklenen özelliklerin tam listesi için her zaman DBMS belgelerinize başvurabilirsiniz.
Örneğin Amount sütunundaki sayıların karekökünü elde etmek için SQR() fonksiyonunu kullanarak bir sorgu yazalım:
Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR
FROM Sumproduct
Tarih ve saat işleme fonksiyonları en önemli ve en sık kullanılan SQL fonksiyonları arasındadır. Veritabanlarında tarih ve saat değerleri özel bir formatta saklandığından ek bir işleme gerek kalmadan doğrudan kullanılamaz. Her DBMS'nin tarihleri işlemek için kendi işlevleri vardır ve bu da ne yazık ki bunların diğer platformlara ve SQL uygulamalarına aktarılmasına izin vermez.
MS Access'de tarih ve saati işlemeye yönelik bazı işlevlerin listesi:
Islev | Tanım |
---|---|
DatePart() | Tarihin bir kısmını döndürür: yıl, çeyrek, ay, hafta, gün, saat, dakika, saniye |
Year(), Month() | Sırasıyla yılı ve ayı döndürür |
Hour(), Minute(), Second() | Belirtilen tarihin saatini, dakikasını ve saniyesini döndürür |
WeekdayName() | Haftanın gününün adını döndürür |
DatePart() fonksiyonunun nasıl çalıştığına dair bir örneğe bakalım:
SELECT Date1, DatePart("m", Date1) AS Month1
FROM Sumproduct
DatePart() fonksiyonu, tarihin gerekli kısmını görüntülememize izin veren ek bir parametreye sahiptir. Örnekte ay sayısını gösteren "m" parametresinin değerini kullandık (aynı şekilde yılı - "yyyy", çeyreği - "q", günü - "d", hafta - "w", saat - "h" , dakika - "n", saniye - "s" vb.).
İstatistiksel işlevler, verileri örneklemeden hazır hale getirmemize yardımcı olur. Bu işlevlere sahip SQL sorguları genellikle çeşitli raporları analiz etmek ve oluşturmak için kullanılır. Bu tür seçimlere örnek olarak; bir tablodaki satır sayısının belirlenmesi, belirli bir alan için değerlerin toplamının elde edilmesi, tablonun belirtilen sütununda en büyük/en küçük veya ortalama değerin aranması verilebilir. Ayrıca istatistiksel fonksiyonların, yazılı olarak herhangi bir özel değişiklik yapılmaksızın tüm DBMS tarafından desteklendiğini de not ediyoruz.
DBMS Access'deki istatistiksel işlevlerin listesi:
Islev | Tanım |
---|---|
COUNT() | Bir tablo veya sütundaki satır sayısını döndürür |
SUM() | Bir sütundaki değerlerin toplamını döndürür |
MIN() | Bir sütundaki en küçük değeri döndürür |
MAX() | Bir sütundaki en büyük değeri döndürür |
AVG() | Bir sütundaki ortalama değeri döndürür |
Tablodaki tüm satırların sayısını döndürür:
Run SQLSELECT COUNT(*) AS Count1
FROM Sumproduct
Ürün alanındaki boş olmayan tüm satırların sayısını döndürür:
SELECT COUNT(Product) AS Count2
FROM Sumproduct
İki sorgu arasındaki performans farkını göstermek için Ürün sütunundaki bir değeri kasıtlı olarak kaldırdık.
Run SQLSELECT SUM(Quantity) AS Sum1
FROM Sumproduct
WHERE Month = 'April'
Bu talebimizle Nisan ayında satılan toplam mal tutarını görüntülemiş olduk.
Run SQLSELECT SUM(Quantity*Amount) AS Sum2
FROM Sumproduct
Gördüğünüz gibi istatistiksel fonksiyonlarda standart matematiksel operatörleri kullanarak birden fazla sütun üzerinde hesaplamalar da yapabiliyoruz.
Run SQLSELECT MIN(Amount) AS Min1
FROM Sumproduct
Run SQLSELECT MAX(Amount) AS Max1
FROM Sumproduct
Run SQLSELECT AVG(Amount) AS Avg1
FROM Sumproduct