Heim  >  Artikel  >  Datenbank  >  Vertiefendes Verständnis des erweiterten MySQL-Driftings (4)

Vertiefendes Verständnis des erweiterten MySQL-Driftings (4)

黄舟
黄舟Original
2017-03-08 13:55:521134Durchsuche

Join

Cross Join

Die einfachste Art von Join ist ein Cross-Join, bei dem Tabellen multipliziert werden, um ein Produkt mit allen Inhalten zu erstellen .
Beispiel:
select * from student,person;//Das Ergebnis ist eine Kombination der beiden Tabellen
Alle Spalten der beiden Tabellen werden kombiniert, um eine Ergebnismenge zu erzeugen, die alle möglichen Kombinationen enthält. Dieser Typ wird als Cross-Join bezeichnet und die Anzahl der Zeilen in der resultierenden Tabelle nach dem Join ist gleich dem Produkt der Anzahl der Zeilen in jeder Tabelle, die für den Join verwendet wird.
Die obige Querverbindung hat große Auswirkungen auf die Leistung des Datenbankservers. Daher ist es eine gute Wahl, die where-Klausel in der Verbindung zu verwenden, um einige Datensätze herauszufiltern.

Inner Join/Outer Join

Inner Join ist der häufigste und einheitlichste Join-Typ, da er den Abgleich jeder Tabelle erfordert, aus der jeder Teil des Joins besteht, also nicht übereinstimmende Zeilen wird aus der endgültigen Ergebnismenge ausgeschlossen
Das häufigste Beispiel für einen inneren Join ist ein Gleichheits-Join, d. h. ein Feld in der verbundenen Tabelle ist dasselbe wie das in jeder Tabelle. In diesem Fall enthält der endgültige Ergebnissatz nur Zeilen in den verbundenen Tabellen, die mit den angegebenen Feldern übereinstimmen.

Äußere Joins sind asymmetrisch, alle Zeilen von einer Seite des Joins werden in den endgültigen Datensatz einbezogen, unabhängig davon, ob sie mit Zeilen von der anderen Seite des Joins übereinstimmen
Je nachdem, auf welcher Seite des Joins sich befindet beibehalten, SQL Definiert den linken und rechten äußeren Join. Bei einem Left Outer Join werden alle Datensätze aus der Tabelle auf der linken Seite des Joins, die mit der Where-Klausel übereinstimmen, im endgültigen Ergebnissatz angezeigt. Bei einem rechten äußeren Join werden alle Datensätze aus der Tabelle auf der rechten Seite des Joins, die mit der Where-Klausel übereinstimmen, im endgültigen Ergebnissatz angezeigt.

Linker äußerer Join: erklärt als „Wählen Sie alle Zeilen aus dem linken Teil der Verbindung aus und für jede ausgewählte Zeile wird entweder ein passender Wert aus dem rechten Teil oder eine Nullzeile angezeigt.“ Dieser Join-Typ wird als Left-Join oder Left-Outer-Join bezeichnet. Right Join oder Right Outer Join ist genau das Gegenteil.

Selbstverknüpfung

Diese Art von Verknüpfung verbindet eine Tabelle mit sich selbst. Sie wird normalerweise verwendet, um Datensätze in der Tabelle abzurufen, die innere Verknüpfungen enthalten.

Zusätzlich zu Verbindungen unterstützen MySQL 4.0 und höher auch den Union-Operator, der verwendet wird, um die Ausgabe mehrerer Auswahlabfragen in einem einzigen Ergebnissatz zusammenzuführen. In den meisten Fällen wird dieser Operator verwendet, um die von einer Abfrage erzeugte Ergebnismenge einer anderen Tabelle hinzuzufügen und so eine einzige Tabelle mit allen Ergebnissen zu erstellen.

Verwenden Sie den Union-Operator, um so viele Auswahlabfragen wie möglich zu kombinieren, aber zwei Grundbedingungen müssen erfüllt sein:
Erstens muss die Anzahl der von jeder Auswahlabfrage zurückgegebenen Felder gleich sein.
Zweitens müssen die Datentypen der Felder in jeder Auswahlabfrage miteinander übereinstimmen.

Der Union-Operator entfernt automatisch doppelte Zeilen aus der kombinierten Ergebnismenge!

Unterabfrage

Where/Having-Abfrage

MySQL kann Unterabfragen in der Where-Klausel oder der Haveing-Klausel enthalten. In Klammern eingeschlossene Unterabfragen haben eine höhere Priorität als Vergleichs- und logische Operatoren, der In-Operator oder der Exists-Operator.
Sie können auch eine Unterabfrage vor einem Vergleichsoperator in einer Have-Klausel verwenden, um die von der übergeordneten Abfrage erstellten Gruppen zu filtern.

in/exists/from query

Vergleichsoperatoren gelten nur, wenn die von der Unterabfrage zurückgegebene Ergebnisspalte einen Wert enthält. Wenn die von einer Unterabfrage zurückgegebene Ergebnismenge eine Liste von Werten ist, muss der Vergleichsoperator durch den in-Operator ersetzt werden. Der

in-Operator kann erkennen, ob ein bestimmter Wert in der Ergebnismenge vorhanden ist. Wenn die Erkennung erfolgreich ist, wird die externe Abfrage ausgeführt.
Der Existens-Operator kann verwendet werden, um abzufragen, ob eine Unterabfrage Ergebnisse erzeugt hat, wodurch die externe Abfrage nur ausgeführt werden kann, wenn der Existent-Test „true“ zurückgibt.
Sie können die Unterabfrage auch in die from-Klausel einer Auswahl einfügen Die Ergebnisse werden als Tabelle ausgegeben.

Die von der inneren Abfrage generierte Ergebnistabelle wird also in der from-Klausel der äußeren Abfrage verwendet. Eine solche Tabelle wird in SQL zu einer Exporttabelle.

Es ist zu beachten, dass bei dieser Verwendung der Ergebnisse einer Unterabfrage die von der inneren Abfrage generierte Ergebnistabelle zunächst einen anderen Tabellennamen annehmen muss, da MySQL sonst nicht weiß, wie auf die darin enthaltenen Spalten verwiesen werden soll .


Das obige ist der detaillierte Inhalt vonVertiefendes Verständnis des erweiterten MySQL-Driftings (4). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn