logo

SQL | Subquery

In SQL kan een subquery eenvoudigweg worden gedefinieerd als een query binnen een andere query. Met andere woorden, we kunnen zeggen dat een subquery een query is die is ingebed in de WHERE-clausule van een andere SQL-query. Belangrijke regels voor subquery's:

  • U kunt de Subquery in een aantal SQL-clausules plaatsen: WAAR clausule, HAVING-clausule, FROM-clausule. Subquery's kunnen worden gebruikt met SELECT-, UPDATE-, INSERT-, DELETE-instructies samen met de expressie-operator. Dit kan een gelijkheidsoperator of een vergelijkingsoperator zijn, zoals de operator =,>, =, <= en Like.
  • Een subquery is een query binnen een andere query. De buitenste query wordt aangeroepen als belangrijkste vraag en innerlijke query wordt genoemd als subquery .
  • De subquery wordt doorgaans als eerste uitgevoerd als de subquery er geen heeft co-relatie met de belangrijkste vraag , wanneer er een co-relatie is, neemt de parser de beslissing op de vlucht op welke query moet worden uitgevoerd voorrang en gebruikt de uitvoer van de subquery dienovereenkomstig.
  • Subquery's moeten tussen haakjes staan.
  • Subquery's bevinden zich aan de rechterkant van de vergelijkingsoperator.
  • BESTEL DOOR commando kan niet worden gebruikt in een subquery. GEGROEPEERD Het commando kan worden gebruikt om dezelfde functie uit te voeren als het ORDER BY-commando.
  • Gebruik operatoren met één rij met subquery's met één rij. Gebruik operatoren met meerdere rijen met subquery's met meerdere rijen.

Syntaxis: Er is geen algemene syntaxis voor subquery's. Subquery's worden echter het vaakst gebruikt met de SELECT-instructie, zoals hieronder weergegeven:

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

Voorbeeldtabel :



DATABANK

NAAM ROLL_NO PLAATS TELEFOONNUMMER
Ram 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
Sasi 103 Madurai 7766553344
Behandeling 104 Salem 8989898989
Sumathi 105 Kanchipuram 8989856868

STUDENT

NAAM ROLL_NO SECTIE
Behandeling 104 A
Sumathi 105 B
Raj 102 A

Voorbeeldvragen

:

  • Om NAME, LOCATION en PHONE_NUMBER van de studenten uit de DATABASE-tabel waarvan sectie A is weer te geven
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Uitleg: De eerste subquery voert SELECT ROLL_NO uit STUDENT uit, waarbij SECTION='A' ROLL_NO retourneert uit de STUDENT-tabel waarvan SECTION 'A' is. Vervolgens voert de buitenste query deze uit en retourneert de NAME, LOCATION, PHONE_NUMBER uit de DATABASE-tabel van de student wiens ROLL_NO wordt geretourneerd door een innerlijke subquery. Uitgang:
NAAM ROLL_NO PLAATS TELEFOONNUMMER
Behandeling 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Voorbeeld van query invoegen:

Tabel1: Student1

NAAM ROLL_NO PLAATS TELEFOONNUMMER
Ram 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Behandeling 103 verkoop 8989898989

Tabel2: Student2

NAAM ROLL_NO PLAATS TELEFOONNUMMER
Raj 111 chennai 8787878787
Tot 112 Mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Om Student2 in de tabel Student1 in te voegen:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Uitgang:
NAAM ROLL_NO PLAATS TELEFOONNUMMER
Ram 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Behandeling 103 verkoop 8989898989
Raj 111 chennai 8787878787
Tot 112 Mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Om studenten uit de tabel Student2 te verwijderen waarvan het rolnummer hetzelfde is als dat in de tabel Student1 en de locatie Chennai heeft
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Uitgang:
1 row delete successfully.>
    Tabel Student2 weergeven:
NAAM ROLL_NO PLAATS TELEFOONNUMMER
Tot 112 Mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Om de naam van de studenten bij te werken naar nerds in de Student2-tabel waarvan de locatie dezelfde is als Raju, Ravi in ​​de Student1-tabel
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Uitgang:
1 row updated successfully.>
    Tabel Student2 weergeven:
NAAM ROLL_NO PLAATS TELEFOONNUMMER
Tot 112 Mumbai 6565656565
nerds 113 coimbatore 7878787878