Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SQL Fonksiyonları

MenzeletDB, 200’den fazla yerleşik SQL fonksiyonu destekler. Ayrıca dil duyarlı sıralama için collate() özel fonksiyonu sunucuya kayıtlıdır.

Aggregate (Toplama) Fonksiyonları

Aggregate fonksiyonlar NULL değerleri atlar (COUNT(*) hariç).

FonksiyonAçıklamaÖrnek
COUNT(*)Tüm satırları sayar (NULL dahil)SELECT COUNT(*) FROM urunler
COUNT(sütun)NULL olmayan satırları sayarSELECT COUNT(fiyat) FROM urunler
SUM(sütun)Sayısal toplamSELECT SUM(fiyat) FROM urunler
AVG(sütun)OrtalamaSELECT AVG(fiyat) FROM urunler
MIN(sütun)Minimum değerSELECT MIN(fiyat) FROM urunler
MAX(sütun)Maksimum değerSELECT MAX(fiyat) FROM urunler
MEDIAN(sütun)Medyan değerSELECT MEDIAN(fiyat) FROM urunler
ARRAY_AGG(sütun)Değerleri diziye toplarSELECT ARRAY_AGG(urun_adi) FROM urunler
BIT_AND(sütun)Bitwise ANDSELECT BIT_AND(bayraklar) FROM ayarlar
BIT_OR(sütun)Bitwise ORSELECT BIT_OR(bayraklar) FROM ayarlar
BOOL_AND(sütun)Tümü true mi?SELECT BOOL_AND(aktif) FROM urunler
BOOL_OR(sütun)Herhangi biri true mi?SELECT BOOL_OR(aktif) FROM urunler
STDDEV(sütun)Standart sapmaSELECT STDDEV(fiyat) FROM urunler
VARIANCE(sütun)VaryansSELECT VARIANCE(fiyat) FROM urunler

Gruplama Örnekleri

SELECT musteri_id,
       COUNT(*) AS siparis_sayisi,
       SUM(tutar) AS toplam,
       AVG(tutar) AS ortalama,
       MIN(tutar) AS en_dusuk,
       MAX(tutar) AS en_yuksek
FROM siparisler
GROUP BY musteri_id
HAVING SUM(tutar) > 10000
ORDER BY toplam DESC

Metin (String) Fonksiyonları

FonksiyonAçıklamaÖrnek
LOWER(s)Küçük harfe çevirirSELECT LOWER('MENZELeT')'menzelet'
UPPER(s)Büyük harfe çevirirSELECT UPPER('menzelet')'MENZELET'
LENGTH(s)Karakter sayısıSELECT LENGTH('merhaba')7
CHAR_LENGTH(s)LENGTH ile aynıSELECT CHAR_LENGTH('abc')3
BIT_LENGTH(s)Bit cinsinden uzunlukSELECT BIT_LENGTH('abc')24
OCTET_LENGTH(s)Byte cinsinden uzunlukSELECT OCTET_LENGTH('abc')3
SUBSTR(s, pos, len)Alt metin çıkarır (1-tabanlı)SELECT SUBSTR('menzelet', 1, 3)'men'
LEFT(s, n)Soldan n karakterSELECT LEFT('menzelet', 3)'men'
RIGHT(s, n)Sağdan n karakterSELECT RIGHT('menzelet', 3)'let'
CONCAT(a, b, ...)BirleştirirSELECT CONCAT('men', 'ze', 'let')'menzelet'
CONCAT_WS(sep, ...)Ayırıcı ile birleştirirSELECT CONCAT_WS('-', 'a', 'b', 'c')'a-b-c'
REPLACE(s, old, new)Metin değiştirirSELECT REPLACE('abc', 'b', 'x')'axc'
REVERSE(s)Ters çevirirSELECT REVERSE('abc')'cba'
REPEAT(s, n)TekrarlarSELECT REPEAT('ab', 3)'ababab'
TRIM(s)Baş/son boşluk silerSELECT TRIM(' abc ')'abc'
LTRIM(s)Soldan boşluk silerSELECT LTRIM(' abc')'abc'
RTRIM(s)Sağdan boşluk silerSELECT RTRIM('abc ')'abc'
LPAD(s, len, fill)Soldan doldururSELECT LPAD('42', 5, '0')'00042'
RPAD(s, len, fill)Sağdan doldururSELECT RPAD('42', 5, '0')'42000'
INITCAP(s)Her kelimenin baş harfi büyükSELECT INITCAP('hello world')'Hello World'
ASCII(s)İlk karakterin ASCII koduSELECT ASCII('A')65
CHR(n)ASCII koddan karakterSELECT CHR(65)'A'
STARTS_WITH(s, prefix)Ön ek kontrolüSELECT STARTS_WITH('abc', 'ab')true
ENDS_WITH(s, suffix)Son ek kontrolüSELECT ENDS_WITH('abc', 'bc')true
CONTAINS(s, sub)İçerik kontrolüSELECT CONTAINS('abc', 'bc')true
STRPOS(s, sub)Alt metin pozisyonuSELECT STRPOS('abcdef', 'cd')3
SPLIT_PART(s, d, n)Ayırıcıyla böl, n. parçaSELECT SPLIT_PART('a-b-c', '-', 2)'b'
TRANSLATE(s, from, to)Karakter çevirisiSELECT TRANSLATE('abc', 'abc', 'xyz')'xyz'
TO_HEX(n)Sayıyı hex metin yaparSELECT TO_HEX(255)'ff'
LEVENSHTEIN(a, b)Düzenleme mesafesiSELECT LEVENSHTEIN('abc', 'axc')1
uuid()Rastgele UUID v4 üretirSELECT uuid()'c4a1...'
OVERLAY(s, r, pos, len)Metin üzerine yazarSELECT OVERLAY('abcdef' PLACING 'XX' FROM 3 FOR 2)

