Būtinos sąlygos: SQL pagrindai
Įdėtos užklausos yra būdas atlikti sudėtingas užklausas įterpiant vieną užklausą į kitą. Išorinė užklausa gali taikyti kai kurias sąlygas vidinės užklausos rezultatams. Leiskite mums naudoti STUDENT, COURSE, STUDENT_COURSE lentelės, skirtos įdėtoms užklausoms suprasti.
STUDENTAS
| S_ID | S_NAME | S_ADDRESS | S_PHONE | S_AGE |
| S1 | RAM | DELIS | 9455123451 | 18 |
| S2 | RAMESH | GURGAONAS | 9652431543 | 18 |
| S3 | SUJIT | ROHTAK | 9156253131 | dvidešimt |
| S4 | SURESH | DELIS | 9156768971 | 18 |
KURSAS
Java rūšiavimas masyvo sąraše
| C_ID | C_NAME |
| C1 | DSA |
| C2 | Programavimas |
| C3 | DBVS |
STUDENT_KURSAS
| S_ID | C_ID |
| S1 | C1 |
| S1 | C3 |
| S2 | C1 |
| S3 | C2 |
| S4 | C2 |
| S4 | C3 |
Iš esmės yra dviejų tipų įdėtos užklausos:
- Nepriklausomos įdėtos užklausos: Nepriklausomose įdėtose užklausose užklausos vykdymas prasideda nuo vidinės užklausos iki atokiausių užklausų. Vidinės užklausos vykdymas nepriklauso nuo išorinės, tačiau vidinės užklausos rezultatas naudojamas vykdant išorinę užklausą. Įvairūs operatoriai, tokie kaip IN, NOT IN, ANY, ALL ir tt, naudojami rašant nepriklausomas įdėtas užklausas.
IN: Jei norime išsiaiškinti S_ID kurie yra užsiregistravę C_NAME „DSA“ arba „DBMS“, galime parašyti naudodami nepriklausomą įdėtą užklausą ir IN operatorių. Nuo KURSAS lentelę, galime sužinoti C_ID dėl C_NAME „DSA“ arba DBVS“, ir mes galime juos naudoti C_ID s už radimą S_ID s nuo STUDENT_KURSAS LENTELĖ. 1 ŽINGSNIS: Suradimas C_ID dėl C_NAME =„DSA“ arba „DBVS“ Pasirinkite C_ID iš KURSAS kur C_NAME = „DSA“ arba C_NAME = 'DBVS' 2 ŽINGSNIS: Naudojant C_ID 1 žingsnyje, kad surastumėte S_ID Pasirinkite S_ID iš STUDENT_KURSAS kur C_ID IN (PASIRINKTI C_ID iš KURSAS kur C_NAME = „DSA“ arba C_NAME ='DBVS'); Vidinė užklausa pateiks rinkinį su nariais C1 ir C3, o išorinė – tuos S_ID s dėl kurių C_ID yra lygus bet kuriam aibės nariui (šiuo atveju C1 ir C3). Taigi, jis grąžins S1, S2 ir S4. Pastaba: Jei norime sužinoti vardus STUDENTAS kurie užsiregistravo „DSA“ arba „DBVS“, tai galima padaryti taip: Pasirinkite S_NAME iš STUDENTAS kur S_ID IN (pasirinkite S_ID iš STUDENT_KURSAS kur C_ID IN (PASIRINKTI C_ID iš KURSAS kur C_NAME ='DSA' arba C_NAME ='DBVS'));
NĖRA: Jei norime išsiaiškinti S_ID s iš STUDENTAS s, kurie nėra užsiregistravę nei „DSA“, nei „DBVS“, tai galima padaryti taip: Pasirinkite S_ID iš STUDENTAS kur S_ID NE IN (pasirinkite S_ID iš STUDENT_KURSAS kur C_ID IN (PASIRINKTI C_ID iš KURSAS kur C_NAME ='DSA' arba C_NAME ='DBVS')); Vidinė užklausa pateiks rinkinį su nariais C1 ir C3. Antroji vidinė užklausa juos grąžins S_ID s dėl kurių C_ID yra lygus bet kuriam aibės nariui (šiuo atveju C1 ir C3), kurie yra S1, S2 ir S4. Tolimiausia užklausa juos grąžins S_ID s kur S_ID nėra aibės (S1, S2 ir S4) narys. Taigi jis grąžins S3.
- Kartu susijusios įdėtos užklausos: Kartu susijusiose įdėtosiose užklausose vidinės užklausos išvestis priklauso nuo eilutės, kuri šiuo metu vykdoma išorinėje užklausoje. pvz.; Jei norime išsiaiškinti S_NAME apie STUDENTAS s, kurie yra užsiregistravę C_ID „C1“, tai galima padaryti naudojant kartu susijusią įdėtą užklausą, kaip: Pasirinkite S_NAME iš STUDENTAS S kur YRA ( pasirinkite * iš STUDENT_KURSAS SC, kur S. S_ID =SC. S_ID ir SC. C_ID ='C1'); Kiekvienai eilutei STUDENTAS S, jis suras eilutes iš STUDENT_KURSAS kur yra. S_ID = SC. S_ID ir SC. C_ID ='C1'. Jei už a S_ID iš STUDENTAS S, bent jau yra eilutė STUDENT_KURSAS SC su C_ID ='C1', tada vidinė užklausa pateiks teisingą ir atitinkamą S_ID bus grąžinta kaip produkcija.
PAVYZDYS SQL KODE:
PASIRINKITE Mokinio vardą
IŠ Studentų
KUR Įeina studento ID (
java atvirkštinė eilutėPASIRINKITE Studento ID
IŠ pažymių
WHERE Tema = „Matematika“ IR balas> 90
);