SQL evreninde, birden çok sorgudan gelen verileri birleştirme yeteneği temel bir gereksinimdir ve SQL bunu gerçekleştirmek için UNION ve UNION ALL gibi güçlü işlevler sunar.
Göreceğiniz gibi, SQL'de UNION ve UNION ALL işlevleri arasındaki ince farkları anlamak, verimli veri sorgulama ve yönetimi için zorunludur. Bu eğitim, SQL sorgularınızı optimize etmenize yardımcı olmak için eşlik eden veri kümelerini kullanarak temel benzerliklerini, farklarını ve kullanım senaryolarını açıklar.
Kısa Cevap: SQL UNION vs. UNION ALL
Temel fark, UNION'ın yinelenen kayıtları kaldırması, UNION ALL'ın ise tüm yinelenenleri dahil etmesidir. Bu ayrım yalnızca sorgu sonucundaki satır sayısını değiştirmekle kalmaz, aynı zamanda performansı da etkiler.
Özellik
UNION
UNION ALL
Yinelenenler
Yinelenen kayıtları kaldırır
Tüm kayıtları tutar (yinelenenler dahil)
Performans
Daha yavaş (Yinelenenleri bulmak için veriyi sıralamak/karma oluşturmak gerekir)
Daha hızlı (Veriyi doğrudan sonuca ekler)
İşlem
Kümeler Kuramı (Matematiksel Birleşim)
Ekleme / Sonuçları Yığma
İki örnek tablo düşünelim: employees_2023 ve employees_2024, iki farklı yıla ait çalışan kayıtlarını temsil ediyor.
Şimdi, iki tablomuzu UNION işlevini kullanarak birleştirelim.
SELECT employee_id, name, department FROM employees_2023
UNIONSELECT employee_id, name, department FROM employees_2024;Altyapı:
employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Bu sonuçta, yinelenen kayıtlar kaldırılmıştır. Şimdi bunu UNION ALL kullandıktan sonra elde ettiğimiz sonuçla karşılaştıralım.
SELECT employee_id, name, department FROM employees_2023
UNIONALLSELECT employee_id, name, department FROM employees_2024;Altyapı:
employee_id
name
department
1
Alive
HR
2
Bob
IT
3
Charlie
Finance
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Bu sonuçta, tüm kayıtlar dahil edilir ve yinelenenler kaldırılmaz.
SQL'de UNION nedir?
UNION işlevi, iki veya daha fazla SELECT sorgusunun sonuçlarını tek bir sonuç kümesinde birleştirir ve yinelenen satırları kaldırır. UNION içindeki her bir SELECT ifadesinin aynı sayıda sütuna sahip olması gerekir. Ayrıca veri türleri benzer olmalı ve sütunlar da aynı sırada yer almalıdır. İşlevi anlamak için aşağıda iki örnek tablo oluşturalım.
Yukarıdaki kod, bu eğitimde kullanacağımız iki tabloyu, sırasıyla sales_team ve support_team tablolarını oluşturacaktır. Tabloları aşağıdaki kodla görüntüleyebilirsiniz.
Bunlar, her birinde üçer kayıt bulunan küçük tablolardır ve sütun adları kendini açıklayıcıdır. Artık iki tablomuzu oluşturduğumuza göre UNION işlevini uygulayalım.
SELECT employee_id, employee_name
FROM sales_team
UNIONSELECT employee_id, employee_name
FROM support_team;Altyapı:
UNION işlevinden çıkan sonuç. Görsel: Yazar
3 değerini alan yinelenen employee_id girdisinin kaldırıldığını görebilirsiniz.
SQL'de UNION için Kullanım Senaryoları Nelerdir?
UNION işlevinin yaygın kullanım senaryoları şunlardır.
Farklı Tablolardan Sonuçları Birleştirme: Birden fazla tablodan veri birleştirip yinelenen kayıtların olmadığından emin olmak istediğinizde UNION başvurulacak işlemdir.
Farklı Veri Kaynaklarını İşleme:UNION, farklı veri kaynaklarından gelen tabloları birleştirirken kullanışlıdır.
Sorgular Arasında Yinelenenleri Kaldırma: Birleştirilen sonuç kümesinin benzersiz olmasını istediğinizde UNION kullanın.
SQL'de UNION ALL nedir?
UNION ALL işlevi, iki veya daha fazla SELECT sorgusunun sonuçlarını, tüm yinelenen satırlar dahil olacak şekilde birleştirir. Yinelenenleri kaldırma zahmetine girmediği için bu işlev UNION'dan daha hızlıdır.
SELECT employee_id, employee_name
FROM sales_team
UNIONALLSELECT employee_id, employee_name
FROM support_team;Altyapı:
UNION ALL işlevinden çıkan sonuç. Görsel: Yazar
Bu durumda, yinelenen girdilerin tekrarlandığını ve kaldırılmadığını görebilirsiniz.
SQL'de UNION ALL için Kullanım Senaryoları Nelerdir?
UNION ALL işlevinin yaygın kullanım senaryoları şunlardır.
Yinelenenlerle Birlikte Sonuçları Birleştirme: Birden fazla sorgudan gelen sonuçları birleştirirken tüm yinelenen satırları korumanız gerektiğinde UNION ALL kullanın.
Performans Hususları:UNION ALL, yinelenenleri kaldırma gibi ek bir adıma ihtiyaç duymadığı için UNION işlevinden daha zaman etkilidir.
Farklı Dönemlerden Verileri Birleştirme: Farklı dönemlerden veya kaynaklardan veri birleştirirken ve yinelenen girdileri korumanız gerektiğinde UNION ALL tercih edilir.
Raporlama ve Analiz: Yinelenenler dahil her bir kaydın gerekli olduğu raporlama amaçları için UNION ALL uygundur.
UNION ve UNION ALL: Benzerlikler ve Farklar
Benzerliklerin ve farkların bir özet tablosunu oluşturalım.
Özellik
UNION
UNION ALL
Yinelenen satırlar
Kaldırılır
Dahil edilir
Performans
Daha yavaş
Daha hızlı
Kullanım Durumu
Benzersiz kayıtlara ihtiyaç duyduğunuzda
Tüm kayıtlara ihtiyaç duyduğunuzda
Sonuç Boyutu
Daha küçük
Daha büyük
SQL Diyalektlerinde UNION ve UNION ALL Söz Dizimi Farkları
Temel söz dizimi farklı SQL diyalektlerinde aynı kalsa da, platforma bağlı olarak küçük farklılıklar vardır. Koda bakarsanız, SQL Server, Oracle, MySQL, PostgreSQL veya BigQuery gibi çoğu platformda kod aşağıda gösterilene benzer görünecektir.
SELECT employee_id, employee_name
FROM sales_team
UNIONALLSELECT employee_id, employee_name
FROM support_team;Altyapı:
Bu SQL diyalektlerindeki temel komutlar aynı kalır, ancak bazı nüanslar ve farklar bulunur:
NULL'ların ve Sıralamaların (Collation) İşlenmesi: Farklı SQL diyalektleri, NULL değerleri ve metin sıralamaları için farklı kurallara sahip olabilir.
Performans Optimizasyonları: Performans optimizasyonları ve yürütme verimliliği değişiklik gösterebilir.
Hata İşleme ve Uyarılar: Bu işlevler kullanılırken farklı diyalektler hataları ve uyarıları farklı biçimde ele alabilir.
Platforma Özgü İşlev ve Özellikler: Bazı SQL diyalektleri, daha karmaşık senaryolar için UNION ve UNION ALL ile birlikte kullanılabilecek ek işlevler veya özellikler sunabilir.
Dağıtık bir ortamda çalışan PySpark söz konusu olduğunda komut anlamlı ölçüde farklıdır. Aşağıda, yukarıda oluşturduğumuz iki tabloyu içeren iki veri çerçevesinin adlarının df1 ve df2 olduğunu varsayarak verilen kod bulunmaktadır. :
UNION ve UNION ALL güçlü olmakla birlikte söz dizimi konusunda katıdır. Sorgunuz bir hata döndürüyorsa, muhtemelen şu üç altın kuraldan birini ihlal ediyordur.
1. Sütun Sayısı Uyumsuzluğu
Kullanıcıların en sık karşılaştığı hata sütun sayısının uyuşmamasıdır. İki veri kümesini birleştirmek için tabloların "şeklinin" özdeş olması gerekir. 3 sütunlu bir tabloyu 2 sütunlu bir tablonun üzerine yığamazsınız.
Hata:
-- This will fail because the column counts do not matchSELECT employee_id, name, department
FROM employees_2023
UNIONSELECT employee_id, name
FROM employees_2024;Altyapı:
Çözüm: Her iki SELECT ifadesinin de tam olarak aynı sayıda sütun istediğinden emin olun. İkinci tabloda veri eksikse (ör. department), sayıları eşleştirmek için yer tutucu olarak NULL seçebilirsiniz:
SELECT employee_id, name, department FROM employees_2023
UNIONSELECT employee_id, name,NULLas department FROM employees_2024;Altyapı:
2. Veri Türü Uyumluluğu
SQL sonuçları konuma göre birleştirir, sütun adına göre değil. İlk sorgunuzdaki birinci sütunun veri türü, ikinci sorgunuzdaki birinci sütunun veri türüyle eşleşmeli (veya uyumlu) olmalıdır.
Hata: Sütunların sırasını yanlışlıkla değiştirirseniz, SQL bir Sayı (ID) ile bir Metni (Ad) üst üste koymaya çalışır ve bu da veri türü dönüştürme hatasına yol açar.
-- This fails because Column 1 (ID - INT) cannot combine with Column 1 (Name - VARCHAR)SELECT employee_id, name FROM employees_2023
UNIONSELECT name, employee_id FROM employees_2024;Altyapı:
Çözüm:SELECT ifadelerinin her birinde sütunların tam olarak aynı sırada listelendiğini, UNION içinde her zaman doğrulayın.
3. ORDER BY Sınırlamaları
ORDER BY ifadesinin nereye yerleştirileceği sıkça kafa karıştırır. Bir UNION işlemi içindeki alt sorguları ayrı ayrı sıralayamazsınız; yalnızca nihai birleşik sonucu sıralayabilirsiniz.
Hata: Nihai sorgudan önce ORDER BY kullanmak söz dizimi hatası verir.
-- INCORRECT SYNTAXSELECT employee_id, name FROM employees_2023
ORDERBY employee_id -- You cannot sort here!UNIONSELECT employee_id, name FROM employees_2024;Altyapı:
Çözüm:ORDER BY ifadesini sorgunuzun en sonuna yerleştirin. Bu, sıralamayı tüm birleşik sonuç kümesine uygular.
-- CORRECT SYNTAXSELECT employee_id, name FROM employees_2023
UNIONSELECT employee_id, name FROM employees_2024
ORDERBY employee_id;-- Sorts the final resultAltyapı:
Son Düşünceler
SQL kullanarak verileri verimli şekilde yönetmek için UNION ile UNION ALL'ın uygulamasını anlamak esastır. UNION yalnızca benzersiz kayıtları seçerken, UNION ALL hepsini seçer; bu da performansı ve sonuç kümesinin boyutunu etkiler. Özel gereksinimleriniz için uygun işlevi seçmek üzere bu bilgiyi kullanın.
Daha fazla öğrenmek için aşağıdaki kaynakları incelemeyi düşünebilirsiniz:
SQL'e Giriş: İlişkisel veritabanları oluşturmayı ve SQL kullanarak sorgulamayı öğrenin.
SQL Temelleri: Verinizle etkileşim kurmak ve sorgulamak için gereken temel SQL becerilerini edinin.
SQL Associate Sertifikası: Bir veritabanından uygun verileri çıkararak ve bunları yaygın veri sorularını yanıtlamak için kullanarak SQL yeteneğinizi gösterin.
Orta Düzey SQL: Bu uygulamalı kursla, verileri kendi SQL kodunuzla analiz etmek için bugün bilmeniz gereken her şeyi öğreneceksiniz.
Veri bilimi, yapay zeka, analitik ve veri stratejisi alanlarında deneyimli bir profesyonel.
Sıkça Sorulan Sorular
SQL UNION ve UNION ALL arasındaki temel fark nedir?⌄
UNION yinelenen kayıtları kaldırırken, UNION ALL tüm yinelenenleri içerir.
UNION ve UNION ALL arasında performans farkı var mı?⌄
Evet, UNION genellikle daha yavaştır çünkü yinelenenleri kaldırır.
UNION ALL'ın UNION'a tercih edildiği belirli kullanım durumları var mı?⌄
UNION ALL, raporlama ve analiz gibi yinelenenler dahil tüm kayıtlara ihtiyaç duyduğunuz durumlarda tercih edilir.
SQL UNION'ı UNION ALL yerine ne zaman kullanmalıyım?⌄
Yinelenenler olmadan birleştirilmiş bir sonuç kümesine ihtiyacınız olduğunda UNION kullanın.
Farklı SQL diyalektleri UNION ve UNION ALL kullanımını nasıl etkiler?⌄
Temel söz dizimi tutarlı olsa da, performans, NULL'ların işlenmesi ve sıralama (collation) konularında SQL diyalektleri arasında küçük farklılıklar olabilir.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
SQL evreninde, birden çok sorgudan gelen verileri birleştirme yeteneği temel bir gereksinimdir ve SQL bunu gerçekleştirmek için
UNIONveUNION ALLgibi güçlü işlevler sunar.Göreceğiniz gibi, SQL'de
UNIONveUNION ALLişlevleri arasındaki ince farkları anlamak, verimli veri sorgulama ve yönetimi için zorunludur. Bu eğitim, SQL sorgularınızı optimize etmenize yardımcı olmak için eşlik eden veri kümelerini kullanarak temel benzerliklerini, farklarını ve kullanım senaryolarını açıklar.Kısa Cevap: SQL UNION vs. UNION ALL
Temel fark,
UNION'ın yinelenen kayıtları kaldırması,UNION ALL'ın ise tüm yinelenenleri dahil etmesidir. Bu ayrım yalnızca sorgu sonucundaki satır sayısını değiştirmekle kalmaz, aynı zamanda performansı da etkiler.İki örnek tablo düşünelim:
employees_2023veemployees_2024, iki farklı yıla ait çalışan kayıtlarını temsil ediyor.employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
employee_id
name
department
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Şimdi, iki tablomuzu
UNIONişlevini kullanarak birleştirelim.employee_id
name
department
1
Alice
HR
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Bu sonuçta, yinelenen kayıtlar kaldırılmıştır. Şimdi bunu
UNION ALLkullandıktan sonra elde ettiğimiz sonuçla karşılaştıralım.employee_id
name
department
1
Alive
HR
2
Bob
IT
3
Charlie
Finance
2
Bob
IT
3
Charlie
Finance
4
David
Marketing
Bu sonuçta, tüm kayıtlar dahil edilir ve yinelenenler kaldırılmaz.
SQL'de UNION nedir?
UNIONişlevi, iki veya daha fazlaSELECTsorgusunun sonuçlarını tek bir sonuç kümesinde birleştirir ve yinelenen satırları kaldırır.UNIONiçindeki her birSELECTifadesinin aynı sayıda sütuna sahip olması gerekir. Ayrıca veri türleri benzer olmalı ve sütunlar da aynı sırada yer almalıdır. İşlevi anlamak için aşağıda iki örnek tablo oluşturalım.Yukarıdaki kod, bu eğitimde kullanacağımız iki tabloyu, sırasıyla
sales_teamvesupport_teamtablolarını oluşturacaktır. Tabloları aşağıdaki kodla görüntüleyebilirsiniz.sales_team tablosundaki kayıtlar. Görsel: Yazar
support_team tablosundaki kayıtlar. Görsel: Yazar
Bunlar, her birinde üçer kayıt bulunan küçük tablolardır ve sütun adları kendini açıklayıcıdır. Artık iki tablomuzu oluşturduğumuza göre
UNIONişlevini uygulayalım.UNION işlevinden çıkan sonuç. Görsel: Yazar
3değerini alan yinelenenemployee_idgirdisinin kaldırıldığını görebilirsiniz.SQL'de UNION için Kullanım Senaryoları Nelerdir?
UNIONişlevinin yaygın kullanım senaryoları şunlardır.Farklı Tablolardan Sonuçları Birleştirme: Birden fazla tablodan veri birleştirip yinelenen kayıtların olmadığından emin olmak istediğinizde
UNIONbaşvurulacak işlemdir.Farklı Veri Kaynaklarını İşleme:
UNION, farklı veri kaynaklarından gelen tabloları birleştirirken kullanışlıdır.Sorgular Arasında Yinelenenleri Kaldırma: Birleştirilen sonuç kümesinin benzersiz olmasını istediğinizde
UNIONkullanın.SQL'de UNION ALL nedir?
UNION ALLişlevi, iki veya daha fazlaSELECTsorgusunun sonuçlarını, tüm yinelenen satırlar dahil olacak şekilde birleştirir. Yinelenenleri kaldırma zahmetine girmediği için bu işlevUNION'dan daha hızlıdır.UNION ALL işlevinden çıkan sonuç. Görsel: Yazar
Bu durumda, yinelenen girdilerin tekrarlandığını ve kaldırılmadığını görebilirsiniz.
SQL'de UNION ALL için Kullanım Senaryoları Nelerdir?
UNION ALLişlevinin yaygın kullanım senaryoları şunlardır.UNION ALLkullanın.UNION ALL, yinelenenleri kaldırma gibi ek bir adıma ihtiyaç duymadığı içinUNIONişlevinden daha zaman etkilidir.UNION ALLtercih edilir.UNION ALLuygundur.UNION ve UNION ALL: Benzerlikler ve Farklar
Benzerliklerin ve farkların bir özet tablosunu oluşturalım.
Özellik
UNION
UNION ALL
Yinelenen satırlar
Kaldırılır
Dahil edilir
Performans
Daha yavaş
Daha hızlı
Kullanım Durumu
Benzersiz kayıtlara ihtiyaç duyduğunuzda
Tüm kayıtlara ihtiyaç duyduğunuzda
Sonuç Boyutu
Daha küçük
Daha büyük
SQL Diyalektlerinde UNION ve UNION ALL Söz Dizimi Farkları
Temel söz dizimi farklı SQL diyalektlerinde aynı kalsa da, platforma bağlı olarak küçük farklılıklar vardır. Koda bakarsanız, SQL Server, Oracle, MySQL, PostgreSQL veya BigQuery gibi çoğu platformda kod aşağıda gösterilene benzer görünecektir.
Bu SQL diyalektlerindeki temel komutlar aynı kalır, ancak bazı nüanslar ve farklar bulunur:
NULLdeğerleri ve metin sıralamaları için farklı kurallara sahip olabilir.UNIONveUNION ALLile birlikte kullanılabilecek ek işlevler veya özellikler sunabilir.Dağıtık bir ortamda çalışan PySpark söz konusu olduğunda komut anlamlı ölçüde farklıdır. Aşağıda, yukarıda oluşturduğumuz iki tabloyu içeren iki veri çerçevesinin adlarının
df1vedf2olduğunu varsayarak verilen kod bulunmaktadır. :SQL UNION Kullanırken 3 Kural ve Yaygın Hatalar
UNIONveUNION ALLgüçlü olmakla birlikte söz dizimi konusunda katıdır. Sorgunuz bir hata döndürüyorsa, muhtemelen şu üç altın kuraldan birini ihlal ediyordur.1. Sütun Sayısı Uyumsuzluğu
Kullanıcıların en sık karşılaştığı hata sütun sayısının uyuşmamasıdır. İki veri kümesini birleştirmek için tabloların "şeklinin" özdeş olması gerekir. 3 sütunlu bir tabloyu 2 sütunlu bir tablonun üzerine yığamazsınız.
Hata:
Çözüm: Her iki
SELECTifadesinin de tam olarak aynı sayıda sütun istediğinden emin olun. İkinci tabloda veri eksikse (ör.department), sayıları eşleştirmek için yer tutucu olarakNULLseçebilirsiniz:2. Veri Türü Uyumluluğu
SQL sonuçları konuma göre birleştirir, sütun adına göre değil. İlk sorgunuzdaki birinci sütunun veri türü, ikinci sorgunuzdaki birinci sütunun veri türüyle eşleşmeli (veya uyumlu) olmalıdır.
Hata: Sütunların sırasını yanlışlıkla değiştirirseniz, SQL bir Sayı (ID) ile bir Metni (Ad) üst üste koymaya çalışır ve bu da veri türü dönüştürme hatasına yol açar.
Çözüm:
SELECTifadelerinin her birinde sütunların tam olarak aynı sırada listelendiğini,UNIONiçinde her zaman doğrulayın.3. ORDER BY Sınırlamaları
ORDER BYifadesinin nereye yerleştirileceği sıkça kafa karıştırır. BirUNIONişlemi içindeki alt sorguları ayrı ayrı sıralayamazsınız; yalnızca nihai birleşik sonucu sıralayabilirsiniz.Hata: Nihai sorgudan önce
ORDER BYkullanmak söz dizimi hatası verir.Çözüm:
ORDER BYifadesini sorgunuzun en sonuna yerleştirin. Bu, sıralamayı tüm birleşik sonuç kümesine uygular.Son Düşünceler
SQL kullanarak verileri verimli şekilde yönetmek için
UNIONileUNION ALL'ın uygulamasını anlamak esastır.UNIONyalnızca benzersiz kayıtları seçerken,UNION ALLhepsini seçer; bu da performansı ve sonuç kümesinin boyutunu etkiler. Özel gereksinimleriniz için uygun işlevi seçmek üzere bu bilgiyi kullanın.Daha fazla öğrenmek için aşağıdaki kaynakları incelemeyi düşünebilirsiniz: