MySQL-Serie Multi-Table Join Abfrage 92 und 99 Syntaxbeispiele ausführliches Tutorial

MySQL-Serie Multi-Table Join Abfrage 92 und 99 Syntaxbeispiele ausführliches Tutorial

In den letzten zwei Tagen habe ich den Themenschwerpunkt geändert und allen die Prinzipien von Pyecharts und etwas Grafikerstellung beigebracht. Heute kehren wir zur Reihe „MySQL lernen“ zurück und lernen mit Ihnen weiterhin MySQL-Datenbanken.

Die Abfrage mehrerer Tabellen ist ein Wissenspunkt, den Datenanalysten in ihrer täglichen Arbeit definitiv verwenden werden, was zeigt, wie wichtig er ist. Der heutige Artikel fasst mehrere Situationen von MySQL-Mehrtabellenabfragen umfassend zusammen. Kennen Sie die 92- und 99-Syntax von MySQL? Kennen Sie Equijoin und Non-Equijoin? Denken Sie nicht, dass Sie bestimmte Wissenspunkte nicht kennen müssen, nur weil sie selten verwendet werden. Tatsächlich ist das nicht der Fall. Spätestens nachdem andere darüber geschrieben haben, sollten Sie wissen, was sie bedeuten.

1. Kartesisches Produktphänomen

Bildbeschreibung hier einfügen

Die Ergebnisse sind wie folgt:

Bildbeschreibung hier einfügen

Die Analyse sieht wie folgt aus:
Das obige Ergebnis ist definitiv falsch. Jede Person in der linken Tabelle hat 4 Freunde. Wenn Sie sich diese 4 Datensätze genau ansehen, werden Sie feststellen, dass sie genau das Ergebnis der Übereinstimmung jedes Datensatzes in der linken Tabelle mit jedem Datensatz in der rechten Tabelle sind.
Der Grund für das kartesische Produktphänomen: Es gibt keine gültige Verbindungsbedingung zwischen den beiden Tabellen. Da Sie keine Join-Bedingung haben, kann die erste Zeile dieser Tabelle definitiv eins zu eins mit allen Zeilen der anderen Tabelle abgeglichen werden. Ebenso kann die zweite Zeile dieser Tabelle definitiv eins zu eins mit allen Zeilen der anderen Tabelle abgeglichen werden. Und so weiter, die letzte Zeile m dieser Tabelle kann auch eins zu eins mit allen Zeilen der anderen Tabelle abgeglichen werden. Wenn die andere Tabelle n Zeilen hat, muss die Anzahl der am Ende angezeigten Zeilen m*n Zeilen betragen.
Wenn Sie kein kartesisches Produktphänomen erzeugen möchten, müssen Sie effektive Tabellenverknüpfungsbedingungen hinzufügen. Im obigen Beispiel stellt die Freund-ID in der linken Tabelle nur dann ihre Freunde dar, wenn sie mit der ID auf der rechten Seite übereinstimmt.

Nach dem Hinzufügen der Tabellenverknüpfungsbedingung:

Bildbeschreibung hier einfügen

Es ist ersichtlich, dass die Anzahl der Datensätze, die schließlich durch das kartesische Produkt generiert werden, das Produkt der Daten in den beiden Tabellen ist. Wenn keine Join-Abfrage verwendet wird und die Daten in den beiden Tabellen besonders groß sind, explodiert Ihr Speicher, was schrecklich ist. Daher müssen wir lernen, Join-Abfragen zu verwenden.

2. Zusammenfassung der Wissenspunkte zur Verbindungsabfrage

1) Was ist eine Join-Abfrage?

In der tatsächlichen Entwicklung werden Daten in den meisten Fällen nicht aus einer einzelnen Tabelle abgefragt, sondern normalerweise werden mehrere Tabellen zusammen abgefragt, um das Endergebnis zu erhalten. Mit anderen Worten: Im tatsächlichen Geschäft besteht ein Unternehmen auch aus mehreren Tabellen, und unterschiedliche Informationen werden in unterschiedlichen Tabellen gespeichert. Wenn die Informationen, die wir erhalten möchten, aus mehreren Tabellen stammen, müssen Sie eine Join-Abfrage verwenden.

2) Klassifizierung von Verbindungsanfragen

① Klassifizierung nach Epoche

MySQL unterstützt keine vollständigen Verknüpfungen und das Schlüsselwort Union wird im Allgemeinen verwendet, um die vollständige Verknüpfungsfunktion zu vervollständigen. Der Cross Join in MySQL ist ein Cross Join, der selten verwendet wird und um den wir uns nicht kümmern müssen.

