Abfrage mehrerer Tabellen Verwenden Sie eine einzelne Select-Anweisung, um verwandte Abfrageergebnisse aus mehreren Tabellen abzurufen. Verknüpfungen mehrerer Tabellen werden normalerweise für übergeordnete und untergeordnete Tabellen eingerichtet, die über gegenseitige Beziehungen verfügen. 1 Querverbindung Das kartesische Produkt aller Zeilen der ersten Tabelle multipliziert mit allen Zeilen der zweiten Tabelle ergibt eine Tabelle mit Verbrauchern und Kunden: -- Tabelle „Kunden“ erstellen ( --id int Primärschlüssel auto_increment, -- Name VARCHAR(20) ungleich null, --address VARCHAR(20)nicht NULL -- ); -- CREATE-Tabellenbestellungen ( --order_namre VARCHAR(20) Primärschlüssel, -- num char(20) nicht NULL, --price int ungleich null, -- Kunden-ID int, -- Einschränkung cus_ord_fk FOREIGN Schlüssel (Kunden-ID) REFERENZEN Kunden (ID) -- ) Tragen Sie die Daten einfach selbst ein. Grammatik: Implizite Syntax (ohne Verwendung von Schlüsselwörtern): select * from customers,orders; Die Ergebnisse sind wie folgt: Explizite Syntax (mit Schlüsselwörtern): select * from customers c INNER JOIN orders o ON c.id=o.customer_id; Die beiden Laufergebnisse sind gleich, aber das kartesische Produkt ist falsch. Mit der folgenden Methode kann es korrigiert werden. 2 Innere Verbindung Weil der durch den Cross Join erhaltene Ergebnissatz falsch ist. Der Inner Join basiert daher auf dem Cross Join und listet nur die Datenzeilen in der Verbindungstabelle auf, die den Verbindungsbedingungen entsprechen. Die Datensätze, die nicht übereinstimmen, werden nicht aufgelistet. Grammatik: Implizite Syntax: Wählen Sie * aus Kunden, Bestellungen, wobei Kunden-ID = Bestellungen.Kunden-ID; Explizite Syntax: Wählen Sie * aus Kunden c INNER JOIN Bestellungen o ON c.id=o.customer_id; Die Ergebnisse sind wie folgt Wir können Programmen auch Aliase zuweisen: Wählen Sie * aus Kunden als c, Bestellungen o, wobei c.id = o.customers_id; SELECT * von Kunden als c innerer Join für Bestellungen o auf c.id=o.customers_id; 3 Äußerer Join Die interne Verbindung listet nur die Informationen aller Benutzer auf, die das Produkt gekauft haben, und listet nicht die Benutzer auf, die das Produkt nicht gekauft haben. Grammatik: Wählen Sie * aus Kunden c LEFT JOIN Bestellungen o ON c.id=o.customer_id; Right outer join: Die Tabelle rechts vom Schlüsselwort ist die Basistabelle Grammatik: Wählen Sie * aus Bestellungen o RIGHT JOIN Kunden c ON c.id=o.customer_id; 4 Unterabfragen In einigen Fällen ist die erforderliche Bedingung beim Ausführen einer Abfrage das Ergebnis einer anderen Select-Anweisung. In diesem Fall wird eine Unterabfrage verwendet. Die Abfrage (innere Abfrage), die zuerst ausgeführt wird, um Daten für die Hauptabfrage (äußere Abfrage) bereitzustellen, wird als Unterabfrage bezeichnet. Unterabfragen werden in verschachtelte Unterabfragen und korrelierte Unterabfragen unterteilt. Verschachtelte Unterabfragen: Die Ausführung der inneren Abfrage ist unabhängig von der äußeren Abfrage. Die innere Abfrage wird nur einmal ausgeführt und das Ergebnis wird nach Abschluss der Ausführung als Bedingung der äußeren Abfrage verwendet (die Unterabfrageanweisung in der verschachtelten Unterabfrage kann herausgenommen und separat ausgeführt werden.) Grammatik und Übungen: Abfrage aller Schüler, die der Lehrer mit der ID 1 unterrichtet. Wählen Sie * aus den Studenten, wobei die ID in (Wählen Sie s_id aus den Lehrer-Studenten, wobei t_id=1 ist) ist; Korrelierte Unterabfragen: Die Ausführung der internen Abfrage hängt von den Daten der externen Abfrage ab. Jedes Mal, wenn die externe Abfrage ausgeführt wird, wird auch die interne Abfrage ausgeführt. Jedes Mal wird zuerst die äußere Abfrage ausgeführt, ein Tupel in der äußeren Abfragetabelle herausgenommen, die Daten im aktuellen Tupel an die innere Abfrage übergeben und dann die innere Abfrage ausgeführt. Bestimmen Sie anhand des Ergebnisses der internen Abfrageausführung, ob das aktuelle Tupel die Where-Bedingung in der externen Abfrage erfüllt. Wenn ja, ist das aktuelle Tupel ein Datensatz, der die Anforderungen erfüllt, andernfalls erfüllt es die Anforderungen nicht. Anschließend ruft die externe Abfrage die nächsten Tupeldaten ab und führt die obigen Vorgänge aus, bis alle Tupel verarbeitet sind. Tabelle Lehrer1 erstellen( ID int Primärschlüssel auto_increment, Name char(20) nicht NULL, Betreff char(20) nicht null ); – Erstellen Sie eine Studententabelle Tabelle student1 erstellen( ID int Primärschlüssel auto_increment, Name char(20) eindeutig nicht null, Alter int null ); – Erstellen Sie eine dritte Tabelle Tabelle tea_stu erstellen( id int Primärschlüssel, Name char(20), t_id int, s_id int, Score int ungleich null, Einschränkung teacher1_id_fk Fremdschlüssel (t_id) verweist auf teacher1 (id), Einschränkung student_id_fk Fremdschlüssel (s_id) Referenzen student1 (id) ); Übung 1. Abfrage aller Schüler, die der Lehrer mit der ID 1 unterrichtet. Methode 1: Schreiben Sie es auf verschiedene Arten auf: Wähle s_id aus tea_stu, wobei t_id=1; wähle * von student1, wobei id in (2,3); Methode 2: wähle * aus student1, wobei id in (wähle s_id aus tea_stu, wobei t_id=1); Korrelierte Unterabfragen: Die Ausführung der internen Abfrage hängt von den Daten der externen Abfrage ab. Jedes Mal, wenn die externe Abfrage ausgeführt wird, wird auch die interne Abfrage ausgeführt. Jedes Mal wird zuerst die äußere Abfrage ausgeführt, ein Tupel in der äußeren Abfragetabelle herausgenommen, die Daten im aktuellen Tupel an die innere Abfrage übergeben und dann die innere Abfrage ausgeführt. Bestimmen Sie anhand des Ergebnisses der internen Abfrageausführung, ob das aktuelle Tupel die Where-Bedingung in der externen Abfrage erfüllt. Wenn ja, ist das aktuelle Tupel ein Datensatz, der die Anforderungen erfüllt, andernfalls erfüllt es die Anforderungen nicht. Anschließend ruft die externe Abfrage die nächsten Tupeldaten ab und führt die obigen Vorgänge aus, bis alle Tupel verarbeitet sind. Wählen Sie * aus tea_stu als a, wobei a.score>(wählen Sie avg(b.score) aus tea_stu als b, wobei a.s_id=b.s_id); Oben finden Sie die detaillierte Integration der MySQL-Mehrtabellenabfrage, die vom Herausgeber vorgestellt wurde. Ich hoffe, dass sie für alle hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Das automatische Porterkennungsskript von Zabbix Redis gibt das JSON-Format zurück
>>: Detaillierte Erklärung und Erweiterung von ref und reactive in Vue3
Konfigurieren Sie die Webseitenkomprimierung, um ...
Inhaltsverzeichnis 1. Einleitung: 2. Docker: 1 Be...
Inhaltsverzeichnis Mischen Mixin-Hinweis (doppelt...
Ich wurde am frühen Morgen durch einen Anruf gewe...
So verwenden Sie Iframe: Code kopieren Der Code l...
1. readonly Nur-Lese-Attribut, so dass Sie den Wer...
Was ist der Eingabetyp="Datei"? Ich glau...
Inhaltsverzeichnis 1. Installation 2. Einführung ...
Bei Verwendung eines Cloud-Servers stellen wir ma...
Erste Abfragetabellenstruktur (sys_users): WÄHLEN...
Hier ist ein Fall des Ziehens einer modalen Box. ...
Vorwort Im vorherigen Artikel wurde Hadoop instal...
Rendern Wenn Sie den im Bild unten gezeigten Effe...
Die Breite des übergeordneten Containers ist fest...
Inhaltsverzeichnis Funktionsaufrufoptimierung Fun...