In SQL werden die UNION
, INTERSECT
und EXCEPT
den Operatoren verwendet, um die Ergebnisse von zwei oder mehr ausgewählten Aussagen zu kombinieren. Jeder Bediener verfügt über eine eindeutige Funktion und ein Anwendungsfall:
UNION : Dieser Operator wird verwendet, um die Ergebnissätze von zwei oder mehr ausgewählten Anweisungen in einem einzigen Ergebnissatz zu kombinieren. Es entfernt doppelte Zeilen aus dem Endergebnis, es sei denn, UNION ALL
wird verwendet, einschließlich Duplikaten. Die Struktur der Auswahlanweisungen muss gleich sein, was bedeutet, dass sie die gleiche Anzahl von Spalten haben müssen, und die entsprechenden Spalten müssen kompatible Datentypen haben.
Syntax :
<code class="sql">SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2;</code>
Schnittpunkt : Dieser Bediener gibt nur die Zeilen zurück, die den Ergebnismengen beider Auswahlanweisungen gemeinsam sind. Wie bei UNION
müssen die ausgewählten Aussagen die gleiche Struktur haben.
Syntax :
<code class="sql">SELECT column1, column2 FROM table1 INTERSECT SELECT column1, column2 FROM table2;</code>
Außer : Auch in einigen Datenbanksystemen als MINUS
bezeichnet, gibt dieser Bediener alle Zeilen aus der ersten Auswahlanweisung zurück, die in der zweiten Auswahlanweisung nicht vorhanden sind. Auch hier müssen die Auswahlanweisungen strukturell kompatibel sein.
Syntax :
<code class="sql">SELECT column1, column2 FROM table1 EXCEPT SELECT column1, column2 FROM table2;</code>
Die wichtigsten Unterschiede zwischen diesen Operatoren basieren darauf, wie sie mit den Daten aus mehreren Auswahlanweisungen umgehen:
UNION ALL
verwendet werden). Es wird verwendet, wenn Sie Daten aus verschiedenen Quellen zusammenfassen möchten, in denen doppelte Einträge beseitigt werden sollten. Zusammenfassend kombiniert sich UNION
kombiniert und kann möglicherweise Daten entlarven, INTERSECT
gemeinsame Daten und EXCEPT
einzigartige Daten von einem in der anderen nicht gefundenen Satz.
Beispiel für Gewerkschaft : Angenommen, Sie verwalten eine Datenbank mit zwei Tabellen, employees
und contractors
, die sowohl Namen als auch Abteilungen enthalten. Wenn Sie eine vollständige Liste aller Mitarbeiter des Unternehmens ohne Duplikate wünschen, können Sie UNION
verwenden:
<code class="sql">SELECT name, department FROM employees UNION SELECT name, department FROM contractors;</code>
Beispiel : Vorstellen Sie sich vor, Sie verfolgen die Teilnahme an zwei verschiedenen Veranstaltungen, die in event1_attendees
und event2_attendees
gespeichert sind. Um herauszufinden, wer an beiden Veranstaltungen teilgenommen hat, können Sie sich INTERSECT
:
<code class="sql">SELECT attendee_id FROM event1_attendees INTERSECT SELECT attendee_id FROM event2_attendees;</code>
Außer Beispiel : Wenn Sie Kunden finden möchten, die ein Konto haben, aber noch nie eine Bestellung erteilt haben und diese in customers
bzw. orders
gespeichert sind, können Sie EXCEPT
verwenden:
<code class="sql">SELECT customer_id FROM customers EXCEPT SELECT customer_id FROM orders;</code>
Die Optimierung von Abfragen, die UNION
, INTERSECT
oder EXCEPT
verwenden, können die Leistung erheblich verbessern. Hier sind einige Tipps:
UNION ALL
anstelle von UNION
. UNION ALL
ist schneller, da sie nicht nach Duplikaten suchen und entfernen müssen.WHERE
Klauseln innerhalb der einzelnen SELECT
vor der Verwendung von UNION
, INTERSECT
oder EXCEPT
. Dies reduziert die Datenmenge, die von diesen Operatoren verarbeitet wurden.SELECT
Anweisungen verwendeten Spalten ordnungsgemäß indiziert sind. Indizes können das Abrufen von Daten erheblich beschleunigen, insbesondere in großen Tabellen.UNION
anstelle von UNION ALL
verwenden, wenn Sie keine Duplikate entfernen müssen, kann dies Ihre Anfrage unnötig verlangsamen. Beurteilen Sie immer, ob DISTINCT
erforderlich ist.SELECT
von Komponenten abhängt, optimieren Sie jeden Teil der Abfrage einzeln. Durch die Befolgen dieser Optimierungsstrategien können Sie die Leistung Ihrer SQL -Abfragen verbessern, die UNION
, INTERSECT
oder EXCEPT
Betreiber verwenden.
Das obige ist der detaillierte Inhalt vonWie benutze ich Union, Schnittpunkt und außer Betreibern in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!