Site Overlay

En introduktion til Mys .l CTE

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.

Mys .l introducerede det fælles tabeludtryk eller CTE-funktion siden version 8.0, så du skal have Mys .l 8.0+ for at øve med udsagnene i denne tutorial.

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *