1. Unterabfrage MySQL 4.1 und höher unterstützen Unterabfragen Unterabfrage: Eine Abfrage, die in einer anderen Abfrage verschachtelt ist. Die Rolle der Unterabfrage: 1. Filter: Beispiel 1: Abrufen der IDs aller Kunden, die den Artikel TNT2 bestellt haben
Im Allgemeinen gibt es keine Begrenzung für die Anzahl der Unterabfragen, die in der WHERE-Klausel verschachtelt werden können. In der Praxis können jedoch aufgrund von Leistungseinschränkungen nicht zu viele Unterabfragen verschachtelt werden. Beispiel 2: Gibt eine Liste der Kunden zurück, die das Produkt TNT2 bestellt haben ![]() Eine effizientere Möglichkeit zum Abfragen dieses Beispiels ist die Verwendung eines Join: ![]() Hinweis: Die Details zur Verbindung werden weiter unten zusammengefasst. 2. Erstellen Sie ein berechnetes Feld: Korrelierte Unterabfrage: Eine Unterabfrage, die eine äußere Abfrage beinhaltet. Diese Syntax muss verwendet werden, wenn der Spaltenname mehrdeutig sein könnte. ![]() Zusammenfassen: 2. Tabelle verbinden Join-Tabellen sind eine der leistungsstärksten Funktionen von SQL 1. Einige relevante Grundwissensreserven: Relationale Tabelle: Stellt sicher, dass Informationen auf mehrere Tabellen aufgeteilt werden, eine Tabelle für jeden Datentyp. Tabellen sind über einige gemeinsame Werte miteinander verbunden (relational im relationalen Design). Es spart Zeit und Speicherplatz und erleichtert die Änderung und Aktualisierung von Daten. Daher ist die Skalierbarkeit relationaler Datenbanken viel besser als die nicht-relationaler Datenbanken. Ein Join ist keine physische Einheit. Er existiert nicht in der eigentlichen Datenbanktabelle. Der Join wird von MySQL nach Bedarf hergestellt und bleibt für die Dauer der Abfrageausführung bestehen. 2. Grundanschluss: Beispiel 1: ![]() Die beiden Tabellen werden mithilfe der WHERE-Klausel korrekt verknüpft: Die WHERE-Klausel weist MySQL an, die Vend_ID in der Tabelle „Vendors“ mit der Vend_ID in der Tabelle „Products“ abzugleichen. Hinweis: Beim Verweisen auf Spalten, die mehrdeutig sein könnten, müssen Sie vollständig qualifizierte Spaltennamen verwenden (Tabellen- und Spaltennamen durch einen Punkt getrennt). Kartesisches Produkt: Das Ergebnis, das von einer Tabellenbeziehung ohne Join-Bedingung zurückgegeben wird. Die Anzahl der abgerufenen Zeilen entspricht der Anzahl der Zeilen in der ersten Tabelle multipliziert mit der Anzahl der Zeilen in der zweiten Tabelle. Wird manchmal auch als Gabelung bezeichnet. Beispiel 2: Anzeige der Artikel in der Bestellnummer 20005 ![]() Sie sollten sicherstellen, dass alle Verknüpfungen eine WHERE-Klausel haben, da MySQL sonst viel mehr Daten zurückgibt als gewünscht. Equi-Join: Basiert auf einem Gleichheitstest zwischen zwei Tabellen, auch als Inner Join bekannt. (Die am häufigsten verwendete Verbindungsmethode) Beispiele: ![]() Die ANSI-SQL-Spezifikation bevorzugt die INNER JOIN-Syntax. Obwohl es tatsächlich einfacher ist, Verknüpfungen mit der WHERE-Klausel zu definieren, stellt die Verwendung einer expliziten Verknüpfungssyntax sicher, dass Sie die Verknüpfungsbedingung nicht vergessen, was manchmal die Leistung beeinträchtigen kann. 3. Erweiterte Verbindung: Beispiel 1: Einer Tabelle einen Alias zuweisen (dasselbe wie einer Spalte einen Alias zuweisen) ![]() Hinweis: Tabellenaliase werden nur während der Abfrageausführung verwendet. Im Gegensatz zu Spaltenaliasen werden Tabellenaliase nicht an den Client zurückgegeben. Einer der Hauptgründe für die Verwendung von Tabellenaliasen besteht darin, dass man in einer einzigen SELECT-Anweisung mehr als einmal auf dieselbe Tabelle verweisen kann. Beispiel 2: Abfrage anderer Artikel, die vom Lieferanten des Artikels mit der Produktions-ID DTNTR hergestellt wurden ![]() Bei der obigen Lösung handelt es sich um einen Self-Join, der normalerweise als äußere Anweisung verwendet wird, um die beim Abrufen von Daten aus derselben Tabelle verwendete Unterabfrageanweisung zu ersetzen. Dieses Beispiel kann auch mit einer Unterabfrage gelöst werden. Obwohl das Endergebnis dasselbe ist, kann ein Join manchmal viel schneller verarbeitet werden als eine Unterabfrage. Beim Lösen eines Problems können Sie zwei Ansätze ausprobieren, um zu ermitteln, welcher besser funktioniert. Natürlicher Join: Eliminieren Sie mehrfache Vorkommen, sodass jede Spalte nur einmal zurückgegeben wird. Im Allgemeinen sind die von uns verwendeten internen Verbindungen natürliche Verbindungen. Beispiel 3: Natürliche Verbindung ![]() Natürliche Verknüpfungen werden normalerweise durch die Verwendung eines Platzhalters (SELECT *) für eine Tabelle und eine explizite Teilmenge der Spalten aller anderen Tabellen durchgeführt. Äußerer Join: Ein Join schließt Zeilen ein, denen in der zugehörigen Tabelle keine Zeilen zugeordnet sind. Beispiel 4: Alle Kunden abrufen, auch die ohne Bestellungen ![]() Die Verwendung ähnelt dem Inner Join und das Schlüsselwort OUTER JOIN wird verwendet, um den Join-Typ anzugeben. Im Gegensatz zu einem inneren Join, der Zeilen aus zwei Tabellen verknüpft, schließt ein äußerer Join jedoch auch Zeilen ein, für die es keine verknüpften Zeilen gibt. Es gibt zwei grundlegende Formen von äußeren Verknüpfungen: linke äußere Verknüpfung und rechte äußere Verknüpfung. 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 von OUTER JOIN und LEFT bezieht sich auf die Tabelle auf der linken Seite von OUTER JOIN). Das obige Beispiel verwendet LEFT OUTER JOIN, um alle Zeilen aus der Tabelle auf der linken Seite der FROM-Klausel (der Kundentabelle) auszuwählen. Beispiel 5: Abrufen aller Kunden und der Anzahl der von jedem Kunden aufgegebenen Bestellungen (einschließlich der Kunden, die keine Bestellungen aufgegeben haben) ![]() Aggregatfunktionen können bequem mit verschiedenen Verknüpfungstypen verwendet werden. Verwenden von Joins und Join-Bedingungen:
3. Kombinierte Abfrage Kombinierte Abfrage: Führen Sie mehrere Abfragen (mehrere SELECT-Anweisungen) aus und geben Sie die Ergebnisse als einzigen Abfrageergebnissatz zurück. Diese kombinierten Abfragen werden oft als Union- oder zusammengesetzte Abfragen bezeichnet. Warum brauchen wir kombinierte Abfragen?
1. Erstellen Sie eine kombinierte Abfrage Schlüsselwörter: UNION-Operator Beispiel 1: Holen Sie sich eine Liste aller Artikel, deren Preis kleiner oder gleich 5 ist, und schließen Sie alle von den Lieferanten 1001 und 1002 hergestellten Artikel ein (unabhängig vom Preis). ![]() UNION weist MySQL an, zwei SELECT-Anweisungen auszuführen und die Ausgabe in einem einzigen Abfrageergebnissatz zu kombinieren. Diese Lösung entspricht der Lösung where prod_price<=5 OR vend_id in(1001,1002); und es sind folgende Regeln zu beachten:
In einigen einfachen Fällen kann die Verwendung von UNION komplexer sein als die Verwendung einer WHERE-Klausel. Bei komplexeren Filterbedingungen oder beim Abrufen von Daten aus mehreren Tabellen (anstatt aus einer einzigen Tabelle) kann die Verwendung von UNION den Vorgang jedoch vereinfachen. Hinweis: UNION erfüllt fast immer dasselbe wie mehrere WHERE-Bedingungen. UNION ALL ist eine Form von UNION, die die Arbeit erledigt, die die WHERE-Klausel nicht erledigen kann. Wenn wirklich alle übereinstimmenden Zeilen für jede Bedingung angezeigt werden müssen (einschließlich doppelter Zeilen), müssen Sie UNION ALL anstelle von WHERE verwenden. Beispiel 2: Sortieren kombinierter Abfrageergebnisse ![]() Wenn Sie UNION zum Kombinieren von Abfragen verwenden, kann nur eine ORDER BY-Klausel verwendet werden und diese muss nach der letzten SELECT-Anweisung stehen. Für den Ergebnissatz gibt es keine Situation, in der ein Teil auf eine Weise und ein anderer Teil auf eine andere Weise sortiert ist. Daher sind mehrere ORDER BY-Klauseln nicht zulässig. Die ORDER BY-Klausel sortiert alle von allen SELECT-Anweisungen zurückgegebenen Ergebnisse. Oben finden Sie die detaillierte Integration von MySQL-Unterabfragen (verschachtelte Abfragen), Verknüpfungstabellen und kombinierten Abfragen, die vom Editor eingeführt wurden. Ich hoffe, dass es für alle hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Tutorial zum Upgrade, zur Installation und Konfiguration des Supervisors auf Centos 6.5
>>: Detaillierte Erklärung des Vue Notepad-Beispiels
Es gab bereits einen Artikel über den Ausführungs...
mysql hat versehentlich Daten gelöscht Verwenden ...
1. Datensicherung 1. Verwenden Sie den Befehl mys...
Lassen Sie mich Ihnen zuerst das Effektbild zeige...
Inhaltsverzeichnis 1. In die Grube fallen 2. Verg...
Hintergrund Das Agile-Modell wird häufig verwende...
Confluence ist kostenpflichtig, kann aber für die...
Inhaltsverzeichnis Abfrage zum Verbinden mehrerer...
Vorwort Jedes Mal, wenn Sie Docker verwenden, um ...
Flex(彈性布局) in CSS kann das Layout einer Webseite ...
Vererbung von Kompositionen Kombinationsvererbung...
1. Einleitung Ich habe zuvor einen Artikel geschr...
MySQL auf Groß-/Kleinschreibung eingestellt Windo...
Ich werde die Probleme aufzeichnen, die während d...
Vorwort Die Lösung für das Problem, dass Elemente...