veritabanı logo

Veritabanı Özel Fonksiyonlar

Merhaba arkadaşlar bu yazımda Veritabanında oldukça sık kullanılan bazı özel fonksiyonlardan bahsedeceğim.

Fonksiyon olarak belki de hepsini yazamayabilirim. Ben sadece bunlar içinde en çok kullanılan fonksiyonları anlatacağım. Daha önce bende hazır yüklü bir veritabanı ile devam edeceğim.

Karakter Kümesi Fonksiyonları

char, varchar ve text gibi veri tipine sahip alanlarda kullanılan fonksiyonlardır. Gelin bunları inceleyelim.

İki Karakter Kümesini Birleştirmek

Bazen bir veriye bir şeyler eklemek, iki sütunu tek bir yerde görmek isteyebilirsiniz. Bunun için birleştirme işlemi yapılmaktadır.

Fonksiyon Adı = CONCAT / +

Kullanımı = CONCAT(birinci alan, ikinci alan, ….. )

Örnek Kullanım

Öğrenci isim ve soyisimlerini tek bir sütunda görmek istersem bunu çok kolay bir şekilde kullabilirim.

SELECT CONCAT(adi,’ ‘,soyadi) as AdıSoyadı from ogrenci

veri tabanı metin birleştirme -concat- kullanımı ekran çıktısı

Gördüğünüz gibi isim ve soyisim alanlarını tek bir sütun üzerinde gösterdik. ‘+’ operatörü ile kullanımı ise şu şekildedir.

SELECT adi+ ‘ ‘ +soyadi as ADISOYADI from ogrenci

Veri İçinden Bir Bölümü Almak

Bazen bir metin veya kelime içinden bir kısmı çekip almanız gerekebilir.

Fonksiyon Adı = SUBSTRING

Kullanımı = SUBSTRING(veri kümesi, başlangıç, karakter sayısı)

Örnek Kullanım

Öğrenci isimlerinin 2.harfinden başlayarak 5 karakter alalım.

SELECT SUBSTRING(adi, 2, 5) as isim from ogrenci

Çıktımız:

Veritabanı substring kullanımı örnek çıktısı

Yukarıda görmüş olduğunuz gibi ilk harfler atılmış ve devamında ise 5 karakter alınarak tüm tablo üzerinde uygulama yaptım.

 

Veriden İstenilen Kısmı Almak

Bir metin içerisinden soldan başlayarak belli bir karakter almanız gerekebilir. Ya da sağdan başlayarak belli bir karakterin alınması istenebilir.

Fonksiyon Adı = LEFT / RIGHT

Kullanımı = LEFT(sütun_adi, alınacak karakter sayısı)

RIGHT (sütun_adi, alınacak karakter sayısı)

Örnek Kullanım

Öğrenci adının ilk harfi ile soyisminden oluşan kullanıcı adı oluşturma işlemi yapalım.

SELECT LEFT(adi,1)+’.’+soyadi AS kullaniciAdi FROM ogrenci

LEFT kullanım örneği ekran çıktısı

Bunun sağ hali de sadece LEFT yerine RIGHT yazmak olacaktır. Benzer kodu aşağıdaki gibidir.

Soyadının sağdan iki, adın da soldan üç harfini alıp kullanıcıAdı sütunu olarak göstermek için kodumuz:

SELECT RIGHT(soyadi,2)+’-‘+LEFT(adi,3) AS kullaniciAdi FROM ogrenci

Bunu da siz deneyerek yapabilirsiniz.

Büyük Küçük Harf Dönüşümü Yapmak

SQL büyük küçük harf duyarlı olduğundan bazen bir sorgulama yapmadan önce harfleri büyütmek/ küçültmek gerekebilir.

Fonksiyon Adı = LOWER / UPPER

Kullanımı = UPPER(sütun adı)

LOWER(sütun adı)

Örnek Kullanım

Öğrenci adının hepsini küçültüp, soyadlarının da tamamını büyültmek için aşağıdaki kod kullanılabilir. (Mantıklı bir kullanım değildir. Örnek olması açısından yapılmaktadır.)

