Oppsummering: i denne opplæringen vil du lære hvordan å bruke MySQL CTE eller felles bord uttrykk for å lage komplekse spørringer i en mer lesbar måte.
Hva er et felles bord uttrykk eller CTE
Et felles bord uttrykk er en navngitt midlertidig resultat som eksisterer kun i utførelse omfanget av en enkelt SQL-setningen f.eks.,,SELECT
, INSERT
, UPDATE
, eller DELETE
.
Ligner på en avledet, bord, ETC er ikke lagret som et objekt og sist bare under utførelse av en spørring.
i Motsetning til en avledet, bord, ETC kan være selv-referanse (en rekursiv ETC) eller kan bli referert til flere ganger i den samme spørringen. I tillegg, en CTE gir bedre lesbarhet og ytelse i sammenligning med en avledet bordet.
MySQL ETC syntaks
strukturen av en CTE inkluderer navn, en ekstra kolonne liste, og en spørring som definerer ETC., Etter CTE er definert, kan du bruke den som en visning i en SELECT
, INSERT
, UPDATE
, DELETE
, eller CREATE VIEW
uttalelse.
følgende illustrerer den grunnleggende syntaksen til en CTE:
Code language: SQL (Structured Query Language) (sql)
legg Merke til at antall kolonner i query
må være det samme som antall kolonner i column_list
., Hvis du utelater column_list
, CTE vil bruke kolonnen liste av spørringen som definerer CTE
Enkel MySQL ETC eksempler
Vi vil bruke customers
tabell fra eksempeldatabasen for demonstrasjon:
følgende eksempel illustrerer hvordan å bruke en CTE for spørring data fra customers
tabellen i eksempel databasen.
Merk at i dette eksemplet er kun for demonstrasjon formål å gjøre det enkelt for deg å forstå ETC-konseptet.,
I dette eksemplet er navnet på CTE er customers_in_usa
, spørringen som definerer ETC returnerer to kolonner customerName
og state
. Derfor, customers_in_usa
CTE returnerer alle kunder som befinner seg i USA.
Når du har angitt. customers_in_usa
ETC, vi henvist til den i SELECT
uttalelse for å velge kun kunder som ligger i California.,
Se følgende eksempel:
Code language: SQL (Structured Query Language) (sql)
I dette eksempelet, CTE gir topp 5 sales rep i 2003. Etter at vi refererte til topsales2003
ETC, for å få mer informasjon om sales rep inkludert fornavn og etternavn.,
En mer avansert MySQL ETC eksempel
Se følgende eksempel:
Code language: SQL (Structured Query Language) (sql)
I dette eksempelet har vi to CTEs i den samme spørringen. Den første CTE ( salesrep
) får de ansatte som har som jobb titler er det salgsrepresentant. Den andre CTE ( customer_salesrep
) referanser første CTE i INNER JOIN
punkt for å få sales rep og kunder som hver selgeren er ansvarlig.,
Etter å ha andre ETC, vi spørring data fra den CTE ved hjelp av en enkel SELECT
uttalelse med ORDER BY
klausulen.,
klausulen kan brukes i begynnelsen av SELECT
, UPDATE
, og DELETE
uttalelser:
Code language: SQL (Structured Query Language) (sql)
Andre, en WITH
klausulen kan brukes i begynnelsen av et subquery eller en avledet tabell subquery:
Code language: SQL (Structured Query Language) (sql)
Tredje, en WITH
klausulen kan brukes umiddelbart foregående SELECT
av uttalelser som inkluderer en SELECT
klausulen:
I denne opplæringen, har du lært hvordan du skal bruke MySQL CTE å forenkle komplekse spørringer.,
- Var denne opplæringen nyttig?
- YesNo