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:
Im 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.
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.
Selbstverknüpfung
Selbstverknüpfung bedeutet, die Abfrage in derselben Tabelle zu verknüpfen
, um die anzuzeigen Vorgesetzter des Mitarbeiters FORD Name des Leiters
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
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
Zeigt den Namen, das Gehalt und die Abteilungsnummer der Mitarbeiter, deren Gehalt höher ist als das Gehalt aller Mitarbeiter mit der Abteilungsnummer 30
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
Mehrspaltige Unterabfrage: Eine Unterabfrageanweisung, die mehrere Datenspalten zurückgibt
Mitarbeiter mit derselben Abteilung und Position wie SMITH abfragen, mit Ausnahme von SMITH selbst
Verwenden Sie die Unterabfrage in der from-Klausel
, um Mitarbeiterinformationen anzuzeigen, die über dem Durchschnittsgehalt Ihrer Abteilung liegen
Finden Sie Namen, Job und Gehalt der Person mit dem höchsten Gehalt in jeder Abteilung
Zeigen Sie die Informationen jeder Abteilung (Abteilungsname, Nummer, Adresse) und die Anzahl der Mitarbeiter an
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
2. Union all ähnelt Union, entfernt jedoch nicht automatisch Duplikate
Zum Beispiel : ähnlich wie oder
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
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!