Einführungstutorial zum MySQL-Multitabellen-Join

Einführungstutorial zum MySQL-Multitabellen-Join

Über Verbindungen lassen sich faktische Fremdschlüssel (damit ist die Korrespondenz zwischen zwei künstlich erstellten Tabellen gemeint. FORGIEN KEY wird im Gegensatz dazu auch physischer Fremdschlüssel genannt) abfragen, aktualisieren und erstellen.

Das Wesen der Tabellenverbindung ist die inverse Einschränkung des Fremdschlüssels

Anschlussbedingungen

Verwenden Sie ON, um die Verbindungsbedingung festzulegen, oder verwenden Sie stattdessen WHERE.

Im Allgemeinen

  • EIN: Verbindungsbedingung festlegen
  • WHERE: Filtern Sie die Ergebnismengendatensätze

Das Wesen eines unbedingten JOIN-Inner-Joins ist ein kartesisches Produkt.

[INNER] JOIN innerer Join

In MySQL sind JOIN, CROSS JOIN und INNER JOIN gleichwertig.

Innerer Join bedeutet Schnittmenge und es werden nur Datensätze in den Tabellen A und B angezeigt, die die Join-Bedingungen erfüllen. Datensätze, die die Verbindungsbedingungen nicht erfüllen, werden nicht angezeigt.

SELECT Waren-ID, Warenname, Kategorienname 
VON tdb_goods 
INNER JOIN tdb_goods_cate 
EIN tdb_goods.cate_id = tdb_goods_cate.cate_id;

Verwenden Sie Inner Join, um mehrere Tabellen zu aktualisieren:

--Ändern Sie den auf Chinesisch gespeicherten Goods_cate in der Tabelle tdb_goods in die entsprechende Cate_ID in der Tabelle tdb_goods_cates, um Platz zu sparen. UPDATE tdb_goods 
INNER JOIN tdb_goods_cates
ON waren_katalog=katalogname 
SETZEN Sie Waren_Kate=Kate_ID;
--tdb_goods Der Name der Tabelle, die Sie ändern möchten --tdb_goods_cates Der zugehörige Anhang --goods_cate=cate_name Die Beziehung zwischen den entsprechenden Spalten der beiden Tabellen --goods_cate=cate_id; Wert festlegen

Äußerer Join

Inner Joins werden häufiger verwendet als Outer Joins.

Wenn ein Feld nur in einer Tabelle vorhanden ist, gibt das Feld in der anderen Tabelle NULL zurück

LEFT [OUTER] JOIN Linker äußerer Join

Zeigen Sie alle Datensätze in der linken Tabelle und Datensätze in der rechten Tabelle an, die die Verbindungsbedingungen erfüllen.

  • Wenn LEFT JOIN verwendet wird und in der linken Tabelle ein Datensatz A vorhanden ist, in der rechten Tabelle jedoch kein entsprechender Datensatz gefunden wird, enthält das zurückgegebene Ergebnis nur den entsprechenden Feldinhalt in Datensatz A und alle anderen Felder sind NULL (ähnlich wie bei RIGHT JOIN).

RIGHT [OUTER] JOIN Rechter äußerer Join

Zeigen Sie alle Datensätze in der rechten Tabelle und Datensätze in der linken Tabelle an, die die Verbindungsbedingungen erfüllen.

Verknüpfung mehrerer Tabellen

Ähnlich wie beim Verbinden zweier Tabellen

Wie zum Beispiel die Verbindung von drei Tabellen:

SELECT Waren-ID, Warenname, b.Kat.-Name, c.Markenname, Warenpreis
VON Produkten ALS 
INNER JOIN products_cate AS b 
EIN a.goods_cate = b.cate_id
INNER JOIN Produkte_Marke AS c 
EIN a.Markenname = c.Marken-ID;

Selbst beitreten

Entwerfen einer unbegrenzten Klassifizierungsdatentabelle

Es gibt sowohl übergeordnete als auch untergeordnete Klassen in derselben Tabelle, die im Wesentlichen ein Baum ist:

Sie können dieselbe Datentabelle abfragen, indem Sie eine Verbindung dazu herstellen:

