Her rapor ihtiyacında yazılım ekibine iş açmak ve günlerce beklemek yerine basit soruları kendiniz cevaplayabilseydiniz? SQL, veritabanlarıyla konuşmanın dilidir ve temel düzeyde öğrenmek sanıldığı kadar zor değildir. Birkaç komutla iş sorularının büyük kısmı cevaplanabilir.
Önce güvenlik: Salt okunur erişim
Canlı veritabanında yanlışlıkla bir kaydı silmek veya ağır bir sorguyla sistemi yavaşlatmak mümkündür. Bu yüzden:
- Yalnızca okuma yetkisi olan bir kullanıcı kullanın.
- Mümkünse canlı sistem yerine bir raporlama kopyası üzerinde çalışın.
- Kişisel veri içeren tablolara erişimi ihtiyaçla sınırlayın.
Temel yapı: SELECT
SELECT Ad, Sehir, KayitTarihi
FROM Musteriler
WHERE Sehir = 'Ankara'
ORDER BY KayitTarihi DESC;
SELECT: hangi sütunlarFROM: hangi tabloWHERE: hangi koşulORDER BY: hangi sıralama (DESCbüyükten küçüğe)
Özetleme: GROUP BY
"Şehirlere göre müşteri sayısı":
SELECT Sehir, COUNT(*) AS MusteriSayisi
FROM Musteriler
GROUP BY Sehir
ORDER BY MusteriSayisi DESC;
COUNT, SUM, AVG, MIN, MAX en çok kullanılan özet fonksiyonlardır. Gruplanmış sonuçlar üzerinde filtre için HAVING kullanılır: HAVING COUNT(*) > 10.
Tabloları birleştirme: JOIN
Veriler genellikle birden fazla tabloya dağılmıştır (veritabanı nedir). "Bu yıl en çok alışveriş yapan 10 müşteri":
SELECT TOP 10 m.Ad, SUM(s.Tutar) AS ToplamTutar
FROM Siparisler s
JOIN Musteriler m ON m.Id = s.MusteriId
WHERE s.Tarih >= '2026-01-01'
GROUP BY m.Ad
ORDER BY ToplamTutar DESC;
TOP 10 SQL Server sözdizimidir; PostgreSQL ve MySQL'de sorgunun sonuna LIMIT 10 yazılır.
- INNER JOIN: Yalnızca iki tabloda da eşleşen kayıtlar
- LEFT JOIN: Soldaki tablonun tamamı, sağda eşleşme yoksa boş değerler. "Hiç sipariş vermemiş müşteriler" gibi sorular için kullanılır.
Sık işe yarayan sorular
- Son 90 günde sipariş vermeyen müşteriler (LEFT JOIN ve tarih filtresi)
- Ay bazında ciro (tarihi aya göre gruplama)
- Stoku belirli bir seviyenin altına düşen ürünler
- Ortalama sipariş tutarının bölgelere göre dağılımı
Dikkat edilecek tuzaklar
- NULL değerler: Boş değerler
= NULLile değilIS NULLile sorgulanır. - Mükerrer sayım: JOIN sonrası bir satır birden çok kez sayılabilir; sonuçları mantık kontrolünden geçirin.
- Tarih sınırları: "Eylül ayı" için
< '2026-10-01'kullanmak, saat bilgisinden kaynaklı eksikleri önler. Bkz. tarih ve saat. - Ağır sorgular: Milyonlarca satırı filtresiz çekmek sistemi yavaşlatabilir.
Sonraki adım
Aynı sorguyu her hafta çalıştırıyorsanız sonucu otomatik bir rapora veya panele dönüştürmek mantıklıdır. Bkz. otomatik rapor e-postası. SQL'i öğrenirken yapay zekâ asistanlarından sorgu taslağı istemek de hızlandırıcı olabilir; ancak sonuçların doğruluğunu mutlaka kontrol edin.
Sık sorulan sorular
SQL öğrenmek ne kadar sürer?
Temel sorgular için birkaç günlük pratik yeterlidir. JOIN ve gruplama konusunda rahatlamak birkaç hafta düzenli kullanım ister.
Hangi veritabanında çalışacağım fark eder mi?
Temel komutlar SQL Server, PostgreSQL ve MySQL'de neredeyse aynıdır; küçük sözdizimi farkları vardır.
Sonuç
Temel SQL bilgisi, veriyle aranızdaki aracıyı azaltır ve sorularınıza dakikalar içinde cevap bulmanızı sağlar. Güvenli bir okuma erişimiyle başlamak, bu beceriyi risksiz kazanmanın en iyi yoludur.