Sidste opdatering 26. februar 2020 08:07:42 (UTC / GMT +8 timer)
Hvad er underforespørgsel i SQL?
En underforespørgsel er en SQL-forespørgsel indlejret i en større forespørgsel.
- En underforespørgsel kan forekomme i:
- – En SELECT-klausul
- – A FROM-klausul
- – EN WHERE-klausul
- Underforespørgslen kan indlejres i en SELECT-, INSERT-, UPDATE- eller DELETE-sætning eller inde i en anden underforespørgsel.
- En underforespørgsel tilføjes normalt inden for WHERE-klausulen i en anden SQL SELECT-sætning.
- Du kan bruge sammenligningsoperatorerne, såsom >, < eller =. Sammenligningsoperatoren kan også være en operator med flere rækker, såsom IN, ALLE eller ALLE.
- En underforespørgsel kaldes også en indre forespørgsel eller indre markering, mens udsagnet, der indeholder en underforespørgsel, også kaldes en ydre forespørgsel eller ydre valg.
- Den indre forespørgsel udføres først før dens overordnede forespørgsel, så resultaterne af en indre forespørgsel kan sendes til den ydre forespørgsel.
Du kan bruge en underforespørgsel i en SELECT-, INSERT-, DELETE- eller UPDATE-sætning til at udføre følgende opgaver:
- Sammenlign et udtryk med resultatet af forespørgslen.
- Bestem om et udtryk er inkluderet i resultaterne af forespørgslen.
- Kontroller, om forespørgslen vælger nogen rækker.
Syntaks:
- Underforespørgslen (indre forespørgsel) udføres en gang før hovedforespørgslen (ydre forespørgsel) udføres.
- Hovedforespørgslen (ydre forespørgsel) bruger resultatet af underforespørgslen.
SQL-underforespørgsler Eksempel:
I dette afsnit lærer du kravene til brug af underforespørgsler. Vi har følgende to tabeller “student” og “markeringer” med fælles felt “StudentID”.
studenterkarakterer
Nu ønsker vi at skrive en forespørgsel for at identificere alle studerende, der får bedre karakterer end den studerende, som “s StudentID er” V002 “, men vi kender ikke karaktererne for” V002 “.
– For at løse problemet kræver vi to forespørgsler. En forespørgsel returnerer karaktererne (gemt i feltet Total_marks) for “V002”, og en anden forespørgsel identificerer de studerende, der får bedre karakterer end resultatet af den første forespørgsel.
Første forespørgsel:
Forespørgselsresultat:
Resultatet af forespørgslen er 80.
-Ved at bruge resultatet af denne forespørgsel har vi her skrevet en anden forespørgsel for at identificere de studerende, der får bedre karakterer end 80. Her er forespørgslen:
Anden forespørgsel:
Forespørgselsresultat:
Over to forespørgsler identificerede studerende, der får t han har et bedre antal end den studerende, der er “StudentID” er “V002” (Abhay).
Du kan kombinere ovenstående to forespørgsler ved at placere en forespørgsel inde i den anden. Underforespørgslen (også kaldet “indre forespørgsel”) er forespørgslen inden for parenteserne. Se følgende kode og forespørgselsresultat:
SQL-kode:
Forespørgselsresultat:
Billedpræsentation af SQL-forespørgsel:
Underforespørgsler: Generelle regler
En underforespørgsel SELECT-sætning er næsten ens til SELECT-sætningen, og den bruges til at starte en regelmæssig eller ydre forespørgsel. Her er syntaksen for en underforespørgsel:
Syntaks:
Underforespørgsler: Retningslinjer
Der er nogle retningslinjer, der skal overvejes, når du bruger underforespørgsler:
- En underforespørgsel skal være omgivet af parenteser.
- En underforespørgsel skal placeres på højre side af sammenligningsoperatøren.
- Underforespørgsler kan ikke manipulere deres resultater internt, derfor kan ORDER BY-klausul ikke føjes til en underforespørgsel. Du kan bruge en ORDER BY-klausul i hoved SELECT-sætningen (ydre forespørgsel), som vil være den sidste klausul.
- Brug operatorer med én række med underordninger med én række.
- Hvis en underforespørgsel (indre forespørgsel) returnerer en nulværdi til den ydre forespørgsel, returnerer den ydre forespørgsel ikke nogen rækker, når visse sammenligningsoperatorer bruges i en WHERE-sætning.
Underforespørgselstype
- Enkelt rækkeunderforespørgsel: Returnerer nul eller en række.
- Flere rækkeundersøgelser: Returnerer en eller flere rækker.
- Flere kolonneundersøgelser: Returnerer en eller flere kolonner.
- Korrelerede underforespørgsler: Henvis til en eller flere kolonner i den ydre SQL-sætning. Underforespørgslen er kendt som en korreleret underforespørgsel, fordi underforespørgslen er relateret til den ydre SQL-sætning.
- Indlejrede underforespørgsler: Underforespørgsler placeres i en anden underforespørgsel.
I den næste session har vi grundigt diskuteret ovenstående emner. Bortset fra ovenstående type underforespørgsler kan du bruge en underforespørgsel inde i INSERT, UPDATE og DELETE-sætningen. Her er en kort diskussion:
Underforespørgsler med INSERT-sætning
INSERT-sætning kan bruges med underforespørgsler.Her er syntaksen og et eksempel på underforespørgsler, der bruger INSERT-sætningen.
Syntaks:
INSERT INTO table_name ) ]SELECT FROM table1 ;
Hvis vi vil indsætte disse ordrer fra ” ordrer “-tabel, der har forhåndsmængde 2000 eller 5000 i” nybestilling “-tabellen, kan følgende SQL bruges:
Eksempeltabel: ordrer
SQL-kode:
Output:
For at se flere detaljer af underforespørgsler ved hjælp af INSERT-sætning klik her.
Underforespørgsler med UPDATE-sætning
I en UPDATE-sætning kan du indstille en ny kolonneværdi svarende til resultatet, der returneres af en enkelt række-underforespørgsel. Her er syntaksen og et eksempel på underforespørgsler, der bruger UPDATE-sætningen.
Syntaks:
UPDATE table SET column_name = new_value(SELECT COLUMN_NAMEFROM TABLE_NAME)
Hvis vi ønsker at opdatere denne ord_date i ” neworder “tabel med” 15-JAN-10 “, som har forskellen mellem ord_amount og advance_amount er mindre end minimum ord_amount af” orders “-tabellen, følgende SQL kan bruges:
Eksempel tabel: neworder
SQL-kode:
Output:
Klik her for at se flere detaljer om underforespørgsler ved hjælp af UPDATE-sætningen.
Underforespørgsler med DELETE-sætning
DELETE-sætning kan bruges med underforespørgsler. Her er syntaksen og et eksempel på underforespørgsler ved hjælp af DELETE-sætningen.
Syntaks:
DELETE FROM TABLE_NAME(SELECT COLUMN_NAME FROM TABLE_NAME)
Hvis vi vil slette disse ordrer fra “neworder” -tabellen, hvilken forhåndsbeløb er mindre end den maksimale forskudsbeløb på ” ordrer “-tabel, kan følgende SQL bruges:
Eksempeltabel: ny ordning
SQL-kode:
Output:
Klik her for at se flere detaljer om underforespørgsler ved hjælp af DELETE-sætning.
Hvad næste?
- SQL-underforespørgsler – Slide-præsentation
- Enkelt række underforespørgsler
- Flere række- og kolonneundersøgelser
- Korrelerede underforespørgsler ved hjælp af aliasser
- Indlejrede underforespørgsler
Bemærk: Output af den nævnte SQL-sætning, der vises her, tages ved hjælp af Oracle Database 10g Express Edition.
Øv SQL-øvelser
- SQL-øvelser, øv, løsning
- SQL Hent data fra tabeller
- SQL-boolske og relationelle operatører
- SQL Wildcard og Special operatorer
- SQL Aggregate Funktioner
- SQL-formatering af forespørgselsoutput
- SQL-quering på flere tabeller
- FILTERING og SORTERING på HR-database
- SQL JOINS
- SQL JOINS
- SQL JOINS på HR-database
- SQL-UNDERFØRINGER
- SQL-UNDERFØRINGER
- SQL SUBQUERIES på HR-database
- SQL Union
- SQL View
- SQL-brugerkontostyring
- Filmdatabase
- GRUNDLÆGGENDE forespørgsler om filmdatabase
- UNDERFØRINGER om filmdatabase
- JOINS om filmdatabase
- Fodbolddatabase
- Introduktion
- GRUNDLÆGGENDE forespørgsler om fodbolddatabase
- UNDERFØRINGER om fodbolddatabase
- BLIVER MED forespørgsler om fodbolddatabase
- Hospitaldatabase
- Introduktion
- GRUNDLÆGGENDE, UNDERVISNINGER og JOINS
- Medarbejderdatabase
- GRUNDLÆGGENDE forespørgsler om medarbejderdatabase
- UNDERFØRINGER om medarbejderdatabase
- Mere at komme!