samenvatting: in deze tutorial leert u hoe u MySQL CTE of common table expression kunt gebruiken om complexe query ‘ s op een meer leesbare manier te construeren.
Wat is een gemeenschappelijke tabeluitdrukking of CTE
een gemeenschappelijke tabeluitdrukking is een benoemde tijdelijke resultaatset die alleen bestaat binnen het uitvoerbereik van een enkele SQL-instructie, bijv.,, SELECT
, INSERT
, UPDATE
, of DELETE
.
vergelijkbaar met een afgeleide tabel, wordt een CTE niet opgeslagen als een object en duurt alleen tijdens het uitvoeren van een query.
In tegenstelling tot een afgeleide tabel kan een CTE zelfreferencing zijn (een recursieve CTE) of meerdere keren worden verwezen in dezelfde query. Bovendien biedt een CTE betere leesbaarheid en prestaties in vergelijking met een afgeleide tabel.
MySQL CTE syntaxis
de structuur van een CTE bevat de naam, een optionele kolomlijst en een query die de CTE definieert., Nadat de CTE is gedefinieerd, kunt u deze gebruiken als een weergave in een SELECT
, INSERT
, UPDATE
, DELETE
, of CREATE VIEW
statement.
het volgende illustreert de basissyntaxis van een CTE:
Code language: SQL (Structured Query Language) (sql)
merk op dat het aantal kolommen in de query
gelijk moet zijn aan het aantal kolommen in de column_list
., Als u de column_list
weglaat, zal de CTE de kolomlijst van de query gebruiken die de CTE
eenvoudige MySQL CTE voorbeelden
We zullen de customers
tabel uit de voorbeelddatabase gebruiken voor demonstratie:
het volgende voorbeeld illustreert hoe een CTE gebruikt wordt voor het opvragen van gegevens uit de tabel customers
in de voorbeelddatabase.
merk op dat dit voorbeeld alleen voor het demonstratie doel is om het gemakkelijk te maken voor u om het CTE concept te begrijpen.,
In dit voorbeeld is de naam van de CTE customers_in_usa
, de query die de CTE definieert geeft twee kolommen customerName
en state
. Daarom retourneert de customers_in_usa
CTE alle klanten in de VS.
na het definiëren van decustomers_in_usa
CTE, refereerden we ernaar in deSELECT
statement om alleen klanten in Californië te selecteren.,
zie het volgende voorbeeld:
Code language: SQL (Structured Query Language) (sql)
In dit voorbeeld geeft de CTE de top 5 van de verkoop in 2003 terug. Daarna refereerden we naar de topsales2003
CTE om aanvullende informatie te krijgen over de vertegenwoordiger, inclusief voornaam en achternaam.,
een meer geavanceerd MySQL CTE voorbeeld
zie het volgende voorbeeld:
Code language: SQL (Structured Query Language) (sql)
In dit voorbeeld hebben we twee CTE ‘ s in de zelfde vraag. De eerste CTE ( salesrep
) krijgt de werknemers waarvan de functie de vertegenwoordiger is. De tweede CTE (customer_salesrep
) verwijst naar de eerste CTE in de INNER JOIN
clausule om de vertegenwoordiger en klanten van wie elke vertegenwoordiger de leiding heeft te krijgen.,
na het hebben van de tweede CTE, bevragen we gegevens van die CTE met behulp van een eenvoudige SELECT
statement met de ORDER BY
clausule.,
component kan gebruikt worden aan het begin van de SELECT
, UPDATE
, en DELETE
instructies:
Code language: SQL (Structured Query Language) (sql)
ten Tweede, WITH
component kan gebruikt worden aan het begin van een subquery of een afgeleide tabel subquery:
Code language: SQL (Structured Query Language) (sql)
ten Derde, WITH
component kan gebruikt worden onmiddellijk voorafgaande SELECT
van de verklaringen die zijn voorzien van een SELECT
component:
In deze les hebt u geleerd hoe te gebruiken MySQL CTE te vereenvoudigen complexe query ‘ s.,
- Was deze tutorial nuttig?
- YesNo