Senaste uppdatering 26 februari 2020 08:07:42 (UTC / GMT +8 timmar)
Vad är underfråga i SQL?
En underfråga är en SQL-fråga inbäddad i en större fråga.
- En underfråga kan förekomma i:
- – En SELECT-sats
- – En FROM-sats
- – A WHERE-sats
- Underfrågan kan kapslas i ett SELECT-, INSERT-, UPDATE- eller DELETE-uttalande eller i ett annat underfråga.
- En underfråga läggs vanligtvis till inom WHERE-klausulen i en annan SQL SELECT-sats.
- Du kan använda jämförelseoperatorerna, till exempel >, <, eller =. Jämförelsesoperatören kan också vara en operatör med flera rader, till exempel IN, ANY eller ALL.
- En underfråga kallas också en inre fråga eller inre markering, medan uttalandet som innehåller en underfråga också kallas en yttre fråga eller yttre markering.
- Den inre frågan körs först före dess överordnade fråga så att resultaten från en inre fråga kan skickas till den yttre frågan.
Du kan använda en underfråga i SELECT-, INSERT-, DELETE- eller UPDATE-uttalanden för att utföra följande uppgifter:
- Jämför ett uttryck med resultatet av frågan.
- Bestäm om ett uttryck ingår i sökresultaten.
- Kontrollera om frågan väljer några rader.
Syntax:
- Underfrågan (inre fråga) körs en gång innan huvudfrågan (yttre fråga) körs.
- Huvudfrågan (yttre fråga) använder underfrågeresultatet.
SQL-underfrågor Exempel:
I det här avsnittet lär du dig kraven på att använda underfrågor. Vi har följande två tabeller ”student” och ”markeringar” med gemensamt fält ”StudentID”.
studentbetyg
Nu vill vi skriva en fråga för att identifiera alla studenter som får bättre betyg än den student som ”StudentID är” V002 ”, men vi känner inte märkena till” V002 ”.
– För att lösa problemet kräver vi två frågor. En fråga returnerar markeringarna (lagrade i fältet Total_marks) för ”V002” och en andra fråga identifierar de studenter som får bättre betyg än resultatet av den första frågan.
Första frågan:
Frågeresultat:
Resultatet av frågan är 80.
-Under resultatet av denna fråga har vi här skrivit en ny fråga för att identifiera de studenter som får bättre betyg än 80. Här är frågan:
Andra frågan:
Frågeresultat:
Över två frågor identifierade studenter som får t han är bättre än studenten som ”StudentID är” V002 ”(Abhay).
Du kan kombinera ovanstående två frågor genom att placera en fråga i den andra. Underfrågan (även kallad ”inre fråga”) är frågan inom parentes. Se följande kod och frågeresultat:
SQL-kod:
Frågeresultat:
Bildpresentation av SQL-underfråga:
Underfrågor: Allmänna regler
En SELECT-sats för en underfråga är nästan lika till SELECT-satsen och den används för att starta en vanlig eller yttre fråga. Här är syntaxen för en underfråga:
Syntax:
Underfrågor: Riktlinjer
Det finns några riktlinjer att tänka på när du använder underfrågor:
- En underfråga måste vara inom parentes.
- En underfråga måste placeras till höger om jämförelseoperatören.
- Underfrågor kan inte manipulera sina resultat internt, därför kan ORDER BY-satsen inte läggas till i en underfråga. Du kan använda en ORDER BY-sats i huvuduttrycket SELECT (yttre fråga) som blir den sista satsen.
- Använd operatörer med en rad med underfrågor med en rad.
- Om en underfråga (inre fråga) returnerar ett nullvärde till den yttre frågan, kommer den yttre frågan inte att returnera några rader när vissa jämförelseoperatorer används i en WHERE-sats.
Underfrågtyp
- Enfrågsunderfråga: Returnerar noll eller en rad.
- Flera radundersökningar: Returnerar en eller flera rader.
- Flera kolumnundersökningar: Returnerar en eller flera kolumner.
- Korrelerade underfrågor: Referera till en eller flera kolumner i den yttre SQL-satsen. Underfrågan är känd som en korrelerad underfråga eftersom underfrågan är relaterad till den yttre SQL-satsen.
- Kapslade underfrågor: Underfrågor placeras i en annan underfråga.
Under nästa session har vi grundligt diskuterat ovanstående ämnen. Förutom ovanstående typ av underfrågor kan du använda en underfråga i INSERT, UPDATE och DELETE-satsen. Här är en kort diskussion:
Underfrågor med INSERT-uttalande
INSERT-uttalande kan användas med underfrågor.Här är syntaxen och ett exempel på underfrågor som använder INSERT-satsen.
Syntax:
INSERT INTO table_name ) ]SELECT FROM table1 ;
Om vi vill infoga dessa beställningar från ” order ”-tabell som har förskottsbeloppet 2000 eller 5000 i” neworder ”-tabellen kan följande SQL användas:
Exempeltabell: order
SQL-kod:
Utgång:
För att se mer information av underfrågor med INSERT-uttalande klicka här.
Underfrågor med UPDATE-uttalande
I ett UPDATE-uttalande kan du ställa in ett nytt kolumnvärde som är lika med resultatet som returneras av en enstaka radundersökning. Här är syntaxen och ett exempel på underfrågor som använder UPDATE-satsen.
Syntax:
UPDATE table SET column_name = new_value(SELECT COLUMN_NAMEFROM TABLE_NAME)
Om vi vill uppdatera den ord_date i ” neworder ”-tabell med” 15-JAN-10 ”som har skillnaden mellan ord_belopp och förskottsbelopp är mindre än minsta ord_belopp för” order ”-tabell, följande SQL kan användas:
Exempeltabell: nybeställning
SQL-kod:
Utgång:
Klicka här för att se mer information om underfrågor med UPDATE-uttalande.
Underfrågor med DELETE-uttalande
DELETE-uttalande kan användas med underfrågor. Här är syntaxen och ett exempel på underfrågor med DELETE-satsen.
Syntax:
DELETE FROM TABLE_NAME(SELECT COLUMN_NAME FROM TABLE_NAME)
Om vi vill ta bort de beställningarna från ”neworder” -tabellen, vilket förskottsbelopp är mindre än det maximala förskottsbeloppet för ” order ”-tabell kan följande SQL användas:
Exempeltabell: ny ordning
SQL-kod:
Output:
Klicka här för att se mer information om underfrågor med DELETE-satsen.
Vad händer härnäst?
- SQL-underfrågor – Bildpresentation
- Enstaka radundersökningar
- Flera rad- och kolumnundersökningar
- Korrelerade underfrågor med alias
- Kapslade underfrågor
Obs! Utdata från nämnda SQL-sats som visas här tas med hjälp av Oracle Database 10g Express Edition.
Öva SQL-övningar
- SQL-övningar, öva, lösning
- SQL Hämta data från tabeller
- SQL-booleska och relationsoperatorer
- SQL jokertecken och specialoperatörer
- SQL-aggregat Funktioner
- SQL-formatering av frågeutdata
- SQL-quering på flera tabeller
- FILTERING och SORTERING på HR-databas
- SQL JOINS
- SQL JOINS
- SQL JOINS på HR-databas
- SQL SUBQUERIES
- SQL SUBQUERIES
- SQL SUBQUERIES på HR-databas
- SQL Union
- SQL View
- SQL User Account Management
- Filmdatabas
- BASIC queries on movie Database
- SUBQUERIES on movie Database
- JOINS on movie Database
- Soccer Database
- Introduktion
- GRUNDLÄGGANDE frågor om fotbollsdatabas
- UNDERFRÅGOR om fotbollsdatabas
- GÅR MED frågor om fotbollsdatabas
- Sjukhusdatabas
- Introduktion
- GRUNDLÄGGANDE, FÖRFARANDEN och FÖRENINGAR
- Anställdas databas
- GRUNDLÄGGANDE frågor om anställdas databas
- UNDERFRÅGOR om anställdas databas
- Mer framöver!