Indlejrede Forespørgsler
Skoleadministrationen er tilfreds med vores seneste resultater og ser frem til at komme videre.
Da de begynder deres sommerferie, har vi mulighed for at undersøge nye metoder og forbedre vores SQL-færdigheder.
Vores fokus vil være på indlejrede forespørgsler, et centralt begreb i SQL.
Lad os se på et eksempel fra vores virksomheds database. Efterhånden som virksomheden vokser, har vi tilføjet en ny department
-tabel. Dette ændrer, hvordan vores database fungerer.
Lad os undersøge den nye tabels struktur for at se dens rolle i vores database:
Den nye tabel indeholder afdelinger, deres typer og budgetter. Og i employee
-tabellen, som du måske husker, findes der information om hvilken afdeling hver medarbejder tilhører.
Lad os overveje et eksempel, hvor vi bruger indlejrede forespørgsler til at hente de medarbejdere, der arbejder i afdelinger med budgetter på $500.000 eller mindre:
1234567SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Vi bruger en WHERE
-klausul til at angive, at afdelingsnavnet skal være til stede i den tabel, vi henter med den indlejrede forespørgsel.
Lad os opdele denne forespørgsel i to separate for at se, hvordan den fungerer. Først henter vi navnene på afdelinger med budgetter på $500.000 eller mindre (vores indre forespørgsel):
123SELECT name FROM department WHERE budget <= 500000
Nu, med det opnåede resultat, lad os skrive den anden forespørgsel for at hente oplysninger om medarbejderne fra disse afdelinger:
12345SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
Resultatet af denne forespørgsel vil være det samme som den første forespørgsel.
Her er en trinvis gennemgang:
-
Den indre forespørgsel henter
names
på de afdelinger, vi har brug for; -
WHERE
-klausulen kontrollerer, om disse afdelinger findes i tabellen fra den indre forespørgsel; -
Vi får det ønskede resultat.
Her er den grundlæggende syntaks for en indre forespørgsel:
SELECT columns
FROM table_1
WHERE column_name IN (
SELECT column
FROM table_2
other clauses
)
Når du arbejder med indlejrede forespørgsler, skal du være opmærksom på følgende vigtige punkter:
-
Enkelt resultat i underforespørgsel: sikr, at den indlejrede forespørgsel kun returnerer én kolonne. Hvis den bruges i en sammenligning, bør den ideelt set returnere én værdi. Dette er afgørende for operatorer som
=
,>
,<
,>=
,<=
,<>
; -
Datatyper: datatypen for den returnerede kolonne skal matche den kolonne, du sammenligner med, for at undgå fejl;
-
Optimering: indlejrede forespørgsler kan være langsomme, især hvis de køres for hver række i hovedforespørgslen;
-
Brug af IN-operatoren: indlejrede forespørgsler bruger ofte
IN
-operatoren til at kontrollere værdier i et delmængde. Du kan også bruge sammenligningsoperatorer til mere komplekse betingelser.
1. Hvad er en indlejret forespørgsel i SQL?
2. Hvilken SQL-operator bruges ofte sammen med indlejrede forespørgsler for at kontrollere værdier i et delmængde?
3. Hvorfor er det vigtigt, at datatypen for kolonnen, der returneres af en indlejret forespørgsel, matcher kolonnen, den sammenlignes med?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 4
Indlejrede Forespørgsler
Stryg for at vise menuen
Skoleadministrationen er tilfreds med vores seneste resultater og ser frem til at komme videre.
Da de begynder deres sommerferie, har vi mulighed for at undersøge nye metoder og forbedre vores SQL-færdigheder.
Vores fokus vil være på indlejrede forespørgsler, et centralt begreb i SQL.
Lad os se på et eksempel fra vores virksomheds database. Efterhånden som virksomheden vokser, har vi tilføjet en ny department
-tabel. Dette ændrer, hvordan vores database fungerer.
Lad os undersøge den nye tabels struktur for at se dens rolle i vores database:
Den nye tabel indeholder afdelinger, deres typer og budgetter. Og i employee
-tabellen, som du måske husker, findes der information om hvilken afdeling hver medarbejder tilhører.
Lad os overveje et eksempel, hvor vi bruger indlejrede forespørgsler til at hente de medarbejdere, der arbejder i afdelinger med budgetter på $500.000 eller mindre:
1234567SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Vi bruger en WHERE
-klausul til at angive, at afdelingsnavnet skal være til stede i den tabel, vi henter med den indlejrede forespørgsel.
Lad os opdele denne forespørgsel i to separate for at se, hvordan den fungerer. Først henter vi navnene på afdelinger med budgetter på $500.000 eller mindre (vores indre forespørgsel):
123SELECT name FROM department WHERE budget <= 500000
Nu, med det opnåede resultat, lad os skrive den anden forespørgsel for at hente oplysninger om medarbejderne fra disse afdelinger:
12345SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
Resultatet af denne forespørgsel vil være det samme som den første forespørgsel.
Her er en trinvis gennemgang:
-
Den indre forespørgsel henter
names
på de afdelinger, vi har brug for; -
WHERE
-klausulen kontrollerer, om disse afdelinger findes i tabellen fra den indre forespørgsel; -
Vi får det ønskede resultat.
Her er den grundlæggende syntaks for en indre forespørgsel:
SELECT columns
FROM table_1
WHERE column_name IN (
SELECT column
FROM table_2
other clauses
)
Når du arbejder med indlejrede forespørgsler, skal du være opmærksom på følgende vigtige punkter:
-
Enkelt resultat i underforespørgsel: sikr, at den indlejrede forespørgsel kun returnerer én kolonne. Hvis den bruges i en sammenligning, bør den ideelt set returnere én værdi. Dette er afgørende for operatorer som
=
,>
,<
,>=
,<=
,<>
; -
Datatyper: datatypen for den returnerede kolonne skal matche den kolonne, du sammenligner med, for at undgå fejl;
-
Optimering: indlejrede forespørgsler kan være langsomme, især hvis de køres for hver række i hovedforespørgslen;
-
Brug af IN-operatoren: indlejrede forespørgsler bruger ofte
IN
-operatoren til at kontrollere værdier i et delmængde. Du kan også bruge sammenligningsoperatorer til mere komplekse betingelser.
1. Hvad er en indlejret forespørgsel i SQL?
2. Hvilken SQL-operator bruges ofte sammen med indlejrede forespørgsler for at kontrollere værdier i et delmængde?
3. Hvorfor er det vigtigt, at datatypen for kolonnen, der returneres af en indlejret forespørgsel, matcher kolonnen, den sammenlignes med?
Tak for dine kommentarer!