MySQL UNION İşlemi
MySQL’de UNION ifadesi, iki veya daha fazla SELECT sorgusunun sonuçlarını birleştirmek için kullanılır. UNION, her bir sorgunun sonucunu bir araya getirirken, sonuç kümesinde yinelenen kayıtları otomatik olarak kaldırır. Bu, sonuç kümesinde yalnızca benzersiz kayıtların bulunmasını sağlar. Kullanım biçimi genel olarak aşağıdaki gibidir:
“`sql
SELECT column1, column2, …
FROM table1
WHERE condition1
UNION
SELECT column1, column2, …
FROM table2
WHERE condition2;
“`
UNION işleminin uygulanabilmesi için birden fazla önemli koşul bulunmaktadır. Öncelikle, birleştirilecek SELECT ifadelerinin aynı sayıda sütuna ve benzer veri türlerine sahip olması gerekmektedir. İkinci olarak, her bir SELECT ifadesi için belirtilen sütunlar, sonuç kümesinde benzer pozisyonlarda yer almalıdır.
MySQL UNION ALL İşlemi
UNION ALL, UNION işlemine benzer, ancak farklı olarak yinelenen kayıtları korur. Yani, iki veya daha fazla SELECT sorgusunun sonuçları birleştirildiğinde, aynı olan kayıtlar birden fazla kez sonuç kümesinde yer alır. Kullanım biçimi aşağıdaki gibidir:
“`sql
SELECT column1, column2, …
FROM table1
WHERE condition1
UNION ALL
SELECT column1, column2, …
FROM table2
WHERE condition2;
“`
UNION ALL kullanımı, özellikle verilerin toplam sayısının önemli olduğu durumlarda tercih edilir. Her iki işlem arasındaki önemli fark, UNION’un yinelenen kayıtları kaldırmasıdır; bu, performans üzerinde olumlu veya olumsuz etkiler yaratabilir. Eğer çoğu kayıt benzersiz değilse, UNION ALL kullanmak daha hızlı bir işlem sunabilir.
Kullanım Örnekleri
Veri kümesi üzerinde UNION ve UNION ALL işlemlerinin nasıl çalıştığına dair örnekler incelendiğinde, daha iyi anlaşılabilir. Aşağıda iki basit tablo örneği verilmiştir:
Tablo: `employees`
| employee_id | name |
|————-|———–|
| 1 | John Doe |
| 2 | Jane Doe |
Tablo: `contractors`
| contractor_id | name |
|—————|—————|
| 1 | John Doe |
| 2 | Mike Smith |
İlk örnekte, UNION işlemi ile iki tablodaki isimleri birleştirmek mümkündür:
“`sql
SELECT name FROM employees
UNION
SELECT name FROM contractors;
“`
Bu sorgu sonucu:
| name |
|———–|
| John Doe |
| Jane Doe |
| Mike Smith |
İkinci örnekte ise UNION ALL işlemi kullanılarak, aynı ismin tekrar etmesine izin verilir:
“`sql
SELECT name FROM employees
UNION ALL
SELECT name FROM contractors;
“`
Bu sorgu sonucu:
| name |
|———–|
| John Doe |
| Jane Doe |
| John Doe |
| Mike Smith |
Performans Farkları
UNION işlemi, tekrarları kaldırmak için ek iş yükü gerektirdiğinden, genel olarak UNION ALL’a kıyasla daha yavaş çalışabilir. Özellikle büyük veri setleri üzerinde çalışılırken, bu durum dikkate alınmalıdır. Eğer iki veya daha fazla veri kümesinde neredeyse tüm kayıtların benzersiz olduğu biliniyorsa, UNION ALL kullanımı daha verimli olacaktır.
Sıralama İşlemi
Her iki durumda da, sonuç kümesinin sıralanması mümkündür. Sıralama işlemi, yukarıda belirtilen sorgulara ek olarak `ORDER BY` ifadesi ile yapılabilir. Örneğin, isimleri alfabetik sırayla listelemek için şu şekilde bir sorgu kullanılabilir:
“`sql
SELECT name FROM employees
UNION
SELECT name FROM contractors
ORDER BY name;
“`
Bu işlem, sonuçları isimlere göre sıralar. Kullanıcılar, böyle bir sıralama ile daha derli toplu ve okunabilir bir veri sunumuna ulaşabilirler.
Sonuç
MySQL’de UNION ve UNION ALL işlemleri, veri setlerini birleştirmek ve analiz etmek için son derece kullanışlı ve yaygın olarak kullanılan yöntemlerdir. UNION, yalnızca benzersiz kayıtları bir araya getirirken, UNION ALL tüm kayıtları, hatta tekrar edenleri de dahil eder. Kullanım tercihleri, ihtiyaçlara ve verilerin doğasına bağlı olarak değişkenlik göstermektedir. Bu nedenle, verilerin birleştirilmesi ve analiz edilmesi esnasında doğru seçimin yapılması, hem performans hem de veri bütünlüğü açısından büyük öneme sahiptir. MySQL’deki bu işlevler, veri yönetimi ve sorgulama işlemlerinde esneklik sağlayarak kullanıcıların işlerini kolaylaştırmaktadır.