logo

SQL | Podpoizvedba

V SQL lahko podpoizvedbo preprosto definiramo kot poizvedbo znotraj druge poizvedbe. Z drugimi besedami lahko rečemo, da je podpoizvedba poizvedba, ki je vdelana v klavzulo WHERE druge poizvedbe SQL. Pomembna pravila za podpoizvedbe:

  • Podpoizvedbo lahko postavite v številne klavzule SQL: KJE stavek, stavek HAVING, stavek FROM. Podpoizvedbe je mogoče uporabiti s stavki SELECT, UPDATE, INSERT, DELETE skupaj z izraznim operatorjem. Lahko je operator enakosti ali primerjalni operator, kot je =,>, =, <= in operator Like.
  • Podpoizvedba je poizvedba znotraj druge poizvedbe. Zunanja poizvedba se imenuje as glavna poizvedba in notranja poizvedba se imenuje kot podpoizvedbo .
  • Podpoizvedba se običajno izvede prva, če podpoizvedba nima nobenega soodnos z glavna poizvedba , kadar obstaja sorelacija, razčlenjevalnik sprejme odločitev spotoma na katero poizvedbo naj se izvede prednost in ustrezno uporabi izhod podpoizvedbe.
  • Podpoizvedba mora biti v oklepajih.
  • Podpoizvedbe so na desni strani primerjalnega operatorja.
  • NAROČI PO ukaz ne more uporabiti v podpoizvedbi. GROUPBY ukaz se lahko uporablja za izvajanje iste funkcije kot ukaz ORDER BY.
  • Uporabite enovrstične operaterje z enovrstičnimi podpoizvedbami. Uporabite večvrstične operaterje s podpoizvedbami z več vrsticami.

Sintaksa: Za podpoizvedbe ni splošne sintakse. Vendar se zdi, da se podpoizvedbe najpogosteje uporabljajo s stavkom SELECT, kot je prikazano spodaj:

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

Vzorčna tabela :



BAZA PODATKOV

IME ROLL_ŠT LOKACIJA TELEFONSKA ŠTEVILKA
Oven 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
Sasi 103 Madurai 7766553344
Zdravljenje 104 Salem 8989898989
Sumathi 105 Kanchipuram 8989856868

ŠTUDENT

IME ROLL_ŠT ODDELEK
Zdravljenje 104 A
Sumathi 105 B
Raj 102 A

Vzorčne poizvedbe

:

  • Za prikaz NAME, LOCATION, PHONE_NUMBER študentov iz tabele DATABASE, katere razdelek je A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Pojasnilo: Prva podpoizvedba izvede SELECT ROLL_NO od STUDENT, kjer SECTION='A' vrne ROLL_NO iz tabele STUDENT, katere SECTION je 'A'. Nato jo izvede zunanja poizvedba in vrne NAME, LOCATION, PHONE_NUMBER iz tabele DATABASE študenta, katerega ROLL_NO se vrne iz notranje podpoizvedbe. Izhod:
IME ROLL_ŠT LOKACIJA TELEFONSKA ŠTEVILKA
Zdravljenje 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Primer vstavi poizvedbo:

Tabela1: Študent1

IME ROLL_ŠT LOKACIJA TELEFONSKA ŠTEVILKA
Oven 101 chennai 9988773344
Raju 102 Coimbatore 9090909090
Zdravljenje 103 Salem 8989898989

Tabela2: Študent2

IME ROLL_ŠT LOKACIJA TELEFONSKA ŠTEVILKA
Raj 111 chennai 8787878787
dokler 112 Mumbai 6565656565
Sri 113 Coimbatore 7878787878
  • Če želite vstaviti Student2 v tabelo Student1:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Izhod:
IME ROLL_ŠT LOKACIJA TELEFONSKA ŠTEVILKA
Oven 101 chennai 9988773344
Raju 102 Coimbatore 9090909090
Zdravljenje 103 Salem 8989898989
Raj 111 chennai 8787878787
dokler 112 Mumbai 6565656565
Sri 113 Coimbatore 7878787878
  • Za brisanje študentov iz tabele Student2, katerih rollno je enako tistemu v tabeli Student1 in ima lokacijo kot chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Izhod:
1 row delete successfully.>
    Prikaz tabele Student2:
IME ROLL_ŠT LOKACIJA TELEFONSKA ŠTEVILKA
dokler 112 Mumbai 6565656565
Sri 113 Coimbatore 7878787878
  • Za posodobitev imena študentov v geeke v tabeli Student2, katerih lokacija je enaka kot Raju,Ravi v tabeli Student1
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Izhod:
1 row updated successfully.>
    Prikaz tabele Student2:
IME ROLL_ŠT LOKACIJA TELEFONSKA ŠTEVILKA
dokler 112 Mumbai 6565656565
geeki 113 Coimbatore 7878787878