Erläuterung und Praxisbeispiele zur Verwendung der UNION-Operation in SQL

Der UNION-Operator in SQL ist ein leistungsstarkes Werkzeug, das verwendet wird, um die Ergebnisse mehrerer SELECT-Abfragen zu einem einzigen Ergebnissatz zusammenzuführen. Dies erleichtert komplexe Datenanalysen und die Erstellung von Berichten, indem Daten aus verschiedenen Tabellen oder unterschiedlichen Bedingungen derselben Tabelle zusammengeführt werden. In diesem Artikel werden die grundlegende Verwendung von UNION, die Unterschiede zwischen UNION und UNION ALL, konkrete Praxisbeispiele sowie Best Practices bei der Anwendung detailliert erläutert.

Inhaltsverzeichnis

Grundlegende Verwendung von UNION

Der UNION-Operator wird verwendet, um die Ergebnissätze von zwei oder mehr SELECT-Abfragen zu einem zusammenzuführen. Die grundlegende Syntax lautet wie folgt:

SELECT Spalte1, Spalte2, ...
FROM Tabelle1
UNION
SELECT Spalte1, Spalte2, ...
FROM Tabelle2;

Hinweise zur Verwendung

Beim Einsatz von UNION sollten Sie die folgenden Punkte beachten:

  • Die Anzahl und der Datentyp der Spalten in jeder SELECT-Abfrage müssen übereinstimmen.
  • Die Spaltennamen müssen nicht zwingend übereinstimmen, jedoch müssen die Datentypen übereinstimmen.
  • Standardmäßig entfernt UNION doppelte Zeilen. Wenn Sie doppelte Zeilen beibehalten möchten, verwenden Sie UNION ALL.

Unterschiede zwischen UNION und UNION ALL

In SQL gibt es zwei Operatoren, UNION und UNION ALL. Beide fassen die Ergebnisse mehrerer SELECT-Abfragen zusammen, weisen jedoch einige wichtige Unterschiede auf.

UNION

Der UNION-Operator entfernt doppelte Zeilen und gibt ein eindeutiges Ergebnissatz zurück. Das bedeutet, dass doppelte Zeilen im zusammengeführten Ergebnissatz als eine einzige Zeile gezählt werden.

SELECT Spalte1, Spalte2, ...
FROM Tabelle1
UNION
SELECT Spalte1, Spalte2, ...
FROM Tabelle2;

UNION ALL

Der UNION ALL-Operator gibt alle Zeilen einschließlich der doppelten Zeilen zurück. Da auch doppelte Zeilen im Ergebnissatz enthalten sind, kann die Performance im Vergleich zu UNION verbessert werden.

SELECT Spalte1, Spalte2, ...
FROM Tabelle1
UNION ALL
SELECT Spalte1, Spalte2, ...
FROM Tabelle2;

Vergleich der Anwendungsbeispiele

Sehen wir uns anhand der folgenden Tabellen den Unterschied zwischen UNION und UNION ALL an.

Tabelle 1:

idName
1Taro
2Hanako

Tabelle 2:

idName
2Hanako
3Jiro
SELECT id, Name
FROM Tabelle1
UNION
SELECT id, Name
FROM Tabelle2;

Das Ergebnis dieser Abfrage:

idName
1Taro
2Hanako
3Jiro
SELECT id, Name
FROM Tabelle1
UNION ALL
SELECT id, Name
FROM Tabelle2;

Das Ergebnis dieser Abfrage:

idName
1Taro
2Hanako
2Hanako
3Jiro

Die Verwendung von UNION ist nützlich, wenn doppelte Daten vermieden werden sollen. UNION ALL ist geeignet, wenn Sie alle Daten einschließlich der doppelten erhalten möchten oder wenn die Leistung im Vordergrund steht.

Praxisbeispiel 1: Datenzusammenführung aus verschiedenen Tabellen

Sehen wir uns ein Beispiel für die Verwendung des UNION-Operators zur Zusammenführung von Daten aus verschiedenen Tabellen an. In diesem Fall werden die Namen und Kontaktdaten aus den Tabellen „Mitarbeiter“ und „Kunden“ abgerufen, um eine Liste aller Personen zu erstellen.

Mitarbeitertabelle (employees)

employee_idnameemail
1Taro Yamadayamada@example.com
2Hanako Satosato@example.com

Kundentabelle (customers)

customer_idnameemail
1Jiro Suzukisuzuki@example.com
2Ichiro Tanakatanaka@example.com

Die Abfrage, die alle Namen und E-Mail-Adressen aus diesen Tabellen in einer Liste zusammenfasst, lautet wie folgt:

SELECT name, email
FROM employees
UNION
SELECT name, email
FROM customers;

Abfrageergebnis

Das Ergebnis dieser Abfrage ist wie folgt:

nameemail
Taro Yamadayamada@example.com
Hanako Satosato@example.com
Jiro Suzukisuzuki@example.com
Ichiro Tanakatanaka@example.com

Wie aus diesem Ergebnis ersichtlich, wurden die Namen und E-Mail-Adressen von Mitarbeitern und Kunden in einer Liste zusammengeführt. Durch die Verwendung von UNION können Sie Daten aus verschiedenen Tabellen einfach zusammenführen und verarbeiten.

