Site Overlay

Eine Einführung in MySQL CTE

Zusammenfassung: In diesem Tutorial erfahren Sie, wie Sie MySQL CTE oder common table expression verwenden, um komplexe Abfragen besser lesbar zu erstellen.

MySQL hat die common table Expression-oder CTE-Funktion seit Version 8.0 eingeführt, daher sollten Sie MySQL 8.0+ haben, um mit den Anweisungen in diesem Tutorial zu üben.

Was ist eine common table expression, oder CTE

Eine common table expression ist eine benannte temporäre Ergebnismenge, besteht nur in der Ausführung Bereichs einer einzelnen SQL-Anweisung, z.B.,,SELECT, INSERT, UPDATE oder DELETE.

Ähnlich einer abgeleiteten Tabelle wird ein CTE nicht als Objekt gespeichert und dauert nur während der Ausführung einer Abfrage.

Im Gegensatz zu einer abgeleiteten Tabelle kann ein CTE selbst referenzierend sein (ein rekursiver CTE) oder in derselben Abfrage mehrmals referenziert werden. Darüber hinaus bietet ein CTE eine bessere Lesbarkeit und Leistung im Vergleich zu einer abgeleiteten Tabelle.

MySQL CTE Syntax

Die Struktur eines CTE enthält den Namen, eine optionale Spaltenliste und eine Abfrage, die den CTE definiert., Nachdem der CTE definiert wurde, können Sie ihn als Ansicht in einer SELECT, INSERT, UPDATE, DELETE oder CREATE VIEW Anweisung verwenden.

Das Folgende veranschaulicht die grundlegende Syntax eines CTE:

Code language: SQL (Structured Query Language) (sql)

Beachten Sie, dass die Anzahl der Spalten in der query der Anzahl der Spalten in der column_listentsprechen muss., Wenn Sie weglassen column_list auf den Allgemeinen Tabellenausdruck verwenden der Liste der Spalte der Abfrage definiert die CTE

Einfache MySQL-CTE-Beispiele

verwenden Wir das customers Tabelle aus der Beispieldatenbank zur demonstration:

Das folgende Beispiel zeigt, wie das CTE für die Abfrage von Daten aus dem customers Tabelle in der Beispieldatenbank.

Beachten Sie, dass dieses Beispiel nur zu Demonstrationszwecken dient, um Ihnen das Verständnis des CTE-Konzepts zu erleichtern.,

In diesem Beispiel lautet der Name des CTE customers_in_usa, die Abfrage, die den CTE definiert, gibt zwei Spalten zurück customerName und state. Daher gibt die customers_in_usa CTE alle Kunden in den USA zurück.

Nachdem wir die customers_in_usa CTE definiert haben, haben wir in der SELECT – Anweisung darauf verwiesen, nur Kunden in Kalifornien auszuwählen.,

Siehe folgendes Beispiel:

Code language: SQL (Structured Query Language) (sql)

In diesem Beispiel gibt die CTE die Top 5 Vertriebsmitarbeiter im Jahr 2003. Danach haben wir auf die topsales2003 CTE verwiesen, um zusätzliche Informationen über den Vertriebsmitarbeiter einschließlich Vor-und Nachname zu erhalten.,

Eine erweiterte MySQL-CTE Beispiel

Sehen Sie sich das folgende Beispiel an:

Code language: SQL (Structured Query Language) (sql)

In diesem Beispiel haben wir zwei CTEs in der gleichen Abfrage. Der erste CTE (salesrep) ruft die Mitarbeiter ab, deren Berufsbezeichnung der Vertriebsmitarbeiter ist. Der zweite CTE (customer_salesrep ) verweist auf den ersten CTE in der INNER JOIN – Klausel, um den Vertriebsmitarbeiter und die Kunden zu ermitteln, für die jeder Vertriebsmitarbeiter verantwortlich ist.,

Nach dem zweiten CTE fragen wir Daten aus diesem CTE mit einer einfachen SELECT – Anweisung mit der ORDER BY – Klausel ab.,

Klausel kann am Anfang von , UPDATE und DELETE Anweisungen verwendet werden:

Code language: SQL (Structured Query Language) (sql)

Zweitens kann eine WITH Klausel am Anfang einer Unterabfrage verwendet werden oder eine abgeleitete Tabellenunterabfrage:

Code language: SQL (Structured Query Language) (sql)

Drittens kann eine WITH – Klausel unmittelbar vor SELECT der Anweisungen verwendet werden, die eine SELECT – Klausel enthalten:

In diesem Tutorial haben Sie gelernt, wie Sie MySQL CTE verwenden, um komplexe Abfragen.,

  • War dieses tutorial hilfreich?
  • YesNo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.