Heim  >  Artikel  >  Datenbank  >  MySQL Advanced Join-Natural Join, Beispiele für die Verwendung externer Joins

MySQL Advanced Join-Natural Join, Beispiele für die Verwendung externer Joins

巴扎黑
巴扎黑Original
2017-05-11 10:52:041889Durchsuche

Natürliche Verknüpfung

Immer wenn Tabellen verknüpft werden, sollte es mindestens eine Spalte geben, die in mehr als einer Tabelle vorkommt (die verknüpfte Spalte). Ein Standard-Join (der im vorherigen Kapitel eingeführte Inner-Join) gibt alle Daten zurück, auch wenn dieselbe Spalte mehrmals vorkommt. Natürliche Verknüpfungen schließen Mehrfachvorkommen aus, sodass jede Spalte nur einmal zurückgegeben wird.

Wie geht das? Die Antwort lautet: Nicht das System erledigt die Aufgabe, sondern Sie selbst. Ein natürlicher Join ist ein Join, bei dem Sie nur diese eindeutigen Spalten auswählen können. Dies geschieht normalerweise durch die Verwendung von Platzhaltern ( SELECT * ) für eine Tabelle und expliziter Teilmengen für die Spalten aller anderen Tabellen. Hier ist ein Beispiel:

Eingabe:

select  c.*,o.order_num,o.order_date,oi.prod_id,oi.quantity,oi.item_price from customers as c,orders as o,orderitems as oi where c.cust_id = o,cust_id and oi.order_num = o.order_num and prod_id = 'FB';

Analyse: In diesem Beispiel werden Platzhalter nur für die erste Tabelle verwendet. Alle anderen Spalten werden explizit aufgelistet, sodass keine doppelten Spalten abgerufen werden.

Tatsächlich ist jede interne Verbindung, die wir bisher hergestellt haben, eine natürliche Verbindung, und es ist wahrscheinlich, dass wir niemals eine interne Verbindung verwenden werden, die keine natürliche Verbindung ist.


Äußere Joins

Viele Joins, die Zeilen aus einer Tabelle mit Zeilen aus einer anderen verknüpften Tabelle kombinieren. Manchmal ist es jedoch erforderlich, Zeilen einzubeziehen, zu denen keine zugehörigen Zeilen vorhanden sind. Beispielsweise müssen Sie möglicherweise Verknüpfungen verwenden, um die folgenden Aufgaben auszuführen:

1. Zählen Sie, wie viele Bestellungen jeder Kunde aufgegeben hat, einschließlich derjenigen, die noch keine Bestellung aufgegeben haben.

2. Listen Sie alle Produkte und Bestellmengen auf, einschließlich der Produkte, die noch niemand bestellt hat.

3. Berechnen Sie die durchschnittliche Verkaufsgröße, einschließlich der Kunden, die noch keine Bestellung aufgegeben haben.

Im obigen Beispiel enthält der Join Zeilen, die keine zugehörigen Zeilen in den zugehörigen Tabellen haben. Diese Art von Verknüpfung wird als externe Verknüpfung bezeichnet.

Die folgende SELECT-Anweisung ergibt einen einfachen Inner Join. Es ruft alle Kunden und deren Bestellungen ab:

Eingabe:

select customers.cust_id,orders.order_num from customers inner join orders on customers.cust_id = orders.cust_id;

Ausgabe:

MySQL Advanced Join-Natural Join, Beispiele für die Verwendung externer Joins

Analyse: Ähnlich wie bei der internen Verknüpfung im vorherigen Kapitel verwendet diese SELECT-Anweisung das Schlüsselwort OUTER JOIN, um den Verknüpfungstyp anzugeben (anstatt in WHERE angegeben zu werden). Klausel). Im Gegensatz zu einem inneren Join, der Zeilen aus zwei Tabellen verknüpft, umfasst ein äußerer Join jedoch auch Zeilen, die keine verknüpften Zeilen haben. Wenn Sie die OUTER JOIN-Syntax verwenden, müssen Sie das Schlüsselwort RIGHT oder LEFT verwenden, um die Tabelle anzugeben, die alle ihre Zeilen enthält (RIGHT bezieht sich auf die Tabelle auf der rechten Seite des OUTER JOIN und LEFT bezieht sich auf die Tabelle auf der linken Seite von). der OUTER JOIN). Das obige Beispiel verwendet LEFT OUTER JOIN, um alle Zeilen aus der linken Tabelle (Kundentabelle) der FROM-Klausel auszuwählen. Um alle Zeilen aus der rechten Tabelle auszuwählen, sollten Sie RIGHT OUTER JOIN verwenden, wie im folgenden Beispiel gezeigt:

Eingabe:

select customers.cust_id,orders.order_num from customers right outer join orders on orders.cust_id = customers.cust_id;

Ohne *=-Operator: MySQL unterstützt nicht die Verwendung der vereinfachten Zeichen *= und =*, die in anderen DBMS beliebt sind.

Arten von Outer-Joins: Es gibt zwei Grundformen von Outer-Joins: Left Outer Join und Right Outer Join. Der einzige Unterschied besteht in der Reihenfolge der zugehörigen Tabellen. Mit anderen Worten: Ein Left Outer Join kann in einen Right Outer Join umgewandelt werden, indem die Reihenfolge der Tabellen in der FROM- oder WHERE-Klausel umgekehrt wird. Daher können beide Arten von externen Verknüpfungen austauschbar verwendet werden, und es ist reine Zweckmäßigkeitssache, welche verwendet wird.


Das obige ist der detaillierte Inhalt vonMySQL Advanced Join-Natural Join, Beispiele für die Verwendung externer Joins. 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