SQL KOMUTLARI

SQL veritabanı silindiri üzerinde SELECT INSERT UPDATE DELETE komutlarını gösteren dört renkli etiket bandı

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;
GROUP BY ve HAVING sorgu sonucu departman bazlı personel sayısı ve ortalama maaş özet tablosu

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

FonksiyonGörev
COUNTSayma
SUMToplam
AVGOrtalama
MAX / MINEn 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.