Praxisbeispiel 2: Bedingte Datenzusammenführung innerhalb derselben Tabelle

Sehen wir uns ein Beispiel an, wie UNION verwendet wird, um Daten innerhalb derselben Tabelle basierend auf unterschiedlichen Bedingungen zusammenzuführen. Hier wird der Umsatz eines bestimmten Monats und der Gesamtumsatz aus einer Verkaufstabelle zusammengeführt.

Verkaufstabelle (sales)

sale_idproductsale_dateamount
1Produkt A2024-01-155000
2Produkt B2024-02-203000
3Produkt C2024-01-107000
4Produkt D2024-03-052000

Die Abfrage, die den Umsatz im Januar 2024 und den Gesamtumsatz in einem Ergebnissatz zusammenfasst, lautet wie folgt:

SELECT product, amount, 'Januar 2024' AS period
FROM sales
WHERE sale_date BETWEEN '2024-01-01' AND '2024-01-31'
UNION
SELECT product, amount, 'Gesamtzeitraum' AS period
FROM sales;

Abfrageergebnis

Das Ergebnis dieser Abfrage ist wie folgt:

productamountperiod
Produkt A5000Januar 2024
Produkt C7000Januar 2024
Produkt A5000Gesamtzeitraum
Produkt B3000Gesamtzeitraum
Produkt C7000Gesamtzeitraum
Produkt D2000Gesamtzeitraum

Wie aus diesem Ergebnis ersichtlich, können Sie durch die Zusammenführung von Daten basierend auf unterschiedlichen Bedingungen innerhalb derselben Tabelle gleichzeitig den Umsatz für einen bestimmten Zeitraum und für den gesamten Zeitraum anzeigen. Auf diese Weise können Sie mit UNION komplexe bedingte Datenzusammenführungen einfach umsetzen.

Best Practices bei der Verwendung von UNION

Im Folgenden werden Best Practices zur effektiven Nutzung des UNION-Operators erläutert. Durch Befolgung dieser Richtlinien können Sie die Leistung Ihrer Abfragen verbessern und deren Lesbarkeit erhalten.

Berücksichtigung der Leistung

Da UNION standardmäßig doppelte Zeilen entfernt, ist eine zusätzliche Verarbeitung erforderlich, die die Leistung beeinträchtigen kann. Wenn doppelte Zeilen beibehalten werden können, kann die Leistung durch die Verwendung von UNION ALL verbessert werden.

SELECT Spalte1, Spalte2, ...
FROM Tabelle1
UNION ALL
SELECT Spalte1, Spalte2, ...
FROM Tabelle2;

Überprüfung der Datentypübereinstimmung

Bei der Verwendung von UNION müssen die Anzahl und die Datentypen der Spalten in jeder SELECT-Abfrage übereinstimmen. Der Versuch, unterschiedliche Datentypen zu kombinieren, führt zu Fehlern. Stellen Sie sicher, dass die Datentypen der Spalten übereinstimmen, bevor Sie die Abfrage ausführen.

Nur erforderliche Spalten auswählen

Um die Leistung und Lesbarkeit Ihrer Abfrage zu verbessern, sollten Sie nur die erforderlichen Spalten auswählen. Das Einbeziehen unnötiger Spalten kann den Ergebnissatz komplizierter machen und die Verarbeitungszeit verlängern.

SELECT Spalte1, Spalte2
FROM Tabelle1
UNION
SELECT Spalte1, Spalte2
FROM Tabelle2;

Verwendung geeigneter Indizes

Um die Performance von UNION-Abfragen zu optimieren, ist es wichtig, geeignete Indizes zu setzen. Durch die Verwendung von Indizes kann die Datenbank die zusammengeführten Abfragen effizienter verarbeiten.

Berücksichtigung der Abfolgen der Abfragen

Um die Gesamtleistung einer UNION-Abfrage zu verbessern, sollte die Abfrage mit der besten Filterung zuerst platziert werden. Durch die Filterung möglichst vieler Daten in der ersten Abfrage wird die Last für die nachfolgenden Abfragen verringert.

Durch die Umsetzung dieser Best Practices können Sie die Leistung und Lesbarkeit von Abfragen, die den UNION-Operator verwenden, verbessern.

Zusammenfassung

Der UNION-Operator ist ein leistungsstarkes Werkzeug, um die Ergebnisse mehrerer SELECT-Abfragen zu einem Ergebnissatz zusammenzuführen. Durch das Verständnis der Unterschiede zwischen UNION und UNION ALL und die richtige Anwendung können Sie Daten effizient zusammenführen.

In diesem Artikel haben wir die grundlegende Verwendung und praxisnahe Beispiele detailliert erläutert. Zudem wurden Best Practices zur Verbesserung der Leistung und Lesbarkeit vorgestellt. Mit diesem Wissen können Sie die Effizienz Ihrer Datenbankabfragen verbessern und komplexe Datenanalysen einfacher durchführen.

Durch die effektive Nutzung von UNION können Sie die Herausforderungen bei der Datenintegration mühelos meistern und leistungsfähigere Datenbankoperationen realisieren.

Inhaltsverzeichnis