Temel Sorgular (SELECT)

Veritabanından veri çekmek için kullanılan temel SELECT sorguları

SELECT Nedir?

SELECT, veritabanından veri çekmek için kullanılan en temel SQL komutudur. Tüm SQL işlemlerinin temelidir.

Tüm Kolonları Seçme

SELECT * FROM users;
Kullanım Alanları:
  • Tablonun tüm verilerini görüntüleme
  • Tablonun yapısını ve içeriğini kontrol etme
  • Küçük tablolar için hızlı veri çekme
Production'da SELECT * kullanmaktan kaçının. Gereksiz veri transferi yapar ve performansı düşürür.

Belirli Kolonları Seçme

SELECT name, email, created_at FROM users;

Açıklama: Sadece belirtilen kolonları getirir. Performans için önerilir.

Kullanım Alanları:
  • Gereksiz veri transferini önleme
  • Belirli bilgilere odaklanma
  • Sorgu performansını artırma

Alias (Takma Ad) Kullanımı

SELECT 
    id AS user_id,
    name AS kullanici_adi,
    email AS eposta,
    created_at AS kayit_tarihi
FROM users;
user_id | kullanici_adi | eposta | kayit_tarihi ---------+---------------+-----------------------+--------------------- 1 | Ahmet Yılmaz | ahmet@example.com | 2024-01-15 10:30:00 2 | Mehmet Kaya | mehmet@example.com | 2024-01-16 14:22:00

DISTINCT - Tekrarsız Değerler

-- Tekrar eden değerleri filtrele
SELECT DISTINCT country FROM users;

-- Birden fazla sütun için
SELECT DISTINCT city, country FROM users;

-- Kaç farklı değer var?
SELECT COUNT(DISTINCT country) AS ulke_sayisi FROM users;
Kullanım Alanları:
  • Benzersiz değerleri listeleme
  • Kategori veya grup sayısını belirleme
  • Veri analizi ve raporlama

Hesaplanmış Kolonlar

-- Matematiksel işlemler
SELECT 
    name,
    price,
    quantity,
    price * quantity AS toplam_tutar,
    price * quantity * 0.18 AS kdv,
    price * quantity * 1.18 AS genel_toplam
FROM order_items;

-- String birleştirme
SELECT 
    first_name || ' ' || last_name AS full_name,
    'Mr/Ms. ' || last_name AS formal_name
FROM employees;

CASE WHEN - Koşullu Değer

SELECT 
    name,
    price,
    CASE 
        WHEN price < 100 THEN 'Ucuz'
        WHEN price BETWEEN 100 AND 500 THEN 'Orta'
        WHEN price > 500 THEN 'Pahalı'
        ELSE 'Belirsiz'
    END AS fiyat_kategorisi
FROM products;
name | price | fiyat_kategorisi ------------+--------+----------------- Mouse | 75.00 | Ucuz Keyboard | 250.00 | Orta Monitor | 800.00 | Pahalı

NULL Değerlerle Çalışma

-- COALESCE: NULL yerine varsayılan değer
SELECT 
    name,
    COALESCE(phone, 'Telefon yok') AS phone,
    COALESCE(discount, 0) AS discount
FROM customers;

-- NULLIF: Değer eşitse NULL döndür
SELECT 
    name,
    NULLIF(status, 'unknown') AS status
FROM users;