logo

SQL | Underfråga

I SQL kan en underfråga enkelt definieras som en fråga i en annan fråga. Med andra ord kan vi säga att en Subquery är en fråga som är inbäddad i WHERE-satsen i en annan SQL-fråga. Viktiga regler för delfrågor:

  • Du kan placera underfrågan i ett antal SQL-satser: VAR klausul, HAVING-sats, FRÅN-sats. Underfrågor kan användas med SELECT, UPDATE, INSERT, DELETE-satser tillsammans med uttrycksoperator. Det kan vara likhetsoperator eller jämförelseoperator som =,>, =, <= och Like-operator.
  • En underfråga är en fråga i en annan fråga. Den yttre frågan kallas som huvudfrågan och inre fråga kallas som underfråga .
  • Underfrågan körs vanligtvis först när underfrågan inte har någon samförhållande med huvudfrågan , när det finns en samrelation tar parsern beslutet i farten på vilken fråga som ska köras på företräde och använder utdata från underfrågan i enlighet därmed.
  • Underfrågan måste omges inom parentes.
  • Underfrågor finns till höger om jämförelseoperatorn.
  • SORTERA EFTER kommando kan inte användas i en underfråga. GRUPP AV kommandot kan användas för att utföra samma funktion som ORDER BY-kommandot.
  • Använd enradsoperatorer med enkelradsunderfrågor. Använd operatorer med flera rader med underfrågor med flera rader.

Syntax: Det finns ingen allmän syntax för Subqueries. Undersökningar används dock oftast med SELECT-satsen som visas nedan:



SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>

Exempeltabell :

DATABAS

NAMN ROLL_NO PLATS TELEFONNUMMER
Bagge 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
Sasi 103 Madurai 7766553344
Behandling 104 Salem 8989898989
Sumathi 105 Kanchipuram 8989856868

STUDERANDE



NAMN ROLL_NO SEKTION
Behandling 104 A
Sumathi 105 B
Raj 102 A

Exempel på frågor

:

  • För att visa NAME, LOCATION, PHONE_NUMBER av eleverna från DATABASE-tabellen vars sektion är A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Förklaring: Första underfrågan exekverar SELECT ROLL_NO från STUDENT där SECTION='A' returnerar ROLL_NO från STUDENT-tabellen vars SECTION är 'A'. Sedan exekverar den yttre frågan den och returnerar NAME, LOCATION, PHONE_NUMBER från DATABASE-tabellen för studenten vars ROLL_NO returneras från inre delfråga. Produktion:
NAMN ROLL_NO PLATS TELEFONNUMMER
Behandling 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Infoga frågeexempel:

Tabell1: Elev1



NAMN ROLL_NO PLATS TELEFONNUMMER
Bagge 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Behandling 103 salem 8989898989

Tabell2: Elev2

NAMN ROLL_NO PLATS TELEFONNUMMER
Raj 111 chennai 8787878787
Fram tills 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Så här infogar du Student2 i Elev1-tabellen:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Produktion:
NAMN ROLL_NO PLATS TELEFONNUMMER
Bagge 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Behandling 103 salem 8989898989
Raj 111 chennai 8787878787
Fram tills 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Att ta bort elever från Student2-tabellen vars rollno är samma som i Student1-tabellen och har plats som chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Produktion:
1 row delete successfully.>
    Visa elev2-tabell:
NAMN ROLL_NO PLATS TELEFONNUMMER
Fram tills 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • För att uppdatera namnet på eleverna till nördar i Student2-tabellen vars plats är samma som Raju,Ravi i Student1-tabellen
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Produktion:
1 row updated successfully.>
    Visa elev2-tabell:
NAMN ROLL_NO PLATS TELEFONNUMMER
Fram tills 112 mumbai 6565656565
nördar 113 coimbatore 7878787878