? Programmerere og database administratorer bruke Structured Query Language å skape datamaskinen databaser og rapportere på informasjonen i dem . En SQL-setning kan inneholde komplekse betingede tester for å velge spesifikke sett med data fra tabeller i en database . Et korrelert underspørring har to tester , som er nestet i hverandre , og hver test er avhengig av resultatet av den andre. SQL
fleste moderne relasjonsdatabaser innlemme SQL for å legge til og oppdatere data , lage strukturer og samle informasjon . SQL er basert på teorier om data utviklet i 1970 og kontinuerlig forbedret siden da. Den består av et sett av oppgaver , inkludert SELECT , INSERT , opprette og slette , etterfulgt av ulike klausuler med angivelse av data som blir ledet og alternativer som sortering og gruppering . Den utbredte bruken av databaser skyldes SQL fleksibilitet og raffinement , det gjør det mulig å analysere komplekse grupper av data på mange måter
spørringer og subqueries
En SQL-kommandoen . å hente data kalles en spørring , vanligvis, programmerere bruke SELECT-setningen for spørringer , selv om mange av reglene for søking data gjelder også å sette inn, slette og oppdatere . En enkel SELECT spørring kan vise innholdet i en datatabell , for eksempel følgende uttalelse : en
SELECT * FROM inventar,
Dette søket viser alle postene i en tabell kalt " inventar. " du gjør en spørring resultater mer spesifikk ved å legge til betingede tester , som i dette utsagnet : en
SELECT * FROM inventar WHERE warehouse_code = ' Chicago5 ';
dette søket viser bare inventar poster fra en lagerbygning kode , Chicago5 .
en delspørring er en spørring inne i en annen spørring . Følgende uttalelse lister inventar poster for de elementene fra varehus i en bestemt region :
SELECT * FROM inventar WHERE warehouse_code IN ( SELECT warehouse_code FRA varehus WHERE region = ' Midtvesten ');
oppmerksom på at dette spørsmålet har to SELECT-setninger , en som viser inventar poster, og en annen som gir den viktigste spørring med lageret koder.
Korrelatert delspørring
i en korrelert subquery , både hoved-og underordnede spørringer henter data fra den samme tabellen . Den indre spørring utfører en samlet funksjon, for eksempel en statistikk , og mater denne informasjon til den ytre spørringen som benytter det som grunnlag for en sammenligning. For eksempel , produserer denne korrelert delspørring en liste over inventar poster for disse elementene har prisene større enn en lagerbygning gjennomsnittlige . Den ytre spørringen passerer lageret informasjonen til den indre spørringen , og den indre spørringen sender den gjennomsnittlige prisen tilbake til den ytre spørringen : en
SELECT part_number , pris , warehouse_code FRA inventar i1 WHERE pris > ( SELECT AVG (pris ) FROM inventar i2 WHERE warehouse_code.i1 = warehouse_code.i2 ); " . i2 "
to spørringer bruk tabellen aliaser " i1 ", og selv om de refererer til det samme bordet , ved hjelp av aliaser gjør spørringene å behandle det som to separate enheter .
ytelsesproblemer
for korrelerte subqueries , evaluerer SQL indre spørringen én gang for hver post i den ytre spørringen . Som tabellen størrelser blir større , tar prosessen lengre. Hvis du finner ut at en korrelert delspørring tar uforholdsmessig lang tid å fullføre , vurdere å bruke en alternativ , for eksempel innlasting en midlertidig tabell med middels resultater , deretter behandle den midlertidige tabellen direkte mot hovedtabellen med en enkel subquery . Men mindre elegant , kan det vise seg betydelig raskere .