Veritabanı Sorguları ve Birleştirmeler Nedir?
Veritabanı sorguları, veritabanlarından belirli bilgileri almak için kullanılan komutlardır. Birleştirmeler (JOIN) ise, birden fazla tabloyu ortak sütunlar üzerinden birleştirerek daha karmaşık veri setleri elde etmemizi sağlar.
Veritabanı sorguları, SQL gibi dillerle veritabanından veri çekme işlemidir. Birleştirmeler ise, farklı tablolardaki ilişkili verileri tek bir sonuç kümesinde toplamak için kullanılır.
Adım adım çözümlü örnekler
Basit bir SELECT sorgusu örneği:
SELECT musteri_adi, email FROM musteriler WHERE sehir = 'Ankara';
İki tabloyu birleştiren INNER JOIN örneği:
SELECT siparisler.siparis_id, musteriler.musteri_adi FROM siparisler INNER JOIN musteriler ON siparisler.musteri_id = musteriler.musteri_id;
LEFT JOIN kullanarak tüm müşterileri ve varsa siparişlerini listeleme:
SELECT musteriler.musteri_adi, siparisler.siparis_id FROM musteriler LEFT JOIN siparisler ON musteriler.musteri_id = siparisler.musteri_id;
Bilgi kartları
Mini test
S1.Hangi SQL komutu, veritabanından veri seçmek için kullanılır?
S2.İki tablodaki sadece eşleşen kayıtları getiren birleştirme türü hangisidir?
S3.Bir müşterinin tüm bilgilerini ve varsa siparişlerini listelemek için hangi birleştirme türü daha uygundur?
Sık yapılan hatalar
JOIN kullanmadan iki tabloyu birleştirebileceğini düşünmek. — Doğrusu: Farklı tablolardaki verileri birleştirmek için mutlaka JOIN (INNER, LEFT, RIGHT, FULL OUTER) kullanılmalıdır.
WHERE ve HAVING ifadelerini karıştırmak. — Doğrusu: WHERE ifadesi gruplamadan önce kayıtları filtrelerken, HAVING ifadesi gruplamadan sonra grupları filtreler.
Sıkça sorulan sorular
SQL'de kaç farklı JOIN türü vardır?
Temel olarak INNER JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN ve FULL OUTER JOIN olmak üzere dört ana JOIN türü bulunur. CROSS JOIN gibi farklı kullanımları da mevcuttur.
Birleştirme yaparken hangi sütunları kullanmalıyız?
Genellikle tablolar arasındaki ilişkiyi tanımlayan anahtar (primary key) ve yabancı anahtar (foreign key) sütunları kullanılır. Bu sütunlar aynı veri tipinde ve mantıksal olarak ilişkili olmalıdır.
Performans için sorguları nasıl optimize edebiliriz?
Gereksiz sütunları seçmemek (SELECT * yerine belirli sütunları belirtmek), doğru JOIN türünü kullanmak, WHERE koşullarını optimize etmek ve indekslerden yararlanmak performansı artırır.