SELECT LOWER(adi), UPPER(soyadi) FROM ogrenci

LOWER UPPER örnek kullanım ekran çıktısı

Örnek çıktısı yukarıdaki gibidir. Genelde sorgu yaparken isim soyisim gibi aramalarda tamamı büyük, kullanıcı adı gibi aramalarda hepsi küçük olması tercih edilmektedir.

Boşlukları Kaldırmak

Bazen sorgu yaparken boşlukları kaldırmak gerekebilir. Kullanıcı kayıt olurken fazla fazla boşluk da koymuş da olabilir. Bu boşlukları kaldırmak gerekebilir.

Fonksiyon Adı = TRIM / RTRIM / LTRIM

Kullanımı = TRIM(boşluk silinecek değer/sütun)

RTRIM(boşluk silinecek değer/ sütun)

LTRIM(boşluk silinecek değer/ sütun)

Örnek Kullanım

Sadece TRIM örneğini göstereceğim. Diğer ikisinin de kullanımı aynı. Önünde boşluk bulunan bir verinin önündeki boşlukları kaldıracağız. Sonundaki boşlukları gösteremediğim için örnek olarak almadım. Bölüm isimlerinin önündeki ve sonundaki boşlukları kaldırma işlemi.

SELECT TRIM(bol_adi) FROM bolum

Trım örnek kullanımı ekran çıktısı

Karakter Sayısını Bulmak

Karakter sayısını bilmek birçok konuda bize yardımcı olacaktır.

Fonksiyon Adı = LEN / LENGHT

Kullanımı MsSQL’de LEN, ORACLE ve MySQL’de LENGHT’dir.

LEN(karakter sayısını bulmak istediğiniz veri/sütun)

Örnek Kullanım

Öğrenci isim ve soyisim uzunluklarını yazdıralım.

SELECT LEN(adi) AS adUzunlugu, LEN(soyadi) AS soyadUzunlugu FROM ogrenci

Veritabanı LEN fonksiyonu kullanımı örnek ekran çıktısı

 

Veri İçinde Değişiklik Yapmak

Bir kelimeyi başka bir kelime ile ya da bir dersin/ürün adını değiştirmek için kullanılır.

Fonksiyon Adı = REPLACE

REPLACE(sütun_adı, değişecek _değer, yerine_gelecek_değer)

Örnek Kullanım

Ders adı Bil.prg. olanı Bilgisayar Programlama diye değiştirelim.

SELECT ders_adi, REPLACE(ders_adi,’Bil.prg.’,’Bilgisayar Programlama’) FROM dersler

Veritabanı replace kullanımı örnek ekran çıktısı

Veri İçinde Karakter Arama

Bir metin içerisinde bir kelime aradığınızda o kelimenin başlangıç noktasını verir.

Fonksiyon Adı = CHARINDEX / INSTR

CHARINDEX MsSQL için, INSTR ise ORACLE ve MySQL için kullanılmaktadır.

Kullanımı = CHARINDEX(aranacak_metin, arama_yeri,başlangıç_noktası)

Başlangıç noktası boş bırakıldığında 0 varsayılan olarak alınır.

Örnek Kullanım

Ders adları içinde Bil sözcüğü geçen indisi versin.

SELECT CHARINDEX(‘Bil’,ders_adi,0) FROM dersler

Veritabanı Charindex kullanımı örnek ekran çıktısı

Veriyi Tersten Yazdırma

Kullanımı var mı yok mu bilmiyorum ama örnek olarak sıksık karşıma çıktığı için yazıyorum. Ekran çıktısı eklemeyeceğim.

Fonksiyon Adı = REVERSE

Kullanımı = REVERSE(değişecek sütun ya da veri)

Örnek Kullanım

Öğrenci isimlerini ters çevirme.

SELECT REVERSE(adi) FROM ogrenci

Sayısal Değerler için Fonksiyonlar

Burada da sayısal veri tipleri için kullanılan fonksiyonlara bakacağız.