Matematik Fonksiyonları

FonksiyonAçıklamaÖrnek
ABS(x)Mutlak değerSELECT ABS(-5)5
CEIL(x)Yukarı yuvarlamaSELECT CEIL(3.2)4
FLOOR(x)Aşağı yuvarlamaSELECT FLOOR(3.8)3
ROUND(x, d)YuvarlaSELECT ROUND(3.456, 2)3.46
TRUNC(x, d)KesSELECT TRUNC(3.456, 2)3.45
SQRT(x)KarekökSELECT SQRT(16)4
CBRT(x)KüpkökSELECT CBRT(27)3
POW(x, y)Üs almaSELECT POW(2, 10)1024
EXP(x)e^xSELECT EXP(1)2.718...
LN(x)Doğal logaritmaSELECT LN(2.718)~1.0
LOG(base, x)LogaritmaSELECT LOG(10, 100)2
LOG10(x)10 tabanında logSELECT LOG10(1000)3
LOG2(x)2 tabanında logSELECT LOG2(8)3
PI()Pi sabitiSELECT PI()3.14159...
RANDOM()0-1 arası rastgeleSELECT RANDOM()
SIGN(x)İşaret (-1, 0, 1)SELECT SIGN(-5)-1
FACTORIAL(n)FaktöriyelSELECT FACTORIAL(5)120
GCD(a, b)En büyük ortak bölenSELECT GCD(12, 8)4
LCM(a, b)En küçük ortak katSELECT LCM(4, 6)12
DEGREES(rad)Radyandan dereceyeSELECT DEGREES(PI())180
RADIANS(deg)Dereceden radyanaSELECT RADIANS(180)3.14...
SIN(x)SinüsSELECT SIN(PI()/2)1
COS(x)KosinüsSELECT COS(0)1
TAN(x)TanjantSELECT TAN(PI()/4)~1
ASIN(x)Ark sinüsSELECT ASIN(1)1.5707...
ACOS(x)Ark kosinüsSELECT ACOS(1)0
ATAN(x)Ark tanjantSELECT ATAN(1)0.7853...
ATAN2(y, x)İki argümanlı ark tanjantSELECT ATAN2(1, 1)0.7853...
ISNAN(x)NaN kontrolüSELECT ISNAN(0.0/0.0)
ISZERO(x)Sıfır kontrolüSELECT ISZERO(0)true
NANVL(x, alt)NaN ise alternatifSELECT NANVL(val, 0.0)

Koşullu Fonksiyonlar

FonksiyonAçıklamaÖrnek
COALESCE(a, b, ...)İlk NULL olmayanSELECT COALESCE(fiyat, 0.0)
NULLIF(a, b)Eşitse NULLSELECT NULLIF(fiyat, 0.0)
GREATEST(a, b, ...)En büyük değerSELECT GREATEST(3, 7, 1)7
LEAST(a, b, ...)En küçük değerSELECT LEAST(3, 7, 1)1
IFNULL(a, b)NULL ise b dönerSELECT IFNULL(fiyat, 0.0)
NVL(a, b)IFNULL ile aynıSELECT NVL(fiyat, 0.0)
NVL2(a, b, c)a NULL değilse b, NULL ise cSELECT NVL2(fiyat, 'var', 'yok')

Tarih / Saat Fonksiyonları

FonksiyonAçıklamaÖrnek
NOW()Geçerli UTC zaman damgasıSELECT NOW()
CURRENT_DATEBugünün tarihiSELECT CURRENT_DATE
CURRENT_TIMEŞu anki saatSELECT CURRENT_TIME
CURRENT_TIMESTAMPNOW() ile aynıSELECT CURRENT_TIMESTAMP
TODAY()CURRENT_DATE ile aynıSELECT TODAY()
date_part(birim, tarih)Tarih bileşeni çıkarırSELECT date_part('year', NOW())
EXTRACT(birim FROM tarih)SQL standart bileşen çıkarmaSELECT EXTRACT(MONTH FROM tarih)
date_trunc(birim, tarih)Tarihi keserSELECT date_trunc('month', NOW())
date_bin(interval, ts, origin)Zaman aralığına hizalarSELECT date_bin(INTERVAL '1 hour', ts, '2024-01-01')
to_timestamp(s)Metinden timestampSELECT to_timestamp('2024-01-15 10:30:00')
to_date(s, fmt)Metinden tarihSELECT to_date('15/01/2024', '%d/%m/%Y')
to_char(ts, fmt)Tarihten metinSELECT to_char(NOW(), '%Y-%m-%d')
from_unixtime(epoch)Unix epoch’tan timestampSELECT from_unixtime(1705315800)
to_unixtime(ts)Timestamp’tan epochSELECT to_unixtime(NOW())
make_date(y, m, d)Bileşenlerden tarihSELECT make_date(2024, 1, 15)
make_time(h, m, s)Bileşenlerden saatSELECT make_time(10, 30, 0)
Interval aritmetiğiTarihe süre eklemeSELECT NOW() + INTERVAL '10 days'

