SQL: Alt sorgular ve JOIN
Alt sorgular ve birleştirmeler, veritabanlarını yönetmek ve işlemek için standart programlama dili olan SQL'deki iki önemli kavramdır. Bu blogda, alt sorguların ve birleştirmelerin ne olduğunu, nasıl farklılık gösterdiğini ve her birinin SQL sorgularınızda ne zaman kullanılacağını keşfedeceğiz.
Alt sorgular nedir?
Alt sorgu, sorgu içindeki bir sorgudur. Bir SELECT deyimini başka bir SELECT, INSERT, UPDATE veya DELETE deyiminin veya bir CREATE VIEW deyiminin içine yerleştirmenin bir yoludur. Alt sorgular, aşağıdakiler gibi çeşitli görevleri gerçekleştirmek için kullanılabilir:
- Satırları bir koşula göre filtreleme
- Dış sorguda kullanılacak değerleri hesaplama
- Dış sorgunun bir parçası olarak tek bir değer veya birden çok değer döndürme
Birleştirme, aralarındaki ilgili sütuna dayalı olarak iki veya daha fazla tablodaki satırları birleştirmenin bir yoludur. INNER JOIN, OUTER JOIN ve CROSS JOIN gibi çeşitli birleştirme türleri vardır.
INNER JOIN, yalnızca birleştirme koşuluyla eşleşen satırları döndürür.
OUTER JOIN, birleştirme koşuluyla eşleşmeyenler de dahil olmak üzere her iki tablodaki tüm satırları döndürür. İki tür dış birleştirme vardır: LEFT JOIN ve RIGHT JOIN. SOL BİRLEŞTİRME, sol tablodaki (sorgudaki ilk tablo) tüm satırları ve sağ tablodaki eşleşen tüm satırları döndürür. SAĞ BİRLEŞTİRME, sağ tablodaki (sorgudaki ikinci tablo) tüm satırları ve sol tablodaki eşleşen tüm satırları döndürür.
CROSS JOIN, iki tablonun, her iki tablodaki tüm satırların birleşimi olan Kartezyen çarpımını döndürür.
Pratik Örnek:
Bu senaryoda, bir Hogwarts veri tabanımız var ve aşağıdaki tablolar aşağıda listelenmiştir:
- Course_table: Bu tablo, kurs adlarıyla ilgili verileri içerir ve benzersiz bir birincil anahtar kullanılarak tanımlanır.
- student_table: Bu tablo, benzersiz bir birincil anahtarla tanımlanan öğrenci adlarıyla ilgili verileri içerir.
- enrollment_table: Bu tablo, öğrenciler ile dersler arasındaki ilişkiyi kuran JOIN tablosudur. Bir öğrenci bir derse her kaydolduğunda yeni bir kayıt oluşturulur. Course_id, Course_table'dan bir kursu tanımlayan yabancı anahtardır ve student_id, student_table'dan bir öğrenciyi tanımlayan bir yabancı anahtardır.
course:
+─────+────────────────────────────────+
| id | course |
+─────+────────────────────────────────+
| 1 | Defense against the dark arts |
| 2 | Potions |
| 3 | History of magic |
+─────+────────────────────────────────+
student:
+─────+────────────────────────────────+
| id | student |
+─────+────────────────────────────────+
| 1 | Harry Potter |
| 2 | Hermione Granger |
| 3 | Ron Weasly |
| 4 | Voldemort |
| 5 | Draco Malfoy |
+─────+────────────────────────────────+
enrollment:
+─────+────────────+─────────────+
| id | course_id | student_id |
+─────+────────────+─────────────+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 3 | 2 |
| 4 | 2 | 3 |
| 5 | 3 | 4 |
| 6 | 1 | 5 |
| 7 | 3 | 1 |
| 8 | 1 | 4 |
+─────+────────────+─────────────+
Alt sorgu yaklaşımının bir örneği aşağıda listelenmiştir.
SELECT * FROM enrollment
WHERE enrollment.course_id IN (SELECT * FROM courses WHERE course_id = 1);
KATILMAK
Aşağıda listelenen, Join yaklaşımıdır.
SELECT * FROM course AS c
LEFT JOIN enrollment AS e ON c.id = e.course_id
WHERE e.course_id = 1
Alt Sorgular ve Birleştirmeler Ne Zaman Kullanılır?
Alt sorgular ve birleştirmeler, birden çok tablodan veri almak için kullanılabilir, ancak bunların farklı kullanım durumları vardır. Alt sorgular genellikle iç sorgunun sonuçlarını dış sorgunun WHERE veya HAVING yan tümcesinde kullanmak istediğinizde kullanılır. Dış sorgunun bir parçası olarak tek bir değer veya birden çok değer döndürmek istediğinizde de kullanışlıdırlar.
Birleştirmeler genellikle, aralarındaki ilgili sütuna dayalı olarak birden çok tablodan veri almak istediğinizde kullanılır. Birleştirme koşuluyla eşleşmeyenler de dahil olmak üzere her iki tablodaki tüm satırları döndürmek istediğinizde de kullanışlıdırlar.
Genel olarak, yalnızca birkaç satır döndürmeniz gerektiğinde alt sorgular daha verimli olurken, çok sayıda satır döndürmeniz gerektiğinde birleştirmeler daha verimli olur. Ancak ikisi arasındaki performans farkı, tabloların boyutuna ve sorguların karmaşıklığına bağlı olarak değişebilir.
Sonuç olarak, alt sorgular ve birleştirmeler, SQL'de birden çok tablodan veri almak için iki önemli araçtır. Alt sorgular, dış sorgunun bir parçası olarak satırları filtrelemek ve değerleri döndürmek için kullanışlıyken, birleştirmeler, ilgili bir sütuna dayalı olarak birden çok tablodaki satırları birleştirmek için kullanışlıdır. Her ikisi de benzer hedeflere ulaşmak için kullanılabilir, ancak hangisinin kullanılacağı, sorgunuzun özel gereksinimlerine bağlıdır.

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