sq192-Standard: nur innere Verknüpfungen werden unterstützt; sq199-Standard [empfohlen]: nur innere Verknüpfungen + äußere Verknüpfungen (nur linke äußere und rechte äußere) + Kreuzverknüpfungen werden unterstützt; ② Innere Verknüpfungen nach Funktion klassifiziert: Equijoin, Non-Equijoin, Self-Join; äußere Verknüpfungen: linke äußere Verknüpfung, rechte äußere Verknüpfung, vollständige äußere Verknüpfung;

3. Erklärung der inneren Verbindung

Die Originaldaten lauten wie folgt:

Bildbeschreibung hier einfügen

1) Gleichwertige Verbindung: Das wichtigste Merkmal ist, dass die Verbindungsbedingung eine gleichberechtigte Beziehung ist.

Übung: Abfrage des Mitarbeiternamens und des entsprechenden Abteilungsnamens;

Die SQL92-Syntax lautet wie folgt: (Sie ist zu alt und wird im Allgemeinen nicht verwendet. Sie müssen nur wissen, was sie bedeutet, wenn Sie sie sehen.)

Bildbeschreibung hier einfügen

sql99-Syntax: (häufig verwendet)

Bildbeschreibung hier einfügen

2) Der Unterschied zwischen der SQL92-Syntax und der SQL99-Syntax.

 - SQL92-Syntax: wähle Ename, Dname
 von emp,dept
 wobei emp.deptno=dept.deptno;
 
- SQL99-Syntax: wähle Ename, Dname
von emp (inner) join dept
ein emp.deptno=dept.deptno;

-- Der Unterschied zwischen der Syntax von SQL92 und der Syntax von SQL99 1) Komma (",") wird durch (innerer) Join ersetzt;
2) Ersetzen Sie „wo“ durch „auf“;
Hinweis: „inner“ kann weggelassen werden. Das Schreiben von „inner“ kann die Lesbarkeit des Codes verbessern.

--Der Vorteil der SQL99-Syntax liegt darin, dass die Tabellenanbindung und die anschließende Where-Bedingungsprüfung getrennt erfolgen.
Bei der SQL92-Syntax wird „where“ für den Tabellenverknüpfungspunkt und „where“ auch für die Where-Filterung verwendet, was durcheinander und unklar ist.

3) Nicht gleichwertige Verbindung: Das größte Merkmal ist, dass die Verbindungsbedingung eine nicht gleichwertige Beziehung ist.

Bildbeschreibung hier einfügen

Übung: Ermitteln Sie die Gehaltsstufe jedes Mitarbeiters und zeigen Sie den Namen des Mitarbeiters, das Gehalt und die Gehaltsstufe an.

Bildbeschreibung hier einfügen

4) Selbstverknüpfung: Die größte Funktion besteht darin, dass eine Tabelle als zwei Tabellen betrachtet wird.

Was bedeutet es, eine Tabelle als zwei Tabellen zu behandeln? Mit anderen Worten ist ein Self-Join ein Join zwischen denselben Tabellen und die Join-Bedingungen sind unterschiedliche Felder in dieser Tabelle.

Der größte Unterschied zwischen Menschen und Maschinen besteht darin, dass Menschen die Fähigkeit haben, zu urteilen. Sie wissen, wie man verschiedene Felder einer Tabelle unterscheidet und verwendet, aber Maschinen wissen das nicht. Es handelt sich alles um dieselbe Tabelle und die Feldnamen sind alle gleich. Wie kann die Maschine also unterscheiden, welche Tabelle welche ist (für dieselbe Tabelle)?

Hierzu ist ein Alias ​​erforderlich. Für dieselbe Tabelle gebe ich ihr zwei Namen, einen A und einen B, damit die Maschine sie leicht unterscheiden kann. Wenn Sie ein Feld aus Tabelle A nehmen, ist es das „A-Feld“, und wenn Sie ein Feld aus Tabelle B nehmen, ist es das „B-Feld“.

Aufgabe: Ermitteln Sie den Vorgesetzten jedes Mitarbeiters und zeigen Sie den Namen des Mitarbeiters und den dazugehörigen Namen des Vorgesetzten an.

Bildbeschreibung hier einfügen

4. Erläuterung der externen Verbindung

Die Originaldaten lauten wie folgt:

Bildbeschreibung hier einfügen

1) Was ist ein Outer Join und worin besteht der Unterschied zu einem Inner Join?

① Innerer Join

Angenommen, die Tabellen A und B sind verbunden und es wird ein innerer Join verwendet. In diesem Fall werden alle Datensätze abgefragt, die mit den Tabellen A und B übereinstimmen. Dies ist ein innerer Join. Eine Unterscheidung zwischen der Haupttabelle und der Nebentabelle AB erfolgt nicht, die beiden Tabellen sind gleichwertig.

② Äußerer Anschluss

Angenommen, die Tabellen A und B sind über einen äußeren Join verbunden, wobei eine der beiden Tabellen AB die Primärtabelle und die andere die Sekundärtabelle ist. Die Daten der Primärtabelle werden hauptsächlich abgefragt, die Sekundärtabelle wird nebenbei abgefragt. Wenn die Daten in der Sekundärtabelle nicht mit den Daten in der Primärtabelle übereinstimmen, simuliert die Sekundärtabelle automatisch NULL, um eine Übereinstimmung herzustellen.

Die wichtigste Eigenschaft des Outer Join besteht darin, dass alle Daten der Haupttabelle bedingungslos abgefragt werden können.

2) Klassifizierung von äußeren Verknüpfungen

Es gibt eine Möglichkeit, einen Left Join als Right Join zu schreiben, und es gibt eine entsprechende Möglichkeit, einen Right Join als Left Join zu schreiben. Daher ist es beim Erlernen von MySQL nicht erforderlich, sowohl linke als auch rechte Verknüpfungen zu lernen.

Linker äußerer Join (Left Join): Gibt an, dass die Tabelle auf der linken Seite die Haupttabelle ist. Rechter äußerer Join (Right Join): Gibt an, dass die Tabelle auf der rechten Seite die Haupttabelle ist. 3) Fallanalyse

Bildbeschreibung hier einfügen

Übung: Finden Sie heraus, in welcher Abteilung keine Mitarbeiter beschäftigt sind?

Bildbeschreibung hier einfügen

Oben finden Sie den detaillierten Inhalt der ausführlichen Tutorials zu den Syntaxbeispielen für die MySQL-Reihe von Multi-Table-Join-Abfragen 92 und 99. Weitere Informationen zur MySQL-Abfragesyntax finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Zusammenfassung der häufig verwendeten Datenbank- und Tabellen-Sharding-Lösungen von MySQL
  • Die MySQL-Partitionstabelle ist nach Monaten klassifiziert
  • MySQL partitioniert vorhandene Tabellen in der Datentabelle
  • So gehen Sie nach der MySQL-Tabellenpartitionierung problemlos online
  • Spezifische Verwendung interner temporärer MySQL-Tabellen
  • Eine kurze Erläuterung, wann MySQL interne temporäre Tabellen verwendet
  • Detailliertes Beispiel zum Sammeln und Aggregieren von MySQL-Tabelleninformationen über Python
  • Umfassende Zusammenfassung der MySQL-Tabellen

<<:  So zentrieren Sie den gesamten Seiteninhalt, sodass sich die Höhe an den Inhalt anpasst und automatisch erweitert

>>:  JS verwendet Clip-Pfad, um eine dynamische Bereichs-Clipping-Funktion zu implementieren

Artikel empfehlen

Erläuterung der JavaScript-Funktionssyntax

Inhaltsverzeichnis 1. Gewöhnliche Funktionen 2. P...

Zusammenfassung der Wissenspunkte zu den Linux-Befehlen ps und pstree

Der ps-Befehl in Linux ist die Abkürzung für „Pro...

Linux verwendet den Binärmodus zur Installation von MySQL

In diesem Artikel werden die einzelnen Schritte z...

Tomcat-Quellcodeanalyse und -Verarbeitung

Inhaltsverzeichnis Vorwort 1. Endpunkt 2. Verbind...

CentOS 7.2 erstellt einen Nginx-Webserver zum Bereitstellen des Uniapp-Projekts

Panther begann als Anfänger und ich bin immer noc...

Zusammenfassung der Wissenspunkte des Datenbankindex

Inhaltsverzeichnis Erster Blick-Index Das Konzept...

Wann verwendet man Tabellen und wann CSS (Erfahrungsaustausch)

Die Haupttextseite von TW hatte früher eine Breite...

Schritte zum Bereitstellen eines Docker-Projekts in IDEA

Mittlerweile werden die meisten Projekte auf Dock...

Einführung in Abfragebefehle für gespeicherte MySQL-Prozeduren

Wie unten dargestellt: Wählen Sie den Namen aus m...

Detailliertes Tutorial zur Installation des ElasticSearch:7.8.0-Clusters mit Docker

Der ElasticSearch-Cluster unterstützt動態請求的方式und靜態...

Ein einfaches Tutorial zur Verwendung des MySQL-Protokollsystems

Inhaltsverzeichnis Vorwort 1. Fehlerprotokoll 2. ...

Über das durch die HTML-Kodierung verursachte verstümmelte Problem

Heute hat ein Student im dritten Studienjahr eine...

Bei verschachtelten MySQL-Transaktionen aufgetretene Probleme

MySQL unterstützt verschachtelte Transaktionen, a...