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;