logo

SQL | Underforespørgsel

I SQL kan en underforespørgsel simpelthen defineres som en forespørgsel i en anden forespørgsel. Med andre ord kan vi sige, at en underforespørgsel er en forespørgsel, der er indlejret i WHERE-klausulen i en anden SQL-forespørgsel. Vigtige regler for underforespørgsler:

  • Du kan placere underforespørgslen i en række SQL-sætninger: HVOR klausul, HAVING-klausul, FROM-klausul. Underforespørgsler kan bruges med SELECT-, UPDATE-, INSERT-, DELETE-sætninger sammen med udtryksoperator. Det kunne være lighedsoperator eller sammenligningsoperator såsom =,>, =, <= og Like-operator.
  • En underforespørgsel er en forespørgsel i en anden forespørgsel. Den ydre forespørgsel kaldes som hovedforespørgsel og indre forespørgsel kaldes som underforespørgsel .
  • Underforespørgslen udføres generelt først, når underforespørgslen ikke har nogen samrelation med hovedforespørgsel , når der er en co-relation, tager parseren beslutningen på farten på hvilken forespørgsel der skal udføres på forrang og bruger outputtet fra underforespørgslen i overensstemmelse hermed.
  • Underforespørgsel skal angives i parentes.
  • Underforespørgsler er på højre side af sammenligningsoperatoren.
  • BESTIL EFTER kommando kan ikke bruges i en underforespørgsel. GRUPPEBY kommando kan bruges til at udføre samme funktion som ORDER BY kommando.
  • Brug enkeltrække-operatorer med enkeltrække-underforespørgsler. Brug operatorer med flere rækker med underforespørgsler med flere rækker.

Syntaks: Der er ikke nogen generel syntaks for underforespørgsler. Underforespørgsler ses dog at blive brugt oftest med SELECT-sætning som vist nedenfor:



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

Eksempel tabel :

DATABASE

NAVN ROLL_NO BELIGGENHED TELEFONNUMMER
Vædder 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
Sasi 103 Madurai 7766553344
Behandling 104 Salem 8989898989
Sumathi 105 Kanchipuram 8989856868

STUDERENDE



NAVN ROLL_NO AFSNIT
Behandling 104 EN
Sumathi 105 B
Raj 102 EN

Eksempelforespørgsler

:

  • For at vise NAME, LOCATION, PHONE_NUMBER af eleverne fra DATABASE-tabellen, hvis sektion er A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Forklaring: Første underforespørgsel udfører SELECT ROLL_NO fra STUDENT, hvor SECTION='A' returnerer ROLL_NO fra STUDENT-tabellen, hvis SECTION er 'A'. Derefter udfører den ydre forespørgsel den og returnerer NAME, LOCATION, PHONE_NUMBER fra DATABASE-tabellen for den studerende, hvis ROLL_NO returneres fra indre underforespørgsel. Produktion:
NAVN ROLL_NO BELIGGENHED TELEFONNUMMER
Behandling 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Indsæt forespørgselseksempel:

Tabel 1: Elev1



funktioner af arduino
NAVN ROLL_NO BELIGGENHED TELEFONNUMMER
Vædder 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Behandling 103 salem 8989898989

Tabel2: Elev2

NAVN ROLL_NO BELIGGENHED TELEFONNUMMER
Raj 111 chennai 8787878787
Indtil 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Sådan indsætter du Elev2 i Elev1-tabellen:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Produktion:
NAVN ROLL_NO BELIGGENHED TELEFONNUMMER
Vædder 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Behandling 103 salem 8989898989
Raj 111 chennai 8787878787
Indtil 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • For at slette elever fra Student2-tabellen, hvis rollno er den samme som i Student1-tabellen og har placering som chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Produktion:
1 row delete successfully.>
    Vis elev2-tabel:
NAVN ROLL_NO BELIGGENHED TELEFONNUMMER
Indtil 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • For at opdatere navn på eleverne til nørder i Student2-tabellen, hvis placering 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’));>
  • Produktion:
1 row updated successfully.>
    Vis elev2-tabel:
NAVN ROLL_NO BELIGGENHED TELEFONNUMMER
Indtil 112 mumbai 6565656565
nørder 113 coimbatore 7878787878