Tarih Bileşenleri (date_part / EXTRACT)

Kullanılabilir birimler: year, month, day, hour, minute, second, week, dow (haftanın günü), doy (yılın günü), quarter, epoch

SELECT date_part('year', siparis_tarihi) AS yil,
       date_part('month', siparis_tarihi) AS ay,
       COUNT(*) AS siparis_sayisi
FROM siparisler
GROUP BY yil, ay
ORDER BY yil, ay

Regex Fonksiyonları

FonksiyonAçıklamaÖrnek
REGEXP_LIKE(s, pattern)Kalıp eşleşmesiSELECT REGEXP_LIKE('abc123', '[0-9]+')true
REGEXP_MATCH(s, pattern)Eşleşen grubu dönerSELECT REGEXP_MATCH('abc123', '([0-9]+)')
REGEXP_REPLACE(s, p, r)Kalıpla değiştirirSELECT REGEXP_REPLACE('abc123', '[0-9]', 'X')
REGEXP_COUNT(s, pattern)Eşleşme sayısıSELECT REGEXP_COUNT('abcabc', 'abc')2

Hash Fonksiyonları

FonksiyonAçıklamaÖrnek
MD5(s)MD5 hashSELECT MD5('menzelet')
SHA224(s)SHA-224 hashSELECT SHA224('menzelet')
SHA256(s)SHA-256 hashSELECT SHA256('menzelet')
SHA384(s)SHA-384 hashSELECT SHA384('menzelet')
SHA512(s)SHA-512 hashSELECT SHA512('menzelet')
DIGEST(s, algo)Belirtilen algoritmaSELECT DIGEST('abc', 'blake3')

Kodlama Fonksiyonları

FonksiyonAçıklamaÖrnek
ENCODE(veri, format)Binary → metinSELECT ENCODE(blob_sutun, 'base64')
DECODE(metin, format)Metin → binarySELECT DECODE('AQID', 'base64')

Desteklenen formatlar: base64, hex

Window (Pencere) Fonksiyonları

Window fonksiyonları OVER (...) ifadesiyle kullanılır.

FonksiyonAçıklama
ROW_NUMBER()Satır numarası (1’den başlar)
RANK()Sıralama (eşitlerde aynı numara, sonraki atlar)
DENSE_RANK()Sıralama (eşitlerde aynı numara, sonraki atlamaz)
NTILE(n)n gruba eşit böler
LAG(sütun, n)n satır önceki değer
LEAD(sütun, n)n satır sonraki değer
FIRST_VALUE(sütun)Penceredeki ilk değer
LAST_VALUE(sütun)Penceredeki son değer
NTH_VALUE(sütun, n)Penceredeki n. değer
CUME_DIST()Kümülatif dağılım
PERCENT_RANK()Yüzdelik sıralama

Window Örnekleri

-- Satır numarası
SELECT ROW_NUMBER() OVER (ORDER BY fiyat DESC) AS sira,
       urun_adi, fiyat
FROM urunler

-- Bölüm bazlı sıralama
SELECT kategori, urun_adi, fiyat,
       RANK() OVER (PARTITION BY kategori ORDER BY fiyat DESC) AS sira
FROM urunler

-- Bir önceki değerle karşılaştırma
SELECT tarih, tutar,
       LAG(tutar, 1) OVER (ORDER BY tarih) AS onceki_tutar,
       tutar - LAG(tutar, 1) OVER (ORDER BY tarih) AS fark
FROM gunluk_satis

-- Kümülatif toplam
SELECT tarih, tutar,
       SUM(tutar) OVER (ORDER BY tarih) AS kumulatif_toplam
FROM gunluk_satis

-- LAST_VALUE (pencere çerçevesi gerekir)
SELECT urun_adi,
       LAST_VALUE(urun_adi) OVER (
           ORDER BY fiyat
           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
       ) AS en_pahali
FROM urunler

Özel Fonksiyon: collate()

MenzeletDB’ye özgü, locale-duyarlı sıralama fonksiyonu:

-- Türkçe alfabetik sıralama
SELECT isim FROM musteriler ORDER BY collate(isim)

Detaylı kullanım için bkz: Veri İşlemleri — Dil Duyarlı Sıralama

Diğer Fonksiyonlar

FonksiyonAçıklamaÖrnek
VERSION()Sunucu sürümüSELECT VERSION()