Konkretes Beispiel einer MySQL-Mehrtabellenabfrage

Konkretes Beispiel einer MySQL-Mehrtabellenabfrage

1. Verwenden Sie die SELECT-Klausel, um mehrere Tabellen abzufragen

SELECT Feldname FROM Tabelle1, Tabelle2 ... WHERE Tabelle1.Feld = Tabelle2.Feld UND andere Abfragebedingungen

Wählen Sie a.id,a.name,a.adresse,a.datum,b.math,b.englisch,b.chinesisch aus tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id

Hinweis: Im obigen Code sind die beiden Tabellen mit denselben ID-Feldinformationen wie die Bedingung verknüpft. Dies sollte jedoch in der tatsächlichen Entwicklung nicht verwendet werden. Am besten verwenden Sie dazu Primär- und Fremdschlüsseleinschränkungen.

2. Verwenden Sie Tabellenaliase für Abfragen mehrerer Tabellen

wie:

Wählen Sie a.id, a.name, a.address, b.math, b.english, b.chinese aus tb_demo065 a, tb_demo065_tel b, wobei a.id = b.id und b.id = '$_POST [textid]'

In der SQL-Sprache können Sie einen Alias ​​für eine Tabelle auf zwei Arten angeben
Die erste Möglichkeit besteht darin, es durch das Schlüsselwort AS anzugeben, wie zum Beispiel

Wählen Sie a.id, a.name, a.adresse, b.math, b.englisch, b.chinesisch aus tb_demo065 als a, tb_demo065_tel als b, wobei a.id = b.id

Die zweite Methode besteht darin, den Tabellenalias direkt nach dem Tabellennamen hinzuzufügen.

Wählen Sie a.id,a.name,a.address,b.math,b.english,b.chinese aus tb_demo065 a,tb_demo065_tel b, wobei a.id = b.id 

Einige Hinweise zur Verwendung von Tabellenaliasen

  • Ein Alias ​​ist normalerweise ein verkürzter Tabellenname, der verwendet wird, um während einer Verbindung auf eine bestimmte Spalte in einer Tabelle zu verweisen. Wenn Spalten mit demselben Namen in mehreren Tabellen in einer Verbindung vorhanden sind, muss der Spaltenname mit dem Tabellennamen oder dem Tabellenalias qualifiziert werden.
  • Wenn ein Tabellenalias definiert ist, kann der Tabellenname nicht erneut verwendet werden

3. Mehrere Ergebnismengen zusammenführen

In der SQL-Sprache können Sie die Abfrageergebnisse mehrerer SELECT-Anweisungen über UNION oder ALL kombinieren. Die Anweisungen zur Verwendung dieser beiden Schlüsselwörter lauten wie folgt:

UNION: Mit diesem Schlüsselwort können die Abfrageergebnisse mehrerer SELECT-Anweisungen kombiniert und doppelte Zeilen gelöscht werden.

ALL: Mit diesem Schlüsselwort können die Abfrageergebnisse mehrerer SELECT-Anweisungen zusammengeführt werden, doppelte Zeilen werden jedoch nicht gelöscht.

Wenn Sie das Schlüsselwort UNION oder ALL verwenden, um mehrere Tabellen für die Ausgabe zu kombinieren, müssen die Abfrageergebnisse dieselbe Struktur aufweisen und die Datentypen müssen kompatibel sein. Darüber hinaus muss bei Verwendung von UNION die Anzahl der Felder in den beiden Tabellen gleich sein, da sonst die SQL-Anweisung mit einem Fehler angezeigt wird.

Beispiel: SELECT id,name,pwd FROM tb_demo067 UNION SELECT uid,price,date FROM tb_demo067_tel

Vier einfache verschachtelte Abfragen

Unterabfrage: Eine Unterabfrage ist eine SELECT-Abfrage, die einen einzelnen Wert zurückgibt und in SELECT-, INSERT-, UPDATE- und DELETE-Anweisungen oder anderen Abfrageanweisungen verschachtelt ist. Unterabfragen können überall dort verwendet werden, wo ein Ausdruck verwendet werden kann.

Wählen Sie ID, Name, Geschlecht, Datum aus tb_demo068, wobei ID in (Wählen Sie ID aus tb_demo068, wobei ID = '$_POST[test]') ist.

Innerer Join: Die Verwendung des Abfrageergebnisses als Abfragebedingung der WHERE-Klausel wird als innerer Join bezeichnet.

5. Komplexe verschachtelte Abfragen

Verschachtelte Abfragen zwischen mehreren Tabellen können mit dem Prädikat IN umgesetzt werden. Die Syntax lautet wie folgt:

test_ausdruck[NICHT] IN {

 Unterabfrage

}

