logo

SQL | Antrinė užklausa

SQL antrinė užklausa gali būti tiesiog apibrėžta kaip užklausa kitoje užklausoje. Kitaip tariant, galime pasakyti, kad antrinė užklausa yra užklausa, įterpta į kitos SQL užklausos WHERE sąlygą. Svarbios papildomos užklausos taisyklės:

  • Papildomą užklausą galite įdėti į keletą SQL sąlygų: KUR sąlyga, HAVING sąlyga, FROM. Papildomos užklausos gali būti naudojamos su SELECT, UPDATE, INSERT, DELETE sakiniais kartu su išraiškos operatoriumi. Tai gali būti lygybės operatorius arba palyginimo operatorius, pvz., =,>, =, <= ir operatorius Like.
  • Antrinė užklausa yra užklausa kitoje užklausoje. Išorinė užklausa vadinama kaip pagrindinė užklausa o vidinė užklausa vadinama kaip antrinė užklausa .
  • Paprastai antrinė užklausa vykdoma pirmiausia, kai antrinėje užklausoje jos nėra bendras ryšys su pagrindinė užklausa , kai yra bendras ryšys, sprendimą priima analizatorius skrendant pagal kurią užklausą vykdyti pirmenybė ir atitinkamai naudoja antrinės užklausos išvestį.
  • Papildoma užklausa turi būti pateikta skliausteliuose.
  • Papildomos užklausos yra dešinėje palyginimo operatoriaus pusėje.
  • RŪŠIUOTI PAGAL komandą negali būti naudojamas papildomoje užklausoje. GRUPUOTI PAGAL komanda gali būti naudojama atlikti tą pačią funkciją kaip ir komanda ORDER BY.
  • Naudokite vienos eilutės operatorius su vienos eilutės papildomomis užklausomis. Naudokite kelių eilučių operatorius su kelių eilučių papildomomis užklausomis.

Sintaksė: Nėra jokios bendros antrinių užklausų sintaksės. Tačiau antrinės užklausos dažniausiai naudojamos su SELECT sakiniu, kaip parodyta toliau:

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

Lentelės pavyzdys :



DUOMENŲ BAZĖ

VARDAS ROLL_NO VIETA TELEFONO NUMERIS
Ram 101 Čenajus 9988775566
Raj 102 Koimbatorė 8877665544
Sasi 103 Madurai 7766553344
Gydymas 104 Salem 8989898989
sumatai 105 Kančipuramas 8989856868

STUDENTAS

VARDAS ROLL_NO SKYRIUS
Gydymas 104 A
sumatai 105 B
Raj 102 A

Užklausų pavyzdžiai

:

  • Norėdami rodyti NAME, LOCATION, PHONE_NUMBER mokinių iš DATABASE lentelės, kurios skyrius yra A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Paaiškinimas: pirmoji antrinė užklausa vykdo SELECT ROLL_NO iš STUDENT, kur SECTION='A' grąžina ROLL_NO iš STUDENT lentelės, kurios SECTION yra 'A'. Tada išorinė užklausa ją įvykdo ir grąžina NAME, LOCATION, PHONE_NUMBER iš mokinio, kurio ROLL_NO DUOMENŲ BAZĖS lentelės. grąžinama iš vidinės antrinės užklausos. Išvestis:
VARDAS ROLL_NO VIETA TELEFONO NUMERIS
Gydymas 104 Salem 8989898989
Raj 102 Koimbatorė 8877665544
  • Įterpti užklausos pavyzdį:

1 lentelė: Studentas1

VARDAS ROLL_NO VIETA TELEFONO NUMERIS
Ram 101 čennai 9988773344
Raju 102 koimbatore 9090909090
Gydymas 103 salemas 8989898989

2 lentelė: Studentas2

VARDAS ROLL_NO VIETA TELEFONO NUMERIS
Raj 111 čennai 8787878787
Iki 112 Mumbajus 6565656565
Šri 113 koimbatore 7878787878
  • Norėdami įterpti Student2 į Student1 lentelę:
INSERT INTO Student1 SELECT * FROM Student2;>
  • Išvestis:
VARDAS ROLL_NO VIETA TELEFONO NUMERIS
Ram 101 čennai 9988773344
Raju 102 koimbatore 9090909090
Gydymas 103 salemas 8989898989
Raj 111 čennai 8787878787
Iki 112 Mumbajus 6565656565
Šri 113 koimbatore 7878787878
  • Ištrinti mokinius iš Student2 lentelės, kurių rollno yra toks pat kaip Student1 lentelėje ir kurio vieta yra chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Išvestis:
1 row delete successfully.>
    Rodyti Student2 lentelę:
VARDAS ROLL_NO VIETA TELEFONO NUMERIS
Iki 112 Mumbajus 6565656565
Šri 113 koimbatore 7878787878
  • Atnaujinti studentų vardus į Geeks Student2 lentelėje, kurių vieta yra tokia pati kaip Raju, Ravi Student1 lentelėje
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Išvestis:
1 row updated successfully.>
    Rodyti Student2 lentelę:
VARDAS ROLL_NO VIETA TELEFONO NUMERIS
Iki 112 Mumbajus 6565656565
geeks 113 koimbatore 7878787878