Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

王林
王林nach vorne
2019-08-23 15:48:413703Durchsuche

Um die Erklärung des Problems zu erleichtern, erstellen Sie zunächst zwei Tabellen emp (Mitarbeiterinformationen) und dept (Informationen zur Mitarbeiterabteilung). Die Daten lauten wie folgt:

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQLIm vorherigen Artikel , wir haben eine einzelne Tabellenabfragemethode gemeinsam genutzt, aber in tatsächlichen Anwendungen befinden sich die Daten, die wir abfragen möchten, wahrscheinlich nicht in derselben Tabelle, sondern stammen aus verschiedenen Tabellen. Wenn eine Abfrage mit mehreren Tabellen keine Bedingungen hinzufügt, wird das erhaltene Ergebnis als kartesisches Produkt bezeichnet. Suchen Sie beispielsweise nach dem Namen des Mitarbeiters, dem Gehalt des Mitarbeiters und dem Namen der Abteilung.

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Sie können feststellen, dass das Ergebnis so ist: Wählen Sie den ersten Datensatz aus der ersten Tabelle aus, kombinieren Sie ihn mit allen Datensätzen in der zweiten Tabelle und nehmen Sie dann den zweiten Datensatz aus der ersten Tabelle und kombinieren Sie ihn mit allen Datensätzen in der zweiten Tabelle. Dieses Ergebnis ist bedeutungslos. Was wir brauchen, ist der Datensatz mit dem Feld emp.deptno = dept.deptno.

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Selbstverknüpfung

Selbstverknüpfung bedeutet, die Abfrage in derselben Tabelle zu verknüpfen

, um die anzuzeigen Vorgesetzter des Mitarbeiters FORD Name des Leiters

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Unterabfrage

Unterabfrage bezieht sich auf eine in andere SQL-Anweisungen eingebettete SELECT-Anweisung, auch Nesting-Abfrage genannt .

Einzeilige Unterabfrage: Das Abfrageergebnis der Unterabfrage hat nur eine Zeile

Zeigt Mitarbeiter in derselben Abteilung wie SMITH an

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Mehrzeilige Unterabfrage (in, alle, beliebig): Unterabfrage, die mehrere Datensätze zurückgibt

Fragen Sie die Namen, Jobs, Gehälter und Abteilungen von Beamten ab, die über die verfügen Gleicher Job wie die Nummer der 10 besten Abteilungen, jedoch ohne eigene Informationen von Nr. 10

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Zeigt den Namen, das Gehalt und die Abteilungsnummer der Mitarbeiter, deren Gehalt höher ist als das Gehalt aller Mitarbeiter mit der Abteilungsnummer 30

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Zeigt den Namen, das Gehalt und die Abteilungsnummer des Mitarbeiters an, dessen Gehalt höher ist als das Gehalt eines Mitarbeiters mit der Abteilungsnummer 30

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Mehrspaltige Unterabfrage: Eine Unterabfrageanweisung, die mehrere Datenspalten zurückgibt

Mitarbeiter mit derselben Abteilung und Position wie SMITH abfragen, mit Ausnahme von SMITH selbst

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Verwenden Sie die Unterabfrage in der from-Klausel

, um Mitarbeiterinformationen anzuzeigen, die über dem Durchschnittsgehalt Ihrer Abteilung liegen

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL Finden Sie Namen, Job und Gehalt der Person mit dem höchsten Gehalt in jeder Abteilung

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQLZeigen Sie die Informationen jeder Abteilung (Abteilungsname, Nummer, Adresse) und die Anzahl der Mitarbeiter an

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Es gibt zwei Methoden, die hier verwendet werden können, aber es wurde bestätigt, dass bei großen Datenmengen die Effizienz der From-Unterabfrage höher ist als die der Multi-Table-Abfrage.

Löschen Sie doppelte Datensätze in der Tabelle

Es ist bekannt, dass eine Tabelle doppelte Daten enthält.

Erstellen Sie eine leere Tabelle tmp_tt. Die Struktur Die Struktur der leeren Tabelle ist dieselbe wie die der Tabelle tt. Erstellen Sie die Tabelle tmp_tt wie tt.

Unterscheiden Sie die tt-Tabelle und importieren Sie die Daten in die leere Tabelle ;

Löschen Sie die ursprüngliche Tabelle ttdrop table tt;

Benennen Sie tmp_tt in ttalter table tmp_tt um und benennen Sie tt um;

Abfrage zusammenführen

In praktischen Anwendungen können Sie die Operatoren Union, Union All Set verwenden, um mehrere Auswahlen zusammenzuführen. Um die Ergebnisse auszuführen, können Sie

1 verwenden. Der Union-Operator wird verwendet, um die Vereinigung zweier Ergebnisse zu erhalten und dann automatisch Duplikate zu entfernen Zeilen, um Personen mit einem Gehalt von mehr als 2500 und einer Position als Manager zu finden

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

2. Union all ähnelt Union, entfernt jedoch nicht automatisch Duplikate
Zum Beispiel : ähnlich wie oder

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Fremdschlüssel

Fremdschlüssel definiert die Beziehung zwischen der Mastertabelle und der Fremdschlüsseleinschränkung werden hauptsächlich in der Slave-Tabelle definiert. Die Master-Tabelle muss einen Primärschlüssel oder einen eindeutigen Schlüssel haben. Wenn ein Fremdschlüssel definiert ist, müssen die Daten der Fremdschlüsselspalte in der Haupttabellenspalte vorhanden sein oder NULL sein.
Zum Beispiel: Erstellen Sie eine Haupttabellenklasse aus der Tabelle stu

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Detaillierte Erläuterung der Multi-Table-Abfrage von MySQL

Aus der obigen Abbildung können wir erkennen, dass die Der Primärschlüssel darf nicht null sein. Der Fremdschlüssel kann jedoch null sein und die Daten im Fremdschlüssel können nicht existieren, sind aber nicht in der Haupttabelle vorhanden.

Weitere verwandte Fragen finden Sie auf der chinesischen PHP-Website: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Multi-Table-Abfrage von MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen