? Programmører og database administratorer bruger Structured Query Language at skabe databaser og rapportere om oplysningerne i dem . En SQL-sætning kan indeholde komplekse betingede tests for at vælge specifikke sæt af data fra tabeller i en database. En korreleret underforespørgsel har to prøver , en indlejret i den anden , hver test afhænger af resultatet af den anden . SQL
fleste moderne relationsdatabaser indarbejde SQL til at tilføje og opdatere data , skabe strukturer og indsamle information . SQL er baseret på teorier om data udviklet i 1970'erne og løbende forfinet siden da. Den består af en række udsagn, herunder SELECT, INSERT , oprette og slette , efterfulgt af forskellige klausuler angiver de data, der forvaltes og optioner så som sortering og gruppering . Den udbredte brug af databaser skyldes SQL fleksibilitet og raffinement , det giver organisationerne til at analysere komplekse grupper af data på mange måder
Forespørgsler og underforespørgsler
SQL-kommando . at hente data kaldes en forespørgsel, typisk programmører bruger SELECT-sætningen for forespørgsler , selvom mange af reglerne for at søge data gælder også indsætte, slette og opdatere. En simpel SELECT forespørgsel kan vise indholdet af en datatabel , såsom følgende erklæring : Hej
SELECT * FROM beholdning
Denne forespørgsel viser alle de poster i en tabel kaldet " opgørelse ". du laver en forespørgslens resultater mere specifik ved at tilføje betingede tests , som i denne erklæring : Hej
SELECT * FROM opgørelse WHERE warehouse_code = ' chicago5 «
denne forespørgsel viser dig kun lagerposter fra et lager kode , chicago5 .
underforespørgsel er en forespørgsel inde i en anden forespørgsel. Følgende erklæring lister lagerposter for disse elementer fra lagre i en bestemt region :
SELECT * FROM opgørelse WHERE warehouse_code IN ( SELECT warehouse_code fra lagre WHERE region = ' midtvesten ');
Bemærk at denne forespørgsel har to SELECT-sætninger , hvoraf den ene , som viser lagerposter , og en anden som giver hovedforespørgslen med lageret koder.
Correlated Underforespørgsler
en korreleret underforespørgsel , både hoved og underordnede forespørgsler trække data fra samme tabel. Den indre forespørgsel udfører en samlet funktion, såsom en statistik , og feeds denne information til den ydre forespørgsel , som bruger den som basis for en sammenligning . For eksempel producerer dette korreleret underforespørgsel en liste over lagerposter for de poster der har priserne højere end et lager gennemsnit. Den ydre forespørgsel passerer lageret oplysninger til den indre forespørgslen , og den indre forespørgslen sender den gennemsnitlige pris tilbage til ydre forespørgsel : Hej
SELECT part_number , pris, warehouse_code FROM opgørelse i1 , hvor prisen > ( SELECT AVG (pris ) FROM opgørelse i2 WHERE warehouse_code.i1 = warehouse_code.i2 ) . " i2 "
to forespørgsler anvendelsestabellen aliaser " i1 " og selvom de henviser til det samme bord , ved hjælp af aliaser tillader forespørgsler til at behandle det som to separate enheder.
Performance Issues
korrelerede underforespørgsler evaluerer SQL indre forespørgslen én gang for hver post i den ydre forespørgsel. Som tabel størrelser bliver større , processen tager længere tid. Hvis du opdager, at en korreleret underforespørgsel tager uforholdsmæssig meget tid at gennemføre , overveje at bruge et alternativ som lægger en midlertidig tabel med mellemliggende resultater, så behandlingen af den midlertidige tabel direkte mod de vigtigste bord med en enkel underforespørgsel . Selvom mindre elegant, kan det vise sig betydeligt hurtigere .