logo

SQL | Poddotaz

V SQL môže byť poddotaz jednoducho definovaný ako dotaz v rámci iného dotazu. Inými slovami, môžeme povedať, že poddotaz je dotaz, ktorý je vložený do klauzuly WHERE iného SQL dotazu. Dôležité pravidlá pre poddotazy:

  • Poddotaz môžete umiestniť do niekoľkých klauzúl SQL: KDE doložka, doložka HAVING, doložka FROM. Poddotazy možno použiť s príkazmi SELECT, UPDATE, INSERT, DELETE spolu s výrazovým operátorom. Môže to byť operátor rovnosti alebo operátor porovnávania, ako napríklad =,>, =, <= a operátor Like.
  • Poddotaz je dotaz v rámci iného dotazu. Vonkajší dotaz sa volá as hlavný dotaz a vnútorný dotaz sa nazýva ako poddotaz .
  • Poddotaz sa vo všeobecnosti vykoná ako prvý, keď poddotaz žiadne nemá spoluvzťah s hlavný dotaz , keď existuje korelácia, syntaktický analyzátor prijme rozhodnutie za letu na ktorom dotaze sa má vykonať prednosť a podľa toho použije výstup poddotazu.
  • Poddotaz musí byť uzavretý v zátvorkách.
  • Poddotazy sú na pravej strane operátora porovnávania.
  • ZORADIŤ PODĽA príkaz nemôže použiť v poddotaze. GROUPBY príkaz možno použiť na vykonanie rovnakej funkcie ako príkaz ORDER BY.
  • Použite jednoriadkové operátory s jednoriadkovými poddotazmi. Použite viacriadkové operátory s viacriadkovými poddotazmi.

Syntax: Pre poddotazy neexistuje žiadna všeobecná syntax. Zdá sa však, že poddotazy sa najčastejšie používajú s príkazom SELECT, ako je uvedené nižšie:

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

Vzorová tabuľka :



DATABÁZA

NÁZOV ROLL_NO POLOHA TELEFÓNNE ČÍSLO
Ram 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
Sasi 103 Madurai 7766553344
Liečba 104 Salem 8989898989
Sumathi 105 Kanchipuram 8989856868

ŠTUDENT

NÁZOV ROLL_NO ODDIEL
Liečba 104 A
Sumathi 105 B
Raj 102 A

Vzorové dopyty

break java

:

  • Ak chcete zobraziť NAME, LOCATION, PHONE_NUMBER študentov z tabuľky DATABASE, ktorej sekcia je A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Vysvetlenie: Prvý poddotaz vykoná SELECT ROLL_NO od STUDENT, kde SECTION='A' vráti ROLL_NO z tabuľky STUDENT, ktorej SEKCIA je 'A'. Potom ho vykoná vonkajší dotaz a vráti NAME, LOCATION, PHONE_NUMBER z tabuľky DATABASE študenta, ktorého ROLL_NO sa vráti z vnútorného poddotazu. Výkon:
NÁZOV ROLL_NO POLOHA TELEFÓNNE ČÍSLO
Liečba 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Príklad vloženia dopytu:

Tabuľka1: Študent1

NÁZOV ROLL_NO POLOHA TELEFÓNNE ČÍSLO
Ram 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Liečba 103 salem 8989898989

Tabuľka2: Študent2

NÁZOV ROLL_NO POLOHA TELEFÓNNE ČÍSLO
Raj 111 chennai 8787878787
Až kým 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Ak chcete vložiť Študent2 do tabuľky Študent1:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Výkon:
NÁZOV ROLL_NO POLOHA TELEFÓNNE ČÍSLO
Ram 101 chennai 9988773344
Raju 102 coimbatore 9090909090
Liečba 103 salem 8989898989
Raj 111 chennai 8787878787
Až kým 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Ak chcete odstrániť študentov z tabuľky Student2, ktorých rollno je rovnaké ako v tabuľke Študent1 a má umiestnenie ako chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Výkon:
1 row delete successfully.>
    Zobraziť tabuľku Študent2:
NÁZOV ROLL_NO POLOHA TELEFÓNNE ČÍSLO
Až kým 112 mumbai 6565656565
Sri 113 coimbatore 7878787878
  • Ak chcete aktualizovať mená študentov na geekov v tabuľke Študent2, ktorých umiestnenie je rovnaké ako Raju, Ravi v tabuľke Študent1
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Výkon:
1 row updated successfully.>
    Zobraziť tabuľku Študent2:
NÁZOV ROLL_NO POLOHA TELEFÓNNE ČÍSLO
Až kým 112 mumbai 6565656565
geekov 113 coimbatore 7878787878