Parameterbeschreibung: test_expression bezieht sich auf einen SQL-Ausdruck, Unterabfrage enthält eine Unterabfrage eines Ergebnissatzes. Das Prinzip der verschachtelten Abfrage mehrerer Tabellen: Unabhängig davon, wie viele Tabellen verschachtelt sind, muss eine Art Verbindung zwischen den Tabellen bestehen, und diese Verbindung wird durch die WHERE-Klausel hergestellt, um die Abfrage zu implementieren.

6. Anwendung verschachtelter Abfragen in Abfragestatistiken

Bei der Implementierung von Abfragen mit mehreren Tabellen können Sie die Prädikate ANY, SOME und ALL gleichzeitig verwenden. Diese Prädikate werden als quantitative Vergleichsprädikate bezeichnet und können in Verbindung mit Vergleichsoperatoren verwendet werden, um zu bestimmen, ob alle zurückgegebenen Werte die Suchbedingungen erfüllen. Die Prädikate SOME und ANY sind existenzielle Prädikate und konzentrieren sich nur darauf, ob die zurückgegebenen Werte die Suchbedingungen erfüllen. Die beiden Prädikate haben dieselbe Bedeutung und können austauschbar verwendet werden. Das Prädikat ALL wird als allgemeines Prädikat bezeichnet und kümmert sich nur darum, ob es Prädikate gibt, die die Suchanforderungen erfüllen.

Wählen Sie * aus tb_demo069_people, wobei uid in (wählen Sie deptID aus tb_demo069_dept, wobei deptName = '$_POST [Auswählen]')

Wählen Sie a.id,a.name FROM tb_demo067 AS a WHERE id<3)

  • ANY ist größer als ein Wert in der Unterabfrage
  • =ANY ist größer oder gleich einem Wert in der Unterabfrage
  • <=ANY ist kleiner oder gleich einem Wert in der Unterabfrage
  • =ANY ist gleich einem Wert in der Unterabfrage
  • !=ANY oder <>ANY ist nicht gleich einem Wert in der Unterabfrage
  • ALL Größer als alle Werte in der Unterabfrage
  • =ALL Größer oder gleich allen Werten in der Unterabfrage
  • <=ALL Kleiner oder gleich allen Werten in der Unterabfrage
  • =ALL entspricht allen Werten in der Unterabfrage
  • !=ALL oder <>ALL ist nicht gleich allen Werten in der Unterabfrage

7. Unterabfragen als abgeleitete Tabellen verwenden

Im tatsächlichen Projektentwicklungsprozess wird es häufig verwendet, um aus einer Tabelle mit relativ vollständigen Informationen eine Informationstabelle abzuleiten, die nur wenige Schlüsselfelder enthält. Dieses Ziel kann durch Unterabfragen erreicht werden, wie zum Beispiel

SELECT Leute.Name,Leute.Chinesisch,Leute.Mathematik,Leute.Englisch FROM (SELECT Name,Chinesisch,Mathematik,Englisch FROM tb_demo071) AS Leute

Hinweis: Unterabfragen sollten den folgenden Regeln folgen:

(1) Die durch den Vergleichsoperator eingeführte innere Unterabfrage enthält nur einen Ausdruck oder Spaltennamen. Die in der WHERE-Klausel der äußeren Anweisung genannten Spalten müssen mit den in der inneren Unterabfrage genannten Spalten kompatibel sein.
(2) Eine durch einen unveränderlichen Vergleichsoperator (einen Vergleichsoperator, auf den nicht die Schlüsselwörter ANY oder ALL folgen) eingeleitete Unterabfrage enthält keine GROUP BY- oder HAVING-Klausel, sofern die gruppierten oder einzelnen Werte nicht vorab festgelegt sind.
(3) Die von EXISTS eingeführte SELECT-Liste besteht normalerweise aus *, und der Spaltenname muss nicht angegeben werden
(4) Eine Unterabfrage kann ihre Ergebnisse nicht intern verarbeiten

8. Unterabfragen als Ausdrücke verwenden

SELECT (SELECT AVG(Chinesisch)FROM tb_demo071),(SELECT AVG(Englisch)FROM tb_demo071),(SELECT AVG(Mathematik)FROM tb_demo071) FROM tb_demo071

Hinweis: Wenn Sie eine Unterabfrage verwenden, ist es am besten, den Listenelementen einen Alias ​​zuzuweisen, der es Benutzern erleichtert, Tabellenelementen Werte zuzuweisen, wenn sie die Funktion mysql_fetch_array() verwenden, z. B.

SELECT (SELECT AVG(Chinesisch) FROM tb_demo071) AS yuwen,(SELECT AVG(Englisch) FROM tb_demo071) AS yingyu,(SELECT AVG(Mathe) FROM tb_demo071) AS shuxue FROM tb_demo071

