# SQL Nasıl Öğrenilir? SELECT, WHERE, JOIN ve GROUP BY (Uygulamalı SQLite Rehberi)

- Kaynak: https://teknopiksel.com/sql-ogrenme-rehberi-h100871.html
- Yazar: Mehmet Ali Demirci
- Yayın: 2026-11-01
- Bölüm: Kodlama
- Yayıncı: Teknopiksel

> SQL'i kurulum derdi olmadan SQLite ile öğrenin: tablo oluşturma, veri ekleme, SELECT, WHERE, JOIN ve GROUP BY örnekleri.

**Kısa cevap:** SQLite ile kurulum yapmadan SQL öğrenebilirsiniz. Tablo oluşturun (CREATE TABLE), veri ekleyin (INSERT), okuyun (SELECT ... WHERE), tabloları birleştirin (JOIN) ve gruplayıp sayın (GROUP BY). Bu beş komut veritabanı işinin büyük kısmını karşılar.

SQL, veritabanlarıyla konuşma dilidir ve onlarca yıldır değişmeden değerini koruyor. Web geliştirici, veri analisti, yazılım test uzmanı, hatta pazarlamacı için bile pratik bir beceridir.

Bu rehberde SQLite kullanacağız: sunucu kurmadan tek dosyada çalışır. Öğrendiğiniz komutların çoğu PostgreSQL ve MySQL'de de aynıdır.

## Adımlar

### 1. SQLite'ı açın

Çoğu sistemde zaten kuruludur. Kontrol edin ve bir veritabanı dosyası açın:

```
sqlite3 okul.db
```

Kurulu değilse Windows'ta sqlite.org/download adresindeki *sqlite-tools* paketini, macOS'ta `brew install sqlite`, Debian/Ubuntu'da `sudo apt install sqlite3` komutunu kullanın. Tarayıcıdan denemek isterseniz "SQLite online" araçları da vardır. Çıkmak için `.quit` yazın.

### 2. Tablo oluşturun ve veri ekleyin

```
CREATE TABLE ogrenci (
  id INTEGER PRIMARY KEY,
  ad TEXT NOT NULL,
  sinif INTEGER
);

CREATE TABLE not_ (
  ogrenci_id INTEGER,
  ders TEXT,
  puan INTEGER
);

INSERT INTO ogrenci (ad, sinif) VALUES ('Ayşe', 9), ('Ali', 9), ('Zeynep', 10);
INSERT INTO not_ VALUES (1,'Matematik',90), (1,'Fizik',70), (2,'Matematik',55), (3,'Fizik',85);
```

Tablo, satır ve sütunlardan oluşan bir listedir. `PRIMARY KEY` her satırı tekil kılan numaradır.

### 3. SELECT ile okuyun

```
SELECT * FROM ogrenci;
SELECT ad FROM ogrenci WHERE sinif = 9;
SELECT ad FROM ogrenci ORDER BY ad DESC LIMIT 2;
```

Üç parçayı akılda tutun: `SELECT` hangi sütunlar, `FROM` hangi tablo, `WHERE` hangi satırlar. `ORDER BY` sıralar, `LIMIT` sayıyı sınırlar.

### 4. JOIN ile tabloları birleştirin

```
SELECT ogrenci.ad, not_.ders, not_.puan
FROM ogrenci
JOIN not_ ON not_.ogrenci_id = ogrenci.id;
```

`JOIN` iki tabloyu ortak bir sütundan eşleştirir. Sonuçta öğrencinin adı ile notları yan yana gelir. Hiç notu olmayan öğrencileri de görmek isterseniz `LEFT JOIN` kullanın.

### 5. GROUP BY ile özetleyin

```
SELECT ders, COUNT(*) AS adet, AVG(puan) AS ortalama
FROM not_
GROUP BY ders;
```

`GROUP BY` satırları gruplar; `COUNT`, `AVG`, `SUM`, `MIN` ve `MAX` her grup için hesap yapar. Gruplanmış sonucu süzmek için `WHERE` değil `HAVING` kullanılır.

### 6. Güncelleyin ve silin: dikkatli olun

```
UPDATE not_ SET puan = 60 WHERE ogrenci_id = 2 AND ders = 'Matematik';
DELETE FROM not_ WHERE puan < 50;
```

**Uyarı:** `WHERE` yazmayı unutursanız komut tüm satırları etkiler. Önce aynı koşulu `SELECT` ile deneyin, doğru satırları gördükten sonra `UPDATE` ya da `DELETE` çalıştırın.

### 7. Alıştırma yapın

- Her öğrencinin ortalama puanını bulun.
- Ortalaması 70'in üstündekileri listeleyin.
- Hangi sınıfta kaç öğrenci olduğunu sayın.

Çözümü bilmiyorsanız soruyu ve tablo yapısını yapay zekâ asistanına verip sorgu isteyin; ancak yazılan sorguyu satır satır okuyun ve küçük veriyle deneyin.

## Sık sorulan sorular

### SQL bir programlama dili midir?

Teknik olarak sorgulama dilidir. Döngü ve fonksiyon yazmazsınız, hangi veriyi istediğinizi tarif edersiniz.

### SQLite, PostgreSQL ve MySQL farkı nedir?

SQLite dosya tabanlıdır ve sunucu gerekmez. PostgreSQL ve MySQL çok kullanıcılı sunucu veritabanlarıdır. Temel SQL hepsinde ortaktır.

### SQL ne kadar sürede öğrenilir?

Temel sorgular için 1-2 hafta düzenli çalışma yeter. JOIN ve gruplama mantığı oturduktan sonra performans ve tasarım konularına geçebilirsiniz.

### SQL injection nedir?

Kullanıcıdan gelen metni SQL komutuna doğrudan eklerseniz saldırgan sorguyu değiştirebilir. Uygulama kodunda her zaman parametreli sorgu kullanın.
