Erweiterte MySQL-Datenbankabfrage und Mehrtabellenabfrage

Erweiterte MySQL-Datenbankabfrage und Mehrtabellenabfrage

MySQL-Abfrage für mehrere Tabellen

Hinzufügen eines Arbeitsblatts

-- Benutzertabelle (Benutzer)
CREATE TABLE `Benutzer`(
	`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT 'Benutzer-ID (Primärschlüssel)',
	`Benutzername` VARCHAR(50) COMMENT 'Benutzername', 
	`Alter` CHAR(3) COMMENT 'Alter des Benutzers'
);

-- Bestellungen
Tabelle „Bestellungen“ erstellen (
	`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT 'Bestell-ID (Primärschlüssel)',
	`Preis` DOPPELKOMMENTAR 'Bestellpreis',
	`user_id` INT COMMENT 'Benutzer-ID (Fremdschlüssel)'
);

-- Fügen Sie einer vorhandenen Tabelle einen Fremdschlüssel hinzu. Die Syntax lautet wie folgt: alter table table name add constraint [Fremdschlüsselname] foreign key (Fremdschlüsselfeld) verweist auf übergeordnete Tabelle (Primärschlüsselfeld);
ALTER TABLE-Aufträge ADD CONSTRAINT user_fk FOREIGN KEY (Benutzer-ID) REFERENCES `Benutzer` (ID);

-- Daten zur Benutzertabelle hinzufügen INSERT INTO USER VALUES(1,'第一',11);
INSERT INTO USER VALUES(2,'Benutzerwert',12);
INSERT INTO USER VALUES(3,'Benutzerwerte',33);
IN BENUTZERWERTE EINFÜGEN (4, 'Benutzerwert', 24);
IN BENUTZERWERTE EINFÜGEN (5, 'Benutzer', 17);
INSERT INTO USER VALUES(6,'Benutzerwerte',36);
IN BENUTZERWERTE EINFÜGEN (7,'null',18);
IN BENUTZERWERTE EINFÜGEN (8, 'Benutzerwert', NULL);

-- Daten in die Auftragstabelle einfügen INSERT INTO orders VALUES(111,1314,3);
INSERT INTO orders VALUES(112,122,3);
INSERT INTO orders VALUES(113,15,4);
INSERT INTO orders VALUES(114,315,5);
INSERT INTO orders VALUES(115,1014,NULL);
INSERT INTO orders VALUES(116,666,6);
INSERT INTO orders VALUES(117,1111,1);
INSERT INTO orders VALUES(118,8888,NULL);

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Kartesisches Produkt

  • In der Mathematik wird das kartesische Produkt (auch direktes Produkt genannt) zweier Mengen X und Y als X × Y ausgedrückt, wobei das erste Objekt ein Mitglied von X und das zweite Objekt ein Mitglied aller möglichen geordneten Paare von Y ist. (Kartesisches Produkt) Baidu Enzyklopädie
  • Was ist das kartesische Produkt?
SELECT * FROM `Benutzer`, `Bestellungen`;

Bildbeschreibung hier einfügen

  • Die in der obigen Abbildung enthaltenen Daten sind für uns Programmierer nutzlos.
  • Wie eliminieren wir also das kartesische Produkt? Um doppelte Daten zu entfernen, sind Primär- und Fremdschlüsseleinschränkungen erforderlich.
SELECT * FROM `Benutzer` AS u, `Bestellungen` AS o WHERE u.`id`=o.`user_id`;

Bildbeschreibung hier einfügen

1. Innerer Join

1.1 Implizite innere Verbindung

  • Mehrere Tabellennamen erscheinen direkt nach „from“, was einen impliziten inneren Join darstellt
  • Wählen Sie * aus Tabelle A, Tabelle B, wobei a.id = b.a_id;
SELECT * FROM `Benutzer` AS u, `Bestellungen` AS o WHERE u.`id`=o.`user_id`;

Bildbeschreibung hier einfügen

1.2 Inner Join anzeigen (empfohlen)

  • Verwenden Sie zum Verknüpfen von Tabellen den Inner Join, gefolgt von „Ein“ und „Bedingungen“. (inneres kann weggelassen werden)
  • Wählen Sie * aus Tabelle A, innerer Join zwischen Tabelle B und a.id = b.a_id;
  • Abfrage von Benutzer- und Bestelldaten Erwachsener;
SELECT * FROM „Benutzer“ u JOIN „Bestellungen“ o ON u. „id“=o. „user_id“ WHERE Alter >= 18;

Bildbeschreibung hier einfügen

2. Äußerer Join

  • Externe Links können alle Daten einer einzelnen Tabelle anzeigen, einschließlich Null;

