I SQL kan en underspørring ganske enkelt defineres som en spørring i en annen spørring. Med andre ord kan vi si at en underspørring er en spørring som er innebygd i WHERE-klausulen til en annen SQL-spørring. Viktige regler for underspørringer:
- Du kan plassere underspørringen i en rekke SQL-klausuler: HVOR klausul, HAVING-klausul, FROM-klausul. Underspørringer kan brukes med SELECT, UPDATE, INSERT, DELETE-setninger sammen med uttrykksoperator. Det kan være likhetsoperator eller sammenligningsoperator som =,>, =, <= og Like-operator.
- En underspørring er en spørring i en annen spørring. Den ytre spørringen kalles som hovedspørsmålet og indre spørring kalles som underspørring .
- Underspørringen kjøres vanligvis først når underspørringen ikke har noen samrelasjon med hovedspørsmålet , når det er en co-relasjon tar parseren avgjørelsen i farten på hvilken spørring som skal utføres på presedens og bruker utdataene fra underspørringen tilsvarende.
- Underspørring må settes i parentes.
- Underspørringer er på høyre side av sammenligningsoperatoren.
- REKKEFØLGE ETTER kommando kan ikke brukes i en underspørring. GRUPPE AV kommandoen kan brukes til å utføre samme funksjon som ORDER BY-kommandoen.
- Bruk enkeltradsoperatorer med enkeltrads underspørringer. Bruk operatorer med flere rader med underspørringer med flere rader.
Syntaks: Det er ingen generell syntaks for underspørringer. Imidlertid ser det ut til at underspørringer brukes oftest med SELECT-setningen som vist nedenfor:
listenode
SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>
Eksempeltabell :
DATABASE
| NAVN | ROLL_NO | PLASSERING | TELEFONNUMMER |
|---|---|---|---|
| RAM | 101 | Chennai | 9988775566 |
| Raj | 102 | Coimbatore | 8877665544 |
| Sasi | 103 | Madurai | 7766553344 |
| Behandling | 104 | Salem | 8989898989 |
| Sumathi | 105 | Kanchipuram | 8989856868 |
STUDENT
| NAVN | ROLL_NO | SEKSJON |
|---|---|---|
| Behandling | 104 | EN |
| Sumathi | 105 | B |
| Raj | 102 | EN |
Eksempelspørsmål
:
- For å vise NAME, LOCATION, PHONE_NUMBER av elevene fra DATABASE-tabellen hvis del er A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
- Forklaring: Første underspørring utfører SELECT ROLL_NO fra STUDENT der SECTION='A' returnerer ROLL_NO fra STUDENT-tabellen hvis SECTION er 'A'. Deretter utfører den ytre spørringen den og returnerer NAME, LOCATION, PHONE_NUMBER fra DATABASE-tabellen til studenten som har ROLL_NO returneres fra indre underspørring. Produksjon:
| NAVN | ROLL_NO | PLASSERING | TELEFONNUMMER |
| Behandling | 104 | Salem | 8989898989 |
| Raj | 102 | Coimbatore | 8877665544 |
- Sett inn spørringseksempel:
Tabell1: Student1
fordelene med elektrisitet
| NAVN | ROLL_NO | PLASSERING | TELEFONNUMMER | |
|---|---|---|---|---|
| RAM | 101 | chennai | 9988773344 | |
| Raju | 102 | coimbatore | 9090909090 | |
| Behandling | 103 | salem | 8989898989 |
Tabell2: Student2
| NAVN | ROLL_NO | PLASSERING | TELEFONNUMMER | |
|---|---|---|---|---|
| Raj | 111 | chennai | 8787878787 | |
| Før | 112 | mumbai | 6565656565 | |
| Sri | 113 | coimbatore | 7878787878 |
- Slik setter du inn Student2 i Student1-tabellen:
INSERT INTO Student1 SELECT * FROM Student2;>
- Produksjon:
| NAVN | ROLL_NO | PLASSERING | TELEFONNUMMER | |
|---|---|---|---|---|
| RAM | 101 | chennai | 9988773344 | |
| Raju | 102 | coimbatore | 9090909090 | |
| Behandling | 103 | salem | 8989898989 | |
| Raj | 111 | chennai | 8787878787 | |
| Før | 112 | mumbai | 6565656565 | |
| Sri | 113 | coimbatore | 7878787878 |
- For å slette studenter fra Student2-tabellen hvis rollno er den samme som i Student1-tabellen og har plassering som chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
- Produksjon:
1 row delete successfully.>
- Vis elev2-tabell:
| NAVN | ROLL_NO | PLASSERING | TELEFONNUMMER | |
|---|---|---|---|---|
| Før | 112 | mumbai | 6565656565 | |
| Sri | 113 | coimbatore | 7878787878 |
- For å oppdatere navnet på studentene til nerder i Student2-tabellen hvis plassering er den samme som Raju,Ravi i Student1-tabellen
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
- Produksjon:
1 row updated successfully.>
- Vis elev2-tabell:
| NAVN | ROLL_NO | PLASSERING | TELEFONNUMMER | |
|---|---|---|---|---|
| Før | 112 | mumbai | 6565656565 | |
| nerder | 113 | coimbatore | 7878787878 |