# SQL Temel Kavramları

### Temel Kavramlar

SQL, veritabanları ile iletişim kurmak için kullanılan bir dildir. Veritabanı, bilgilerin düzenli bir şekilde saklandığı ve yönetildiği bir yerdir. SQL kullanarak veritabanlarından veri çekebilir, veri ekleyebilir, güncelleyebilir veya silebilirsiniz.

### Temel SQL Sorguları

#### 1\. **SELECT Sorguları (Veri Çekme)**

SELECT sorguları, veritabanından veri çekmek için kullanılır.

**Temel Yapı:**

```sql
SELECT sütun1, sütun2, ...
FROM tablo_adi
WHERE koşul;
```

**Örnek:**

```sql
SELECT Adi, Soyadi
FROM Birey
WHERE Yas > 30;
```

Bu sorgu, `Birey` tablosundan yaşı 30'dan büyük olan bireylerin isim ve soyisimlerini seçer.

#### 2\. **INSERT Sorguları (Veri Ekleme)**

INSERT sorguları, veritabanına yeni veri eklemek için kullanılır.

**Temel Yapı:**

```sql
INSERT INTO tablo_adi (sütun1, sütun2, ...)
VALUES (deger1, deger2, ...);
```

**Örnek:**

```sql
INSERT INTO Birey (Adi, Soyadi, Yas)
VALUES ('Ahmet', 'Yılmaz', 35);
```

Bu sorgu, `Birey` tablosuna yeni bir birey ekler.

#### 3\. **UPDATE Sorguları (Veri Güncelleme)**

UPDATE sorguları, mevcut veriyi güncellemek için kullanılır.

**Temel Yapı:**

```sql
UPDATE tablo_adi
SET sütun1 = deger1, sütun2 = deger2, ...
WHERE koşul;
```

**Örnek:**

```sql
UPDATE Birey
SET Yas = 36
WHERE Adi = 'Ahmet' AND Soyadi = 'Yılmaz';
```

Bu sorgu, `Birey` tablosundaki adı 'Ahmet' ve soyadı 'Yılmaz' olan bireyin yaşını 36 olarak günceller.

#### 4\. **DELETE Sorguları (Veri Silme)**

DELETE sorguları, veritabanından veri silmek için kullanılır.

**Temel Yapı:**

```sql
DELETE FROM tablo_adi
WHERE koşul;
```

**Örnek:**

```sql
DELETE FROM Birey
WHERE Adi = 'Ahmet' AND Soyadi = 'Yılmaz';
```

Bu sorgu, `Birey` tablosundan adı 'Ahmet' ve soyadı 'Yılmaz' olan bireyi siler.

### İleri Seviye Sorgular

#### 1\. **JOIN Sorguları (Tabloları Birleştirme)**

JOIN sorguları, birden fazla tabloyu birleştirmek için kullanılır.

**Temel Yapı:**

```sql
SELECT t1.sütun1, t2.sütun2, ...
FROM tablo1 t1
JOIN tablo2 t2 ON t1.ortak_sütun = t2.ortak_sütun
WHERE koşul;
```

**Örnek:**

```sql
SELECT Birey.Adi, Birey.Soyadi, Adres.Sehir
FROM Birey
JOIN Adres ON Birey.BireyID = Adres.BireyID;
```

Bu sorgu, `Birey` ve `Adres` tablolarını `BireyID` sütunu üzerinden birleştirir ve her bireyin adı, soyadı ve şehir bilgisini getirir.

#### 2\. **GROUP BY ve HAVING Sorguları (Gruplama ve Filtreleme)**

GROUP BY, verileri belirli bir sütuna göre gruplamak için kullanılır. HAVING, gruplar üzerinde koşul uygulamak için kullanılır.

**Temel Yapı:**

```sql
SELECT sütun, COUNT(*)
FROM tablo_adi
GROUP BY sütun
HAVING COUNT(*) > koşul;
```

**Örnek:**

```sql
SELECT Adi, Soyadi, COUNT(*)
FROM Birey
GROUP BY Adi, Soyadi
HAVING COUNT(*) > 1;
```

Bu sorgu, aynı isim ve soyisme sahip bireyleri gruplar ve birden fazla olanları seçer.

### Özet

1. **SELECT**: Veritabanından veri seçer.
    
2. **INSERT**: Veritabanına yeni veri ekler.
    
3. **UPDATE**: Veritabanındaki veriyi günceller.
    
4. **DELETE**: Veritabanındaki veriyi siler.
    
5. **JOIN**: Birden fazla tabloyu birleştirir.
    
6. **GROUP BY ve HAVING**: Verileri gruplar ve gruplara koşul uygular.