2.1 Richtige externe Links

  • Alle Daten in der Tabelle rechts anzeigen
  • Verwenden Sie den rechten äußeren Join, um die Tabellen zu verknüpfen, gefolgt von „on“ und „conditions“. (äußeres kann weggelassen werden)
  • Wählen Sie * aus Tabelle A den rechten äußeren Join für Tabelle B auf a.id=b.a_id;
SELECT * FROM „Benutzer“ u RIGHT JOIN „Bestellungen“ o ON u. „id“=o. „user_id“;

Bildbeschreibung hier einfügen

Linke Tabellendaten (Benutzer)

Bildbeschreibung hier einfügen

Die Daten in der rechten Tabelle (Bestellungen)

Bildbeschreibung hier einfügen

2.2 Linker Außenlink (empfohlen)

  • Alle Daten in der linken Tabelle anzeigen
  • Verwenden Sie den linken äußeren Join, um Tabellen zu verknüpfen, gefolgt von „Ein“ und „Bedingungen“. (äußeres kann weggelassen werden)
  • Wählen Sie * aus Tabelle A, linker äußerer Join, Tabelle B auf a.id=b.a_id;
SELECT * FROM `Benutzer` u LEFT JOIN `Bestellungen` o ON u.`id`=o.`user_id`;

Bildbeschreibung hier einfügen

Linke Tabellendaten (Benutzer)

Bildbeschreibung hier einfügen

Die Daten in der rechten Tabelle (Bestellungen)

Bildbeschreibung hier einfügen

3. Unterabfrage

  • Unterabfragen, verschachteltes Gefühl. Die Abfrageergebnisse werden als Bedingungen für eine weitere Abfrage verwendet.
  • Abfrage der Bestelldaten des ältesten Benutzers
SELECT * FROM Bestellungen o WHERE o.`user_id` IN (
	SELECT u.`id` FROM `Benutzer` u WHERE u.`Alter` IN (
		SELECT MAX(u.`Alter`) FROM `Benutzer` u
	)
);

Bildbeschreibung hier einfügen

4. Vollständige Verbindung (wird von MySQL nicht unterstützt)

  • Vollständige Verbindung, alle Daten in der linken und rechten Tabelle einschließlich Null. Entspricht der Kombination aus rechtem Außenglied und linkem Außenglied.
  • select * from table a full outer join table b on a.id=b.a_id; (MySQL unterstützt dies nicht und wird nicht vorgeführt)

Weitere MySQL-Artikel finden Sie unter den folgenden Links.

MySQL DDL-Anweisungen

MySQL CRUD-Anweisungen

MySQL-Aggregatfunktionen

MySQL-Abfrage für mehrere Tabellen

ENDE…

Dies ist das Ende dieses Artikels über erweiterte Abfragen und Multitabellenabfragen von MySQL-Datenbanken. Weitere relevante Inhalte zu erweiterten MySQL-Abfragen und Multitabellenabfragen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • SQL-Abfrage MySql-Datenbanktabellenname und -beschreibung Tabellenfeld- (Spalten-)Informationen
  • Analyse des SELECT-Abfrageausdrucks in der MySQL-Datenbank
  • Detaillierte Erklärung der MySQL-Datenbank - Abfrage mehrerer Tabellen - Inner Join, Outer Join, Unterabfrage, korrelierte Unterabfrage
  • Warum verbessert der Index in der Mysql-Datenbanktabelle nicht die Abfragegeschwindigkeit?
  • MySQL-Datenbankabfrage – erweiterte Multi-Table-Abfrage – detaillierte Erklärung
  • Warum ist die Abfrage langsam, obwohl in der MySQL-Datenbanktabelle ein Index vorhanden ist?

<<:  Detaillierte Erklärung der Anwendungsfälle von Vue-Listenern

>>:  Verwenden Sie Docker, um einen Redis-Master-Slave-Replikationscluster zu erstellen

Artikel empfehlen

Beispielcode für Nginx zur Erreichung dynamischer und statischer Trennung

1. Einfache Konfiguration der dynamischen und sta...

Vue implementiert ein einfaches Einkaufswagenbeispiel

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

Detaillierte Erläuterung der Nginx-Strombegrenzungskonfiguration

Dieser Artikel erläutert anhand von Beispielen di...

JavaScript-Grundlagen: Funktion zur sofortigen Ausführung

Inhaltsverzeichnis Funktionsformat sofort ausführ...

Detaillierte Erläuterung des Produktionsprinzips des jQuery-Atemkarussells

In diesem Artikel wird der spezifische Prozess de...

Eine detaillierte Einführung in for/of, for/in in JavaScript

Inhaltsverzeichnis In JavaScript gibt es mehrere ...

Installationsprozess von CentOS8 Linux 8.0.1905 (Abbildung)

Die aktuellste Version von CentOS ist CentOS 8. A...

Mehr als 100 Zeilen Code zur Implementierung von React Drag Hooks

Vorwort Der Quellcode umfasst insgesamt nur mehr ...