resum.: i denne tutorial lærer du, hvordan du bruger Mys .l CTE eller almindeligt tabeludtryk til at konstruere komplekse forespørgsler på en mere læsbar måde.
Hvad er et almindeligt tabeludtryk eller CTE
et almindeligt tabeludtryk er et navngivet midlertidigt resultatsæt, der kun findes inden for eksekveringsomfanget af en enkelt S ORL-sætning, f. eks.,,SELECT
INSERT
UPDATE
, eller DELETE
.i lighed med en afledt tabel gemmes en CTE ikke som et objekt og varer kun under udførelsen af en forespørgsel.i modsætning til en afledt tabel kan en CTE være selvreferencerende (en rekursiv CTE) eller kan refereres flere gange i den samme forespørgsel. Derudover giver en CTE bedre læsbarhed og ydeevne i sammenligning med en afledt tabel.
Mys .l CTE syntaks
strukturen af en CTE indeholder navnet, en valgfri kolonne liste, og en forespørgsel, der definerer CTE., Efter CTE er defineret, kan du bruge det som en visning i en SELECT
INSERT
UPDATE
DELETE
, eller CREATE VIEW
erklæring.
følgende illustrerer den grundlæggende syntaks for en CTE:
Code language: SQL (Structured Query Language) (sql)
Bemærk, at antallet af kolonner i query
skal være det samme som antallet af kolonner i column_list
., Hvis du udelader column_list
, CTE vil bruge listen kolonne af den forespørgsel, der definerer CTE
Enkle MySQL CTE eksempler
Vi bruger customers
tabel fra eksempeldatabasen til demonstration:
følgende eksempel illustrerer, hvordan man bruger en CTE for at forespørge data fra customers
tabel i eksempeldatabasen.
Bemærk, at dette eksempel kun er til demonstrationsformålet for at gøre det nemt for dig at forstå CTE-konceptet.,
I dette eksempel, den navn af CTE er customers_in_usa
den forespørgsel, der definerer CTE returnerer to kolonner customerName
og state
. Derfor returnerer customers_in_usa
CTE alle kunder i USA.
efter at have defineret customers_in_usa
CTE, refererede vi det i SELECT
erklæring for kun at vælge kunder i Californien.,
Se det følgende eksempel:
Code language: SQL (Structured Query Language) (sql)
I dette eksempel, CTE returnerer top 5 salgsrepræsentant i 2003. Derefter henviste vi til topsales2003
CTE for at få yderligere oplysninger om salgsrepræsentanten inklusive fornavn og efternavn.,
En mere avanceret MySQL CTE eksempel
Se det følgende eksempel:
Code language: SQL (Structured Query Language) (sql)
I dette eksempel, har vi to CTEs i den samme forespørgsel. Den første CTE (salesrep
) får de ansatte, hvis jobtitler er salgsrepræsentanten. Den anden CTE (customer_salesrep
) refererer til den første CTE i INNER JOIN
klausul for at få den salgsrepræsentant og kunder, som hver salgsrepræsentant har ansvaret for.,
Efter at have andet CTE, vi forespørge på data fra, at CTE hjælp af en simpel SELECT
erklæring med ORDER BY
klausul.,
bestemmelse kan bruges i begyndelsen af SELECT
UPDATE
og DELETE
udsagn:
Code language: SQL (Structured Query Language) (sql)
for det Andet, WITH
bestemmelse kan bruges i begyndelsen af en underforespørgsel eller en afledt tabel underforespørgsel:
Code language: SQL (Structured Query Language) (sql)
Tredje, WITH
klausul kan bruges umiddelbart forud SELECT
af de udsagn, der omfatter en SELECT
klausul:
I denne tutorial, du har lært at bruge MySQL CTE at forenkle komplekse forespørgsler.,
- var denne vejledning nyttig?
- YesNo