Mutlak Değer Alma

Mutlak değer sıklıkla karşımıza çıkmaktadır. Bazen negatif sayı olmaması gereken durumlar da kullanılır.

Fonksiyon Adı = ABS

Kullanım = ABS(sayı/sayısal sütun)

Örnek Kullanım

SELECT ABS(-25.65) AS SONUC

Çıktımız = 25.65

Aşağı ve Yukarı Yuvarlama

Yaklaşık tahminler yaparken kullanılabilir.

Fonksiyon Adı = FLOOR / CEILING

Kullanımı = FLOOR(sayı/sütun) – CEILING(sayı/sütun)

Örnek Kullanım

Virgüllü olarak girilen bütünleme notlarını CEILING ile yukarı yönde yuvarlayalım.

SELECT CEILING(but) FROM notlar

Daha öncesinden ogrenci notlar tablosu float biçime uygun olmadığı için benim kullandığım veri tabanında örneği malesef bulunmamaktadır. Fakat kullanımı yukarıdaki gibidir. Aşağıda da aşağı yuvarlama örneği verilmiştir.

SELECT FLOOR(final) FROM notlar

En Yakın Tamsayıya Yuvarlama

Burada da en yakına yuvarlıyor.

Fonksiyon Adı = ROUND

Kullanımı = ROUND(değer, basamak_sayısı)

Örnek Kullanım

Vize notlarını en yakın 10’luğa yuvarlama işlemi.

SELECT ROUND(vize,-1) FROM notlar

Veritabanı round kullanımı örnek ekran çıktısı

Bir Sayının Kuvvetini Alma

Matematiksel işlemler için veri tutuyor iseniz lazım olabilir.

Fonksiyon Adı = POWER

Kullanımı = POWER(kuvvet alınacak sayı, kuvvet)

Örnek Kullanım

SELECT POWER(5,2) AS SONUC

Sonucumuz 25 olarak çıkacaktır.

Karekök Alma

Kuvvetini aldık kökünü de alalım.

Fonksiyon Adı = SQRT

Kullanımı = SQRT(karekök alınacak sayı)

Örnek Kullanım

SELECT SQRT(121) AS SONUC

Sonucumuz 11 olarak çıkacaktır.

Toplamı Bulma

Bir market veritabanınız var ve toplam hasılatı bulmak isteyebilirsiniz. Bunun için kullanılabilir.

Fonksiyon Adı = SUM

Kullanımı = SUM(satis)

Örnek Kullanım

Vize, final, mazeret ve bütünleme ders notlarını toplayalım. Müşteri veritabanı olsa alacak verecek hesabı yapardık. Bizim de borçlarımız notlarımız 🙂

SELECT SUM(vize) AS Vize, SUM(mazeret) AS Mazeret, SUM(final) AS Final, SUM(but) AS But FROM notlar

Veritabanı SUM fonksiyonu örneği ekran çıktısı

 

Ortalama Değer Hesaplama

Sayısal verileriniz içerisinde ortalama değer bulmak isteyebilirsiniz.

Fonksiyon Adı = AVG

Kullanımı = AVG(sütunlar/veriler)

Örnek Kullanım

Vize, final ve bütünleme notlarının ortalamalarına bakalım.

SELECT AVG(vize) AS vizeOrtalama, AVG(final) AS finalOrtalama ,AVG(but) AS butOrtalama FROM notlar

Veritabanı AVG kullanımı örnek kod ekran çıktısı

En Büyük ve En Küçük Değeri Bulma

Sınıf içerisinde en büyük notu kim almış, taban puan uygulaması için en küçük notu kim almış gibi değerler önemlidir. Bu gibi durumlar için kullanılır.

Fonksiyon Adı = MAX / MIN

Kullanımı = MAX(sütun/veri) MIN(sütun/veri)

Örnek Kullanım

En büyük ve en küçük notu bulalım.

SELECT MAX(vize) AS maxVize, MIN(final) AS minFinal, MAX(but) AS maxBut FROM notlar

Veritabanı Minimum ve maksimum sayıyı bulma örnek ekran çıktısı

Satır Sayısı Bulma

Kaç kullanıcı olduğunu, belli bir şarta göre kaç kullanıcı olduğunu bulmak için kullanılabilir.

Fonksiyon Adı = COUNT

COUNT(sütun adı) – COUNT(*) * hepsini almak istediğimiz anlamına gelmektedir. SELECT’den sonra da * konulması tümünü seç anlamına gelmektedir.

Örnek Kullanım

Derse ve öğrenciye bakılmaksınız notlar tablosunda bütünleme notu 50’nin üzerinde olan öğrenci sayısını bulalım.

SELECT COUNT(*) AS SONUC FROM notlar WHERE but>50

Veritabanı count kullanımı örnek ekran çıktısı

Bölümden Kalanı Bulma

Kısaca mod alma işlemi.

Fonksiyon Adı = MOD / %

Kullanımı = birinci % ikinci – MOD(birinci, ikinci)

Örnek Kullanım

SELECT 159%12 AS Sonuc

SELECT MOD(123,12) AS Sonuc

Tarih ve Saat Fonksiyonları

Bu kısımda da tarih ve saat veri tipindeki veriler için fonksiyonlara bakacağız.

Güncel Tarih ve Saat Bilgisi Alma

Anlık tarih ve saati almak için kullanılır.

Fonksiyon Adı = CURRENT_TIMESTAMP / GETDATE()

Örnek Kullanım

SELECT CURRENT_TIMESTAMP

SELECT GETDATE()

Ben bu yazıyı hazırlar iken çıktısı = 2019-12-10 20:13:36.170

Tarih İçinde İstenilen Bir Bölümü Alma

Gün – Ay – Yıl gibi belirli bölümler bazen lazım olabiliyor. Örnek yaş hesaplama için Yıl alınırken aylık analiz için Ay alınmaktadır.

Fonksiyon Adı = DATENAME

Örnek Kullanım

SELECT DATENAME (MONTH, ‘19.08.1998’)  —  August

SELECT DATENAME (MONTH, GETDATE()) —  December

SELECT DATENAME (MINUTE, GETDATE())  —  19

İki Tarih Arasındaki Farkı Bulma

İki tarih arasında, yaş hesaplamak için kullanılabilir.

Fonksiyon Adı = DATEDIFF

Örnek Kullanım

SELECT DATEDIFF(YEAR, ‘1998-08-19’, GETDATE()) — 21

Belirli Bir Tarih’e Tarih Ekleme

Çok kullanılır mı bilmiyorum ama belki analiz yaparken 10 gün sonra 1 ay sonra gibi sorgular yapılmaktadır. Bunlar için kullanılabilir.

Fonksiyon Adı = DATEADD

Kullanımı = DATEADD(eklenecek olan gün/ay/yıl , eklenecek miktar, ekleneceği tarih)

Örnek Kullanım

SELECT DATEADD(DAY, 30, ‘2019-12-10’) –> 2020-01-10

SELECT DATEADD(MONTH, 2, ‘2019-10-10’) –> 2019-12-10

Dönüşüm Fonksiyonları

Bazen tür dönüşümü yapmak gerekebilir.

CAST ve CONVERT bu ikisini anlatacağım.

CAST Kullanımı = CAST(veri AS veri_tipi)

Örnek Kullanım

SELECT CAST(‘Muhammed’ AS char(5)) –> Muham

CONVERT Kullanımı = Convert(veri_tipi, veri, stil(zorunlu değil))

SELECT CONVERT(varchar(20), GETDATE(), 1) –> 12/10/19

 

Umarım anlaşılır olmuştur. Hemen hemen tüm fonksiyonlara değinmeye çalıştım. Birçoğunun ekran görüntüsünü de ekledim. Örnekler size verdiğim kullanım formatlarına göre artırılabilir. Yeterince uzun bir yazı olduğu için örnekleri kısa tutmaya gayet gösterdim.

Bir cevap yazın