mysql union comprehensive tutorial with union examples
Bu eğitimde MySQL UNION komutu, türleri, Union vs Union All ve 2 veya daha fazla sorudan gelen verileri birleştirmek için örnekler açıklanmaktadır:
MySQL UNION, birden çok SELECT sorgusundan gelen sonuçları tek bir sonuç kümesinde birleştirmek için kullanılır. Ayrıca, SELECT sorgularında tüm karmaşık sorgulara / işlemlere sahip olmak ve birleşik bir sonuç elde etmek için diğer SELECT deyimleriyle UNION gerçekleştirmek de mümkündür.
Windows'ta swf dosyaları nasıl açılır
Bir UNION ifadesinin varsayılan özelliği, yinelenen girişleri veya satırları sonuçta ortaya çıkan satır kümesinden kaldırmaktır, ancak bu, aynı zamanda UNION ALL cümlesini kullanarak yinelenen kayıtları getirmenin yollarını sağlar.
Ne öğreneceksin:
Set Teorisi Yoluyla BİRLİĞİ Anlamak
UNION operasyonu, SET Teorisi ilkelerinden çok iyi anlaşılabilir.
Aşağıdaki setlerle temsil edilen A ve B tablolarımız olduğunu ve bunların bazı örtüşen verilere sahip olduğunu (veya tamamen ilgisiz olabileceğini) varsayalım - UNION, her iki tablodaki verilerin kombinasyonunu içerecektir.
A ve B kümelerinin bazı ortak unsurlara sahip olduğu bir örnek görelim. BİRLİK, A ve B kümesindeki tüm değerleri, yinelenen değerleri çıkararak içerecektir.
Şimdi, ya A ve B kümeleri ayrıksa ve herhangi bir ortak öğe içermiyorsa? Burada da BİRLİK aynı sonucu döndürecektir.
Kümeler arasında örtüşen elemanların olduğu senaryoyu tartışalım ve yinelenen değerlerin sonuç kümesinde de görünmesini istiyoruz.
MySQL, aşağıdaki resimde gösterildiği gibi UNION ALL seçeneğini kullanarak bunu yapmanın bir yolunu sağlar.
MySQL UNION Hangi Sorunu Çözer?
MySQL UNION, 2 veya daha fazla tabloda benzer verilere sahip olduğunuzda ve ayrı ayrı tablolar için SELECT ifadelerini çalıştırmak yerine her iki tabloda bulunan verilerin birleşik bir görünümünü görmek istediğinizde kullanılır.
Örneğin - 2 tablo olduğunu varsayalım - Çalışan ve Öğrenci. Ve tüm çalışanlar ve öğrenciler için sadece bir isim, yaş ve doğum tarihine sahip olmak isteyen bir kişi veritabanı üzerinde çalışıyorsunuz.
UNION olmadan, her iki tablo için ayrı SELECT sorguları yürütmeniz ve ardından elde edilen sonuç seti ile istenen hesaplamayı gerçekleştirmeniz gerekecektir.
MySQL UNION Sözdizimi
Aşağıdaki sorgular, 2 veya 2'den fazla SELECT deyiminden oluşan bir UNION döndürür.
SELECT {column1}, {column2} FROM {table1} UNION (ALL | DISTINCT) SELECT {column3}, {column4} FROM {table2} UNION (ALL | DISTINCT) SELECT ...
Söz diziminin farklı bileşenlerini görmeye çalışalım
- Ortaya çıkan satır kümesini elde etmek için birden çok SELECT sorgusunu UNION ile birleştirmenin mümkün olduğunu görebiliriz.
- Sütun adı ve veri türleri: Birleştirmek istediğimiz sütunların aynı veya uyumlu veri türüne sahip olması gerektiğini anlamak önemlidir. Örneğin: STRING olarak 1. sütununuz varsa, 3. sütun da STRING (veya STRING uyumlu) olmalıdır.
- Sütun adları ve konumları, UNION sorgusundaki ilk SELECT ifadesinden belirlenir. Örneğin, yukarıdaki söz diziminde: sütun1 ve sütun2, sonuç kümesinde başlık sütunları olarak adlandırılır ve sütun3 ve sütun4 değerleri sırasıyla sütun1 ve sütun2'ye eşlenir.
- Bir UNION sorgusunun sonuçları varsayılan olarak yinelenen girdileri kaldırır. Örneğin, bu durumda, tam eşleşmeye sahip olan ve sütun1 ve sütun2 için aynı değerlere sahip yinelenen bir giriş varsa, bu satırlar sonuç kümesinden çıkarılır.
Kopyalar istenirse, UNION ile birlikte 'TÜMÜ' seçeneğini kullanabiliriz.
Kullanımı DISTINCT varsayılan olarak ima edilmektedir. Daha fazla okunabilirliğe sahip olmak için açıkça belirtilebileceğini lütfen unutmayın.
Örnek bir UNION sorgusu örneğini görelim.
Çalışan ve öğrenci olmak üzere her biri kişisel bilgiler içeren 2 masa olduğunu varsayalım.
CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100)); CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Şimdi, bu tabloların her ikisine de aşağıda gösterildiği gibi bazı sahte veriler girin:
INSERT INTO employee values (1,'Darren', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 20, '2000-05-12', 'TRAINEE'); ---------------------------------------------- INSERT INTO student values (1,'Akash', 22, '1998-05-17', 'COMPUTER'), (2,'Ian', 26, '1994-06-18', 'COMPUTER'), (3,'Shirley', 19, '2001-11-20', 'MECHANICAL'), (4,'Joana', 21, '1999-05-21', 'ELECTRONICS'), (5,'Kartik', 20, '2000-05-12', 'COMPUTER');
Yukarıda görebileceğiniz gibi, kasıtlı olarak isim, yaş ve doğum tarihi için aynı özelliklere sahip bir satır ekledik.
Şimdi bu 2 tablodaki verileri UNION komutlarını kullanarak nasıl birleştirebileceğimize bakalım. Her iki tablodan da kullanıcı adını ve yaşını sorgulayacağız.
Basit BİRLİK
Sorgu:
SELECT name, age FROM employee UNION SELECT name, age FROM student;
Sonuçta 9 kayıt göreceksiniz (bu, yukarıdaki sorgunun yinelenen girişi atladığı anlamına gelir).
Çıktı:
isim | yaş |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | yirmi |
Akash | 22 |
Shirley | 19 |
Joana | yirmi bir |
UNION ALL İLE BİRLİĞİ
ALL yan tümcesi ile UNION kullanılması, yinelenen girişlerin de görüntülenmesini sağlar.
Sorgu:
SELECT name, age FROM employee UNION ALL SELECT name, age FROM student;
Çıktı:
isim | yaş |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | yirmi |
Akash | 22 |
Shirley | 19 |
Joana | yirmi bir |
Kartik | yirmi |
Koşullu BİRLİK
30 yaşın altındaki çalışanların ve 25 yaşın altındaki öğrencilerin verilerini istediğimizde SELECT ifadelerine koşullar ekleyelim.
Sorgu:
SELECT name, age FROM employee where age <30 UNION SELECT name, age FROM student where age < 25;
Çıktı:
isim | yaş |
---|---|
Amit | 30 |
Abhishek | 28 |
Kartik | yirmi |
Akash | 22 |
Shirley | 19 |
Joana | yirmi bir |
Yukarıda görebileceğiniz gibi, sonuç kümesi doğrulanmış bireysel SELECT koşullarıyla birleşik sonucu içerir.
UNION Sonuçlarını Sıralama
Bir UNION sorgusunun Sonuçları varsayılan olarak sıralanmamıştır.
Ortaya çıkan kümede bulunan bir sütuna göre bir sıralama empoze etmek için, UNION komutunun sonunda bir ORDER BY yan tümcesi belirtilebilir.
Aynı Çalışan / Öğrenci verilerini kullanalım ve UNION sonuçlarını yaşa göre artan sırada sıralayalım.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY age asc
Çıktı:
isim | yaş |
---|---|
Shirley | 19 |
Kartik | yirmi |
Joana | yirmi bir |
Akash | 22 |
Ian | 26 |
Abhishek | 28 |
Darren | 32 |
Steven | 40 |
Yukarıdaki sonuç kümesi artan sırayla yaş değerlerine göre sıralanmıştır. ORDER BY Clause'deki sütunlara başvurmak için sütun takma adlarını da kullanabiliriz.
Örneğin: - Aşağıdaki gibi bir sorgu da aynı sonucu verecektir.
SELECT name as customer_name, age as customer_age FROM employee UNION SELECT name, age FROM student ORDER BY customer_age asc
ORDER BY yan tümcesini, sütun adı yerine sütun konumunu belirterek kullanmanın başka bir yolu vardır.
Örneğin: Yukarıdaki UNION sorgusunda, bu sütunların sırasıyla 1 ve 2 konumunda olduğunu ima eden ad ve yaşı seçiyoruz.
Öyleyse yaşa göre SİPARİŞ için, gerçek sütun adı yerine basitçe konumu belirleyebiliriz.
Dolayısıyla aşağıdaki sorgu da aynı sonucu verecektir.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY 2 asc
MySQL UNION Vs UNION ALL
MySQL 2 UNION çeşidi sağlar, yani BİRLİK DISTINCT ve BİRLİĞİ TÜMÜ
DISTINCT belirtilmese bile varsayılan olarak ima edildiğini lütfen unutmayın.
İkisi arasındaki en büyük fark, UNION ALL, yinelenen satırları birleştirmeye ve döndürmeye izin verirken, UNION yalnızca kopyaları kaldırarak birleştirilmiş satırları döndürür.
Aşağıdaki tablo ayrıntıları açıklamaktadır:
Parametre | BİRLİK | BİRLİĞİ TÜMÜ |
---|---|---|
Tanım | UNION DISTINCT ile eşdeğerdir - sonucu döndürürken yinelenen veri satırlarını yok sayar | Yinelenenler dahil tüm satırları döndürür |
Sözdizimi | {Table1} TARAFINDAN {columnList} 'i SEÇİN BİRLİK {Table2} TARAFINDAN {columnList} 'i SEÇİN | {Table1} TARAFINDAN {columnList} 'i SEÇİN BİRLİĞİ TÜMÜ {Table2} TARAFINDAN {columnList} 'i SEÇİN |
Veri gereksinimleri | Birleştirilen verilerin benzer veri türlerine sahip olması ve birden çok tablodan getirildiğinde aynı sırada getirilmesi gerekir | UNION ile aynı |
Sıkça Sorulan Sorular
S # 1) Union, JOIN'den daha mı hızlı?
Cevap: UNION ve JOIN'ler pratik olarak 2 farklı amaç için kullanılmaktadır.
Teknik olarak konuşursak, UNION, tek tek SELECT deyimlerinden gelen veri satırlarını birleştirdiğinden, UNION JOIN'den (özellikle büyük veri kümeleri için) çok daha hızlıdır.
S # 2) UNION ALL operatörü nedir?
Cevap: UNION'a benzer şekilde, UNION ALL operatörü de 2 SELECT sorgusu arasındaki UNION'ı döndürür, ancak fark, aynı zamanda yinelenen satırları / girişleri de içermesidir.
S # 3) UNION ve JOIN arasındaki fark nedir?
Cevap: Hem UNION hem de JOIN, 2 veya daha fazla tablodaki verileri birleştirmek için kullanılır. Ancak elde edilen sonuç kümesi ve verilerin getirilme şekli açısından çok büyük bir fark var.
JOIN ve UNION arasındaki benzerlikler ve farklılıklar aşağıdaki tabloda listelenmiştir:
BİRLİK | KATILMAK |
---|---|
Birden çok tablodaki verileri birleştirir | Birden çok tablodaki verileri birleştirir |
Verileri toplamak veya birleştirmek için herhangi bir özel koşul gerektirmez | JOIN, sonuç kümesine gelen verileri doğrulamak için gereken bir JOIN koşulu üzerinde çalışır. |
Farklı tablolardan alınan veriler, sonuç kümesinin farklı satırları olarak alınır | Farklı tablolardan alınan veriler tek satırda birleştirilir - örneğin sonuç kümesindeki bir satır, JOIN koşulu ve SELECT sorgusuna bağlı olarak tablo1'den 2 sütun, tablo 2'den 3 sütun vb. İçerebilir |
BİRLİKLER basit ve anlaşılırdır | BİRLEŞTİRMELER karmaşık koşullar gerektirir ve ihtiyaçlara bağlı olarak İÇ / DIŞ gibi birden fazla bağlantı türü kullanılabilir. |
Sonuç
Bu eğitimde, 2 veya daha fazla SELECT deyiminden gelen verileri birleştirmek için MySQL UNION kullanmayı öğrendik.
UNION deyimi, büyük farklı tablo kümelerinden benzer verileri toplamak ve ardından birleştirilmiş veriler üzerinde bir analiz yapmak için gerçekten yararlıdır.
UNION komutu ayrıca, yinelenen kayıtların alınmasını sağlayan bir ALL yan tümcesini destekler.
Önerilen Kaynaklar
- MySQL Nedir ve Neden Kullanılır?
- SQL Vs MySQL Vs SQL Server Arasındaki Fark (Örneklerle)
- İç Birleşim ve Dış Birleşim: Örneklerle Tam Fark
- MySQL JOIN Eğitimi: İç, Dış, Çapraz, Sol, Sağ ve Öz
- MySQL Kod Örnekleriyle Görünüm Öğreticisini Oluştur
- MySQL Örneklerle Tablo Eğitimi Oluşturun
- MySQL Güncelleme Beyanı Eğitimi - Sorgu Sözdizimini ve Örnekleri Güncelleme
- En İyi 40 MySQL Mülakat Soruları ve Cevapları (2021 Soru)