SQL | Apakšvaicājums
SQL apakšvaicājumu var vienkārši definēt kā vaicājumu citā vaicājumā. Citiem vārdiem sakot, mēs varam teikt, ka apakšvaicājums ir vaicājums, kas ir iegults cita SQL vaicājuma WHERE klauzulā. Svarīgi apakšvaicājumu noteikumi:
- Apakšvaicājumu var ievietot vairākās SQL klauzulās: KUR klauzula, HAVING klauzula, FROM klauzula. Apakšvaicājumus var izmantot ar SELECT, UPDATE, INSERT, DELETE priekšrakstiem kopā ar izteiksmes operatoru. Tas varētu būt vienlīdzības operators vai salīdzināšanas operators, piemēram, =,>, =, <= un operators Like.
- Apakšvaicājums ir vaicājums citā vaicājumā. Ārējais vaicājums tiek saukts kā galvenais vaicājums un iekšējo vaicājumu sauc kā apakšvaicājums .
- Apakšvaicājums parasti tiek izpildīts pirmais, ja apakšvaicājumā tāda nav kopattiecības Ar galvenais vaicājums , ja pastāv kopsakarība, parsētājs pieņem lēmumu lidojumā kurā vaicājumā izpildīt prioritāte un attiecīgi izmanto apakšvaicājuma izvadi.
- Apakšvaicājums jāiekļauj iekavās.
- Apakšvaicājumi atrodas salīdzināšanas operatora labajā pusē.
- SAKĀRTOT PĒC komandu nevar izmantot apakšvaicājumā. GROUPBY komandu var izmantot, lai veiktu to pašu funkciju kā komanda ORDER BY.
- Izmantojiet vienas rindas operatorus ar vienas rindas apakšvaicājumiem. Izmantojiet vairāku rindu operatorus ar vairāku rindu apakšvaicājumiem.
Sintakse: Apakšvaicājumiem nav vispārējas sintakses. Tomēr tiek uzskatīts, ka apakšvaicājumi tiek izmantoti visbiežāk ar SELECT priekšrakstu, kā parādīts tālāk:
SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );
Tabulas paraugs :
DATU BĀZE
| VĀRDS | ROLL_NO | ATRAŠANĀS VIETA | TELEFONA NUMURS |
|---|---|---|---|
| Ram | 101 | Čennaja | 9988775566 |
| Raj | 102 | Koimbatore | 8877665544 |
| Sasi | 103 | Madurai | 7766553344 |
| Ārstēšana | 104 | Salem | 8989898989 |
| Sumathi | 105 | Kančipurama | 8989856868 |
STUDENTS
| VĀRDS | ROLL_NO | SADAĻA |
|---|---|---|
| Ārstēšana | 104 | A |
| Sumathi | 105 | B |
| Raj | 102 | A |
Vaicājumu paraugi
:
- Lai parādītu NAME, LOCATION, PHONE_NUMBER no skolēniem no DATABASE tabulas, kuras sadaļa ir A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);
- Paskaidrojums: pirmais apakšvaicājums izpilda SELECT ROLL_NO no STUDENT, kur SECTION='A' atgriež ROLL_NO no tabulas STUDENT, kuras SECTION ir 'A'. Pēc tam ārējais vaicājums izpilda to un atgriež NAME, LOCATION, PHONE_NUMBER no skolēna, kura ROLL_NO DATU BĀZES tabulas. tiek atgriezts no iekšējā apakšvaicājuma. Izvade:
| VĀRDS | ROLL_NO | ATRAŠANĀS VIETA | TELEFONA NUMURS |
| Ārstēšana | 104 | Salem | 8989898989 |
| Raj | 102 | Koimbatore | 8877665544 |
- Ievietot vaicājuma piemēru:
1. tabula: Student1
| VĀRDS | ROLL_NO | ATRAŠANĀS VIETA | TELEFONA NUMURS | |
|---|---|---|---|---|
| Ram | 101 | čennai | 9988773344 | |
| Raju | 102 | koimbatore | 9090909090 | |
| Ārstēšana | 103 | Salem | 8989898989 |
2. tabula: Student2
| VĀRDS | ROLL_NO | ATRAŠANĀS VIETA | TELEFONA NUMURS | |
|---|---|---|---|---|
| Raj | 111 | čennai | 8787878787 | |
| Līdz plkst | 112 | Mumbaja | 6565656565 | |
| Šri | 113 | koimbatore | 7878787878 |
- Lai ievietotu Student2 tabulā Student1:
INSERT INTO Student1 SELECT * FROM Student2;
- Izvade:
| VĀRDS | ROLL_NO | ATRAŠANĀS VIETA | TELEFONA NUMURS | |
|---|---|---|---|---|
| Ram | 101 | čennai | 9988773344 | |
| Raju | 102 | koimbatore | 9090909090 | |
| Ārstēšana | 103 | Salem | 8989898989 | |
| Raj | 111 | čennai | 8787878787 | |
| Līdz plkst | 112 | Mumbaja | 6565656565 | |
| Šri | 113 | koimbatore | 7878787878 |
- Dzēst studentus no tabulas Student2, kuru rollno ir tāds pats kā Student1 tabulā un kura atrašanās vieta ir chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);
- Izvade:
1 row delete successfully.
- Parādīt Student2 tabulu:
| VĀRDS | ROLL_NO | ATRAŠANĀS VIETA | TELEFONA NUMURS | |
|---|---|---|---|---|
| Līdz plkst | 112 | Mumbaja | 6565656565 | |
| Šri | 113 | koimbatore | 7878787878 |
- Atjaunināt studentu vārdus uz Geeks tabulā Student2, kuru atrašanās vieta ir tāda pati kā Raju, Ravi tabulā Student1
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));
- Izvade:
1 row updated successfully.
- Parādīt Student2 tabulu:
| VĀRDS | ROLL_NO | ATRAŠANĀS VIETA | TELEFONA NUMURS | |
|---|---|---|---|---|
| Līdz plkst | 112 | Mumbaja | 6565656565 | |
| geeks | 113 | koimbatore | 7878787878 |