SQL KOMUTLARI
1974'te IBM araştırmacılarının önerdiği SEQUEL dili bugün adı SQL olmuş halde dünyanın her veritabanında konuşuluyor. SQL Server, MySQL, PostgreSQL, Oracle, SQLite — hepsi aynı temel komutları bilir. SQL komutlarının güzelliği de buradadır: bir kez kavrandığında bir sistemden diğerine geçiş düşük maliyetlidir.
1. Temel SELECT
SELECT Ad, Soyad, Maaş
FROM Personel;
-- Tüm sütunlar
SELECT * FROM Personel;2. WHERE — Filtreleme
SELECT * FROM Personel
WHERE Departman = 'Satış';
SELECT * FROM Satışlar
WHERE Tutar > 10000 AND Tarih >= '2026-01-01';
SELECT * FROM Müşteriler
WHERE Şehir IN ('İstanbul', 'Ankara', 'İzmir');
SELECT * FROM Ürünler
WHERE Ad LIKE '%kart%';3. ORDER BY — Sıralama
SELECT * FROM Personel
ORDER BY Maaş DESC;
SELECT * FROM Personel
ORDER BY Departman ASC, Maaş DESC;4. GROUP BY — Gruplama
SELECT Departman, COUNT(*) AS PersonelSayısı, AVG(Maaş) AS Ortalama
FROM Personel
GROUP BY Departman;
SELECT Bölge, SUM(Tutar) AS ToplamSatış
FROM Satışlar
GROUP BY Bölge
HAVING SUM(Tutar) > 100000;
5. JOIN — Tablo Birleştirme
-- INNER JOIN
SELECT s.SiparişID, m.Unvan, s.Tutar
FROM Siparişler s
INNER JOIN Müşteriler m ON s.MüşteriID = m.MüşteriID;
-- LEFT JOIN (siparişi olmayan müşteriler de dahil)
SELECT m.Unvan, COUNT(s.SiparişID) AS Sipariş
FROM Müşteriler m
LEFT JOIN Siparişler s ON s.MüşteriID = m.MüşteriID
GROUP BY m.Unvan;6. INSERT, UPDATE, DELETE
-- Ekleme
INSERT INTO Müşteriler (Unvan, VergiNo)
VALUES ('ABC Ltd.', '1234567890');
-- Güncelleme
UPDATE Personel
SET Maaş = Maaş * 1.10
WHERE Departman = 'Satış';
-- Silme
DELETE FROM Siparişler
WHERE Tarih < '2024-01-01';7. Alt Sorgu (Subquery)
SELECT Ad, Maaş
FROM Personel
WHERE Maaş > (SELECT AVG(Maaş) FROM Personel);
-- IN ile
SELECT * FROM Müşteriler
WHERE MüşteriID IN (
SELECT DISTINCT MüşteriID FROM Siparişler
WHERE Tutar > 50000
);8. Aggregate Fonksiyonlar
| Fonksiyon | Görev |
|---|---|
| COUNT | Sayma |
| SUM | Toplam |
| AVG | Ortalama |
| MAX / MIN | En büyük / en küçük |
| COUNT(DISTINCT) | Benzersiz sayma |
9. Tarih Fonksiyonları
SELECT GETDATE(); -- bugün
SELECT YEAR(Tarih), MONTH(Tarih) FROM Satışlar;
SELECT DATEDIFF(day, A, B) FROM Faturalar;10. Sık Yapılan Hatalar
- WHERE'sız UPDATE/DELETE — tüm tabloyu etkiler
- JOIN koşulu eksik — Cartesian product oluşur
- GROUP BY ile non-aggregate sütun karışıklığı
- NULL karşılaştırması = ile değil IS NULL ile
- String tarih karşılaştırması — DATETIME tipinde olmalı
11. DÜŞEYARA'dan Sonra Sıra
SQL komutları her veri analistinin temel becerisidir. Bu konunun güncel ayrıntıları Wikipedia'nın SQL sayfasında yer alır. Excel'in DÜŞEYARA ve pivot tablo yapısından sonra SQL'e geçmek doğal bir ilerlemedir; ölçek büyüdükçe Excel'in tek dosyalı sınırını aşmanın en sık yolu burasıdır.
Temel ve ileri sorguları, performans optimizasyonunu birlikte işleyen SQL eğitim içeriği bu geçişi sistematik biçimde kurar.
Sıkça Sorulan Sorular
SQL hangi veritabanlarında çalışır?
SQL Server, MySQL, PostgreSQL, Oracle, SQLite, MariaDB — hepsi SQL temel. Lehçe farkları küçük (DATEDIFF, GETDATE gibi); ANSI SQL temel komutları her sistemde çalışır.
JOIN türleri arasındaki fark nedir?
INNER JOIN sadece eşleşenleri, LEFT JOIN sol tablonun tümünü, RIGHT JOIN sağ tablonun tümünü, FULL JOIN her ikisinin tümünü getirir. En sık INNER ve LEFT kullanılır.
SQL mi Excel mi tercih etmeli?
Veri büyük (100K+ satır), birden çok tabloda ve sürekli güncelleniyorsa SQL. Tek dosyada görsel rapor ve analiz için Excel. İkisi tamamlayıcıdır; SQL'den çekilen veri Excel'de görselleştirilir.
WHERE ile HAVING arasındaki fark nedir?
WHERE satır seviyesinde filtre uygular ve GROUP BY öncesinde çalışır. HAVING ise toplulaştırma sonrası grup düzeyinde filtre yapar; SUM, COUNT gibi toplama fonksiyonlarının sonuçlarına koşul koymak için kullanılır. İkisi birlikte aynı sorguda kullanılabilir.
INSERT, UPDATE, DELETE komutları nasıl güvenli kullanılır?
UPDATE ve DELETE komutlarını çalıştırmadan önce mutlaka aynı WHERE koşuluyla SELECT yazıp etkilenecek satırları görmek gerekir. Mümkünse BEGIN TRANSACTION ile başlayıp sonuç doğruysa COMMIT, yanlışsa ROLLBACK yapılır. Yedek almadan toplu işlem yapılmaz.
SQL öğrenmek için hangi sırayı izlemeli?
SELECT ve WHERE ile başlanır; ardından ORDER BY, GROUP BY, agregasyon fonksiyonları gelir. Sonra JOIN türleri, alt sorgular ve CTE öğrenilir. Son aşamada indeks, sorgu planı ve performans gibi konular ele alınır. Önce okuma, sonra yazma komutları çalışılır.



