Detaillierte Erläuterung der Implementierungsmethode für die Datenbank-Mehrtabellenverbindungsabfrage Mit dem Join-Operator können mehrere Tabellenabfragen implementiert werden. Die Verbindung ist das Hauptmerkmal des relationalen Datenbankmodells und auch ein Merkmal, das es von anderen Arten von Datenbankverwaltungssystemen unterscheidet. In einem relationalen Datenbankverwaltungssystem muss die Beziehung zwischen den Daten beim Erstellen der Tabelle nicht bestimmt werden, und alle Informationen einer Entität werden häufig in einer Tabelle gespeichert. Beim Abrufen von Daten werden Informationen zu verschiedenen Entitäten, die in mehreren Tabellen gespeichert sind, über eine Verknüpfungsoperation abgefragt. Durch die Join-Operation erhalten Benutzer große Flexibilität und können jederzeit neue Datentypen hinzufügen. Erstellen Sie neue Tabellen für verschiedene Entitäten und fragen Sie diese später über Verknüpfungen ab. Ein Join kann entweder in der FROM-Klausel oder in der WHERE-Klausel einer SELECT-Anweisung erstellt werden. Es ist hilfreich, den Join in der FROM-Klausel anzugeben, um die Join-Operation von der Suchbedingung in der WHERE-Klausel zu unterscheiden. Daher wird diese Methode in Transact-SQL empfohlen. Die im SQL-92-Standard definierte Join-Syntax der FROM-Klausel lautet: VON Join-Tabelle Join-Typ Join-Tabelle [EIN (Beitrittsbedingung)] Die Join_Tabelle gibt den Namen der Tabelle an, die an der Join-Operation beteiligt ist. Der Join kann für dieselbe Tabelle oder für mehrere Tabellen ausgeführt werden. Der Join für dieselbe Tabelle wird auch als Self-Join bezeichnet. join_type gibt den Verbindungstyp an, der in drei Typen unterteilt werden kann: Inner Join, Outer Join und Cross Join. INNER JOIN verwendet Vergleichsoperatoren, um bestimmte Datenspalten zwischen Tabellen zu vergleicht und listet die Datenzeilen in diesen Tabellen auf, die den Verbindungsbedingungen entsprechen. Abhängig von der verwendeten Vergleichsmethode werden innere Verknüpfungen in drei Typen unterteilt: gleiche Verknüpfungen, natürliche Verknüpfungen und ungleiche Verknüpfungen. Es gibt drei Arten von äußeren Verknüpfungen: linke äußere Verknüpfung (LEFT OUTER JOIN oder LEFT JOIN), rechte äußere Verknüpfung (RIGHT OUTER JOIN oder RIGHT JOIN) und vollständige äußere Verknüpfung (FULL OUTER JOIN oder FULL JOIN). Im Gegensatz zu inneren Verknüpfungen werden bei äußeren Verknüpfungen nicht nur die Zeilen aufgelistet, die den Verknüpfungsbedingungen entsprechen, sondern auch alle Datenzeilen, die die Suchbedingungen in der linken Tabelle (linker äußerer Verknüpfung), der rechten Tabelle (rechter äußerer Verknüpfung) oder beiden Tabellen (vollständiger äußerer Verknüpfung) erfüllen. Ein Cross Join (CROSS JOIN) hat keine WHERE-Klausel. Er gibt das kartesische Produkt aller Zeilen in der verknüpften Tabelle zurück. Die Anzahl der Zeilen im Ergebnissatz entspricht der Anzahl der Zeilen in der ersten Tabelle, die die Abfragebedingungen erfüllen, multipliziert mit der Anzahl der Zeilen in der zweiten Tabelle, die die Abfragebedingungen erfüllen. Die ON-Klausel (join_condition) in der Join-Operation gibt die Join-Bedingung an, die sich aus Spalten in den verknüpften Tabellen und Vergleichsoperatoren, logischen Operatoren usw. zusammensetzt. (I) Innerer Verbund Die Inner-Join-Abfrageoperation listet die Datenzeilen auf, die der Join-Bedingung entsprechen, und verwendet Vergleichsoperatoren, um die Spaltenwerte der verbundenen Spalten zu vergleichen. Es gibt drei Arten von inneren Verknüpfungen: 1. Equi-Join: Verwenden Sie den Gleichheitszeichen-Operator (=) in der Join-Bedingung, um die Spaltenwerte der verknüpften Spalten zu vergleichen. Die Abfrageergebnisse listen alle Spalten in den verknüpften Tabellen auf, einschließlich doppelter Spalten. 2. Ungleiche Verbindung: Verwenden Sie in der Verbindungsbedingung andere Vergleichsoperatoren als den Gleichheitsoperator, um die Spaltenwerte der zu verbindenden Spalten zu vergleichen. Zu diesen Operatoren gehören >, >=, <=, <, !>, !< und <>. 3. Natürliche Verbindung: Der Gleichheitsoperator (=) wird in der Verbindungsbedingung verwendet, um die Spaltenwerte der verbundenen Spalten zu vergleichen, verwendet jedoch die Auswahlliste, um die im Abfrageergebnissatz enthaltenen Spalten anzugeben, und löscht doppelte Spalten in der verbundenen Tabelle. Im Folgenden wird beispielsweise ein Equijoin verwendet, um die Autoren und Verleger in derselben Stadt in den Tabellen „Autoren“ und „Verleger“ aufzulisten: WÄHLEN * VON Autoren als INNER JOIN Verlage als p ON a.Stadt=p.Stadt Ein weiteres Beispiel besteht darin, einen natürlichen Join zu verwenden und doppelte Spalten (Stadt und Staat) aus den Autoren- und Herausgebertabellen in der Auswahlliste zu entfernen: WÄHLEN Sie a.*,p.pub_id,p.pub_name,p.country VON Autoren als INNER JOIN Verlage als p ON a.Stadt=p.Stadt (ii) Externe Verbindung Bei einem Inner Join werden im Abfrageergebnissatz nur die Zeilen zurückgegeben, die die Abfragebedingungen (WHERE-Suchbedingungen bzw. HAVING-Bedingungen) und die Verbindungsbedingungen erfüllen. Bei Verwendung eines äußeren Join enthält der zurückgegebene Abfrageergebnissatz nicht nur die Zeilen, die die Join-Bedingungen erfüllen, sondern auch alle Datenzeilen in der linken Tabelle (linker äußerer Join), der rechten Tabelle (rechter äußerer Join) oder den beiden Randtabellen (vollständiger äußerer Join). Ein äußerer Join kann ein linker äußerer Join, ein rechter äußerer Join oder ein vollständiger äußerer Join sein. Wenn in der FROM-Klausel ein äußerer Join angegeben wird, kann dieser durch einen der folgenden Schlüsselwortsätze angegeben werden: LEFT JOIN oder LEFT OUTER JOIN; RIGHT JOIN oder RIGHT OUTER JOIN; FULL JOIN oder FULL OUTER JOIN. (1) Left Outer Join: Die Ergebnismenge eines Left Outer Join umfasst alle Zeilen der in der LEFT OUTER-Klausel angegebenen linken Tabelle, nicht nur die Zeilen, bei denen die Join-Spalten übereinstimmen. Wenn es für eine Zeile in der linken Tabelle keine entsprechende Zeile in der rechten Tabelle gibt, haben alle Auswahllistenspalten der rechten Tabelle in der zugehörigen Ergebnismengenzeile Nullwerte. (2) Rechter äußerer Join: Ein rechter äußerer Join ist der umgekehrte Join eines linken äußeren Join. Gibt alle Zeilen der rechten Tabelle zurück. Wenn es für eine Zeile in der rechten Tabelle keine entsprechende Zeile in der linken Tabelle gibt, wird für die linke Tabelle ein Nullwert zurückgegeben. (3) Vollständiger äußerer Join: Ein vollständiger äußerer Join gibt alle Zeilen sowohl aus der linken als auch aus der rechten Tabelle zurück. Wenn es für eine Zeile keine entsprechende Zeile in der anderen Tabelle gibt, enthalten die Auswahllistenspalten der anderen Tabelle NULL-Werte. Wenn zwischen den Tabellen übereinstimmende Zeilen vorhanden sind, enthält die gesamte Ergebnismengenzeile die Datenwerte aus der Basistabelle. Ein Inner Join gibt nur dann Zeilen zurück, wenn mindestens eine Zeile aus beiden Tabellen die Join-Bedingung erfüllt. Innere Verknüpfungen eliminieren Zeilen, die mit keinen Zeilen in der anderen Tabelle übereinstimmen. Ein äußerer Join gibt alle Zeilen aus mindestens einer der in der FROM-Klausel genannten Tabellen oder Ansichten zurück, die eine der WHERE- oder HAVING-Suchbedingungen erfüllen. Abgerufen werden alle Zeilen der linken Tabelle, auf die durch einen linken äußeren Join verwiesen wird, und alle Zeilen der rechten Tabelle, auf die durch einen rechten äußeren Join verwiesen wird. In einem vollständigen äußeren Join werden alle Zeilen aus beiden Tabellen zurückgegeben. Wie unten gezeigt wird ein Left Outer Join verwendet, um den Forumsinhalt und die Autoreninformationen zu verbinden: WÄHLEN Sie a.*,b.* FROM luntan LEFT JOIN Benutzertabelle als b ON a.Benutzername=b.Benutzername Im Folgenden wird ein vollständiger äußerer Join verwendet, um alle Autoren in der Stadttabelle mit allen Autoren in der Benutzertabelle sowie ihren Städten zu verknüpfen: WÄHLEN Sie a.*,b.* FROM city als FULL OUTER JOIN Benutzer als b ON a.Benutzername=b.Benutzername (III) Querverbindungen Ein Cross Join ohne WHERE-Klausel gibt das kartesische Produkt aller Zeilen in den beiden verknüpften Tabellen zurück. Die Anzahl der im Ergebnissatz zurückgegebenen Zeilen entspricht der Anzahl der Zeilen in der ersten Tabelle, die die Abfragebedingungen erfüllen, multipliziert mit der Anzahl der Zeilen in der zweiten Tabelle, die die Abfragebedingungen erfüllen. Beispielsweise gibt es in der Tabelle „Titel“ 6 Buchkategorien und in der Tabelle „Verlage“ 8 Verlage. Die Anzahl der durch den folgenden Cross Join abgerufenen Datensätze entspricht 6*8=48 Zeilen. SELECT-Typ, Pub-Name FROM Titel CROSS JOIN Verlage ORDER BY-Typ Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht oder kommen Sie zur Diskussion in unsere Community. Ich hoffe, dieser Artikel kann Ihnen helfen. Vielen Dank für Ihre Unterstützung! Das könnte Sie auch interessieren:
|
<<: Schritte zur Erstellung einer React Fiber-Struktur
>>: Die Magie des tr-Befehls beim Zählen der Häufigkeit englischer Wörter
Anwendungsszenarien: Die Seiten des Projekts müss...
Problembeschreibung Folgende Ergebnisse möchte ic...
Das im Titel angesprochene Problem lässt sich sch...
Installieren Installieren Sie den TS-Befehl globa...
Inhaltsverzeichnis 1. Bedienelemente 1.1. Element...
Als Linux-Einsteiger habe ich schon oft einfache ...
Im Frontend-Designentwurf sieht man oft Schließen...
Inhaltsverzeichnis Überblick Dateideskriptoren Sy...
Inhaltsverzeichnis Anforderungsbeschreibung: Anfo...
Installieren Sie Docker Desktop Download-Adresse:...
Arial Arial ist eine serifenlose TrueType-Schrifta...
Konfigurationsschritte 1. Überprüfen Sie, ob DNS ...
Hier sind 30 Best Practices für HTML-Anfänger. 1....
Wenn Sie einer Option das Attribut selected = &quo...
Die default_server-Direktive von nginx kann einen...