--Suchen Sie den Namen, der der übergeordneten Klassen-ID entspricht. SELECT s.type_id,s.type_name,p.type_name AS parent_name
VON tdb_goods_types AS s 
LINKS JOIN tdb_waren_typen AS p 
EIN s.parent_id=p.type_id;

--Suchen Sie den Namen, der der Unterklassen-ID entspricht. SELECT p.type_id,p.type_name,s.type_name AS child_name
VON tdb_goods_types AS p
LINKS JOIN tdb_goods_types AS s
EIN p.type_id=s.parent_id;

--Finden Sie heraus, wie viele Kinder es gibt. SELECT p.type_id,p.type_name,COUNT(s.type_name) AS child_count
VON tdb_goods_types AS p
LINKS JOIN tdb_goods_types AS s
EIN p.type_id=s.parent_id 
GROUP BY p.Typname
BESTELLEN NACH p.Typ_ID;

Abfragen und Löschen mehrerer Tabellen

Hier verwenden wir einen Self-Join, um zwei Tabellen zu simulieren, doppelte Elemente in der Tabelle zu löschen und Datensätze mit kleinerer Waren-ID zu behalten.

LÖSCHEN t1 
VON tdb_goods AS t1 
LEFT JOIN(--Wählen Sie doppelte Datensätze von goods_nameSELECT goods_id,goods_name 
 VON tdb_goods 
 GROUP BY goods_name --MySQL 5.7.5 und höhere Versionen aktivieren den SQL-Modus only_full_group_by. Die ausgewählten Spalten müssen in der Gruppe sein oder aggregierte Spalten (SUM, AVG, MAX, MIN) sein. HAVING COUNT(goods_name)>=2 ist hier nicht aktiviert. 
AS t2 --Linksverbindung von t1 und t2. Tatsächlich sind auch eine innere Verbindung und eine rechte Verbindung möglich. ON t1.goods_name=t2.goods_name --Verbindungsbedingung von t1 und t2 WHERE t1.goods_id>t2.goods_id; --Wählen Sie die Datensätze aus, die t1.goods_id>t2.goods_id im LEFT JOIN-Ergebnissatz erfüllen

Zum besseren Verständnis lautet das Ergebnis von LEFT JOIN:

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Vergleich der Effizienz zwischen Einzeltabellenabfrage und Mehrtabellen-Joinabfrage in der MySql-Datenbank
  • Detaillierte Erläuterung der MySQL-Multitabellen-Joinabfrage
  • Eine kurze Diskussion über die Ausführungsdetails der Mysql Multi-Table Join-Abfrage
  • Erläuterung des MySQL-Multitabellen-Join-Abfragebeispiels
  • mysql drei Tabellen verbunden, um eine Ansicht zu erstellen
  • Ein einfaches Tutorial zur Optimierung von Tabellenverknüpfungsabfragen in MySQL
  • Grundlegendes Tutorial zu Multi-Table-Join-Abfragen in MySQL
  • MySQL und PHP Grundlagen und Anwendungsthemen: Tabellenanbindung

<<:  js+css zur Realisierung eines dreistufigen Navigationsmenüs

>>:  Eine kurze Einführung in Linux-Umgebungsvariablendateien

Artikel empfehlen

Detaillierte Schritte zur Installation von Mysql5.7.19 mit yum auf Centos7

In der Yum-Quelle von Centos7 ist standardmäßig k...

Kann Asynchronität in JavaScript „Await“ speichern?

Ich wusste vorher, dass man await verwenden muss,...

Detaillierte Erklärung des Vue-Datenproxys

Inhaltsverzeichnis 1. Worüber ich unten sprechen ...

Analysieren der Knotenereignisschleife und der Nachrichtenwarteschlange

Inhaltsverzeichnis Was ist asynchron? Warum brauc...

Verständnis von Haslaylout- und BFC-Parsing

1. haslayout und bfc sind IE-spezifische und Stand...

Wie man mit React elegant CSS schreibt

Inhaltsverzeichnis 1. Inline-Stile 2. Importmetho...

Der Unterschied zwischen HTML-Frame, Iframe und Frameset

10.4.1 Der Unterschied zwischen Frameset und Fram...

Vue+video.js implementiert Video-Wiedergabelisten

In diesem Artikel wird der spezifische Code von v...