9. Verwenden Sie Unterabfragen, um Daten zu verknüpfen

Wählen Sie * aus tb_demo072_student, wobei id = (Wählen Sie id aus tb_demo072_class, wobei className = '$_POST[text]')

10. Gemeinsame Abfrage mehrerer Tabellen

Durch die Verwendung von UNION in SQL-Anweisungen können Dateninformationen, die die Bedingungen in verschiedenen Tabellen erfüllen, in derselben Spalte angezeigt werden.

Beispiel: SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten

Hinweis: Bei der Verwendung von UNION sollten Sie die folgenden zwei Punkte beachten:
(1) In Anweisungen, die mit dem UNION-Operator kombiniert werden, muss die Anzahl der Ausdrücke in allen Auswahllisten gleich sein, wie zum Beispiel Spaltennamen, arithmetische Ausdrücke und Aggregatfunktionen.
(2) In jeder Abfragetabelle muss die Datenstruktur der entsprechenden Spalten identisch sein.

11. Sortieren Sie die kombinierten Ergebnisse

Aus Gründen der Kompatibilität mit UNION-Operationen dürfen nicht alle SELECT-Anweisungen eine ORDER BY-Anweisung enthalten. Es gibt jedoch eine Ausnahme: In der letzten SELECT-Anweisung muss eine ORDER BY-Klausel eingefügt werden, um die endgültige sortierte Ausgabe der Ergebnisse zu erreichen.

Beispiel: SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten ORDER BY id

Die Bedingungen für die Verwendung von UNION sind relativ streng. Daher müssen Sie bei der Verwendung dieser Anweisung darauf achten, ob die Anzahl der Elemente und die Feldtypen der beiden Tabellen identisch sind.

12 Bedingte Join-Anweisungen

SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name='Post- und Telekommunikationspresse' OR name='Maschinenindustriepresse' UNION SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name <>'Post- und Telekommunikationspresse' AND name <>'Maschinenindustrie-Nachdruckpresse' ORDER BY id

Die obige Anweisung verwendet die GROUP BY-Anweisung und die HAVING-Anweisung, um eine bedingte gemeinsame Abfrage zu implementieren. Ziel ist es, sicherzustellen, dass „People's Posts and Telecommunications Press“ und „Machinery Industry Press“ immer ganz oben auf der Liste stehen, und dann andere Verlage zu exportieren.

13. Einfache Inner-Join-Abfrage

SELECT Dateiliste FROM Tabelle1 [INNER] JOIN Tabelle2 ON Tabelle1.Spalte1 = Tabelle2.Spalte1

Unter diesen ist „filelist“ das anzuzeigende Feld, „INNER“ bedeutet, dass die Verbindung zwischen den Tabellen eine innere Verbindung ist, und „table1.column1=table2.column1“ wird verwendet, um den Verbindungszustand zwischen den beiden Tabellen anzuzeigen, beispielsweise:

Wählen Sie a.name, a.adresse, a.datum, b.chinesisch, b.mathematik, b.englisch aus tb_demo065 als INNER JOIN tb_demo065_tel als b auf a.id = b.id

14 Komplexe Inner Join-Abfrage

Komplexe Inner-Join-Abfragen basieren auf grundlegenden Inner-Join-Abfragen und fügen einige Abfragebedingungen hinzu, beispielsweise:

Wählen Sie a.name, a.adresse, a.datum, b.chinesisch, b.mathematik, b.englisch aus tb_demo065 als INNER JOIN tb_demo065_tel als b auf a.id=b.id, wobei b.id=(wählen Sie id aus tb_demo065, wobei tb_demo065.name='$_POST[text]')

Kurz gesagt besteht das Wesentliche bei der Realisierung der Zuordnung zwischen Tabellen darin, dass zwischen den beiden Tabellen gemeinsame oder identische Datenelemente vorhanden sind. Die beiden Tabellen werden über die WHERE-Klausel oder die INNER JOIN ... ON-Anweisung verbunden, um die Abfrage zu realisieren.

15. Verwenden Sie äußere Verknüpfungen, um gemeinsame Abfragen für mehrere Tabellen zu implementieren

(1) LEFT OUTER JOIN bedeutet, dass die Tabellen über einen Left Join miteinander verbunden sind, der auch als LEFT JOIN abgekürzt werden kann. Da er auf der linken Tabelle basiert, spricht man auch von einem Left Join. Dabei werden alle Informationen der linken Tabelle ausgegeben, während in der rechten Tabelle nur Informationen ausgegeben werden, die die Bedingungen erfüllen. Für Informationen, die die Bedingungen nicht erfüllen, wird NULL zurückgegeben.
Beispiel: SELECT a.name,a.address,b.math,b.english FROM tb_demo065 AS A LEFT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id

(2) RIGHT OUTER JOIN bedeutet, dass die Tabellen durch einen Right Join miteinander verbunden sind, der auch als RIGHT JOIN abgekürzt werden kann. Er basiert auf der Tabelle auf der rechten Seite und wird daher als Right Join bezeichnet. Alle Informationen in der rechten Tabelle werden ausgegeben, während in der linken Tabelle nur die Informationen ausgegeben werden, die die Bedingungen erfüllen. Für Informationen, die die Bedingungen nicht erfüllen, wird NULL zurückgegeben.
Beispiel: Wählen Sie a.name, a.address, b.math, b.english aus tb_demo065 als rechten äußeren Join tb_demo065_tel als b auf a.id = b.id

16. Verwenden Sie die Schlüsselwörter IN oder NOTIN, um den Bereich einzuschränken

Beispiel: SELECT * FROM tb_demo083 WHERE Code IN (SELECT Code FROM tb_demo083 WHERE Code ZWISCHEN '$_POST[text1]' UND '$_POST[text2]')

Mit IN kann eine Abfrage innerhalb eines Bereichs angegeben werden. Wenn Sie eine Abfrage außerhalb eines bestimmten Bereichs durchführen müssen, können Sie stattdessen NOT IN verwenden.

17. Korrelierte Unterabfragen eingeführt durch IN

Beispiel: SELECT * FROM tb_demo083 WHERE Code IN (SELECT Code FROM tb_demo083 WHERE Code = '$_POST[Text]')

18. Verwenden der HAVING-Anweisung zum Filtern gruppierter Daten

Die HAVING-Klausel wird verwendet, um Suchbedingungen für Gruppen oder Aggregate anzugeben. HAVING wird normalerweise mit der GROUP BY-Klausel verwendet. Wenn die SQL-Anweisung keine GROUP BY-Klausel enthält, verhält sich HAVING genauso wie die WHERE-Klausel.

Beispiel: SELECT name,math FROM tb_demo083 GROUP BY id HAVING math > '95'

Dies ist das Ende dieses Artikels über die spezifischen Beispiele für MySQL-Mehrtabellenabfragen. Weitere relevante Inhalte zu MySQL-Mehrtabellenabfragen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Fallstudie zur MySQL-Mehrtabellenabfrage
  • Detaillierte Klassifizierung von MySQL-Mehrtabellenabfragen
  • Vergleich der Effizienz zwischen Einzeltabellenabfrage und Mehrtabellen-Joinabfrage in der MySql-Datenbank
  • MySql-Multitabellenabfragetransaktion und DCL
  • Detaillierte Erläuterung der MySQL-Multitabellen-Joinabfrage
  • MySQL-Abfragemechanismus für mehrere Tabellen

<<:  HTML-Tabellen-Markup-Tutorial (42): horizontales Ausrichtungsattribut der Tabellenüberschrift ALIGN

>>:  JavaScript-Programmierung durch Lernen der Positionierung des Schwerpunktalgorithmus in Matlab

Artikel empfehlen

JavaScript-Ereigniserfassungs-Blubbern und Erfassungsdetails

Inhaltsverzeichnis 1. Ereignisablauf 1. Konzept 2...

Lösung für die in Firefox oder IE nicht ermittelte Spannweite

Code kopieren Der Code lautet wie folgt: <html...

Implementierungsprinzip und Konfiguration der MySql Master-Slave-Replikation

Die Trennung von Lese- und Schreibzugriffen in Da...

Beispiel für die Bereitstellung von MySQL auf Docker

Inhaltsverzeichnis 1 Was ist eine Container-Cloud...

Detaillierte Erklärung des Responsive-Prinzips von Vue3

Inhaltsverzeichnis Überprüfung der responsiven Pr...

Wir zeigen Ihnen einen Trick, um einen Textvergleich unter Linux durchzuführen

Vorwort Während des Schreibens des Codes werden w...

So verstehen Sie das Ref-Attribut von React genau

Inhaltsverzeichnis Überblick 1. Erstellen eines R...

Lösung für Linux, das nicht alle Befehle unterstützt

Was soll ich tun, wenn Linux nicht alle Befehle u...

Linux-Datei-/Verzeichnisberechtigungen und Eigentümerverwaltung

1. Übersicht über Dateiberechtigungen und Eigentu...

So erstellen Sie eine Baidu-Totlink-Datei

Baidu definiert zwei Arten von toten Linkformaten:...

Zusammenfassung der HTML-Wissenspunkte für das Frontend (empfohlen)

1. HTML-Übersicht htyper Textauszeichnungssprache...

Responsive Webdesign lernen (2) — Können Videos responsiv gemacht werden?

Rezension der vorherigen Folge: Gestern haben wir...