SQL vaicājumi ir RDBMS CRUD (izveidot, lasīt, atjaunināt, dzēst) gaļa un kartupeļi. Bet, kad jūsu lietojumprogramma vai uzņēmuma datu bāze aug, nepieciešamība pēc viediem vaicājumiem, lai izgūtu nosacītus, prasībām specifiskus datus, kļūst par obligātu.
SQL ir salīdzinoši visaptveroša, ietverot daudzas funkcijas, no kurām katra ir labi piemērota dažādiem biznesa mērķiem. Viena no šādām funkcijām ietver apakšvaicājumu izmantošanu.
Lai padarītu savus kodus efektīvus, varat izmantot apakšvaicājumus savos SQL kodos, lai iegūtu datus, manipulētu ar esošajiem mainīgajiem un sasniegtu vairākus mērķus vienā reizē.
Kas ir SQL apakšvaicājumi?
Apakšvaicājums ir ligzdots vaicājums, kas darbojas kā parametrs citā galvenajā vaicājumā. Apakšvaicājums ir an iekšējais vaicājums, kamēr galvenais vaicājums ir ārējais vaicājums.
Apakšvaicājums it kā atgriež datus kā argumentu iekavās galvenajam vaicājumam, savukārt galvenais vaicājums tālāk izgūst gala rezultātu.
Apakšvaicājumi ir iegulti Izvēlieties paziņojumā vai
Kur klauzula. Šāda struktūra ļauj apakšvaicājumam darboties kā labi aprakstītam datu filtrēšanas nosacījumam. Diemžēl apakšvaicājumos var izmantot tikai Grupēt pēc komandas un nē Sakārtot pēc komandas, jo tās ir atļautas tikai galvenajā vaicājumā.Saistīts: Viss, kas jums jāzina par SQL GROUP BY paziņojumu
Parasti katrs apakšvaicājums sastāv no vienas kolonnas ar Izvēlieties klauzula. Tomēr ir gadījumi, kad galvenajam vaicājumam ir vairākas kolonnas. Apakšvaicājumu var ligzdot citā apakšvaicājumā, padarot to par ligzdošanas apakšvaicājumu.
Apakšvaicājuma ierobežojums ir šāds:
Tabulā atlasiet kolonnas_nosaukums, kur nosacījums=
(ATLASĪT nosacījuma_kolonna NO tabulas) kā aizstājvārdu;
Piemēram, pieņemsim, ka jums ir šāda tabula:
ID | Vārds | Otrais vārds | Aģentūras_maksa |
1 | Džons | Dakts | 5000 |
2 | Roberts | Grehems | 4000 |
3 | Stīvens | Hiks | 8000 |
4 | Bobs | Mārlijs | 1000 |
5 | Marija | Elena | 9000 |
Šajā tabulā, lai iegūtu to cilvēku vārdus, kuri nopelna virs vidējās aģentūras maksas, varat uzrakstīt apakšvaicājumu, nevis rakstīt vairākas koda rindiņas.
Saistīts: Kā izveidot tabulu SQL
Lūk, kā izskatās vaicājums:
Atlasiet * no agent_details
kur Aģentūras_Maksa > (atlasiet vid. (Aģentūras_maksa) no agent_details);
Komanda pirms > zīme ir ārējais vaicājums, savukārt viss pēc > zīme ir iekšējais vaicājums.
Iekšējais vaicājums aprēķinās vidējo aģentūras maksu apakšvaicājumā, un ārējā vaicājumā tiks parādītas visas vērtības, kas ir lielākas par aprēķināto vidējo vērtību.
Kā izmantot apakšvaicājumus SQL?
Ir daži dažādi veidi, kā SQL var izmantot apakšvaicājumus.
Apakšvaicājumi ar Kur klauzulu
Viena no visvienkāršākajām SQL apakšvaicājuma struktūrām atrodas klauzulā Kur. Tas ir vienkāršākais veids, kā noteikt, ko meklējat. Izvēles priekšraksts atgriež vērtības atbilstoši apakšvaicājuma nosacījumam(-iem) un izmanto to kā parametru galvenajam vaicājumam.
Vaicājuma struktūra:
atlasiet * no tabulas_nosaukums
kur kolonnas_nosaukums = (no tabulas_nosaukums atlasiet kolonnas_nosaukums);
Paskaidrosim to ar piemēru.
Pieņemsim, ka vēlaties atrast otro augstāko aģentūras maksu no tabulas agency_details. Lai to izdarītu, SQL ir alternatīvas funkcijas; tomēr labākā metode ir izmantot apakšvaicājumu.
Tālāk ir norādīts, kā varat definēt apakšvaicājumu.
atlasiet *, max (aģentūras_maksa)
no agent_details
kur aģentūras_maksa < (atlasiet max (Aģentūras_maksa) no aģenta_detaļas);
Iegūtais paziņojums jums parādīs 8000, kas ir otrā augstākā maksa dotajā tabulā. Kad vaicājums tiek izpildīts, apakšvaicājums aprēķina maksimālo vērtību no maksas saraksta. Lielākā maksas summa (9000) tiek saglabāts atmiņā.
Kad šī daļa ir aprēķināta, tiek aprēķināta vaicājuma otrā daļa, kas atrod otro augstāko maksu no tabulas (kopš < tiek izmantota zīme). Gala rezultāts ir 8000, kas ir otrā augstākā maksa tabulā.
Apakšvaicājumi no klauzulas ietvaros
Vēl viena apakšvaicājumu variācija ir nosacījuma nodošana no klauzula. Līdzīga koncepcija ir tāda, ka vispirms tiek apstrādāts iekšējais vaicājums, bet pēc tam tiek apstrādāts ārējais vaicājums. Iekšējais vaicājums filtrēs datus un parādīs rezultātus, kur ID = 3.
Šis ir vaicājums atsaucei:
izvēlieties a.* no (
atlasiet aģentūras_maksa sadaļā agent_details
kur ID= 3) kā a;
Šī ir ļoti vienkārša struktūra; tomēr, jo sarežģītākas ir jūsu datu tabulas, jūs iegūsit vairāk datu rindu, kas atbilst jūsu nosacījumiem.
Apakšvaicājumu izmantošana ar ievietošanu paziņojumā
Ja vēlaties atjaunināt esošu tabulu ar dažām jaunām datu rindām, varat izmantot Ievietot paziņojums, apgalvojums. Apakšvaicājums var izrādīties diezgan izdevīgs, ja vēlaties pievienot vērtības, pamatojoties uz konkrētu nosacījumu(-iem).
Vaicājuma struktūra:
ievietot tabulā_name
atlasiet * no tabulas_nosaukums
kur kolonnas_nosaukums = nosacījumi;
izvēlieties * no tabulas_nosaukums;
Tālāk ir sniegts piemērs, kā ar apakšvaicājumu varat izmantot ieliktni priekšrakstā:
ievietot agent_details
atlasiet * no agent_details
kur aģentūras_maksa (1000, 5000);
atlasiet * no agent_details;
Kad vaicājums ir izpildīts, nosacījumam atbilstošās vērtības atkal tiks ievietotas esošajā tabulā. The izvēlieties * atsauce paņem visas kolonnas kopā un ievieto to tabulā agent_details tādu, kāda tā ir. The iekšā paziņojums tiek izmantots, lai vienlaikus definētu vairākus filtra nosacījumus.
Apakšvaicājumu izmantošana ar atjaunināšanas paziņojumu
Pastāv situācijas, kad vaicājumu izpildes laikā vēlaties atjaunināt pamatā esošās tabulas. Lai to izdarītu, varat izmantot Atjaunināt paziņojums kopā ar vaicājuma komandām.
Šādi rakstīsit apakšvaicājumu, lai vienā gadījumā atjauninātu informāciju tabulā:
atjaunināt tabulas_nosaukumu
iestatīt kolonnas_nosaukums = new_value
kur kolonnas_nosaukums =
(atlasiet kolonnas_nosaukums no tabulas_nosaukums, kur = );
Šeit ir piemērs, kas parāda atjaunināšanas priekšraksta izmantošanu:
UPDATE agent_details
SET aģentūras_maksa = 35000
KUR aģentūras_maksa =
(SELECT agency_fee FROM agent_details WHERE First_name='Jānis');
atlasiet * no agent_details;
Apakšvaicājums tiks filtrēts pēc kolonnas agency_fee un izdalīs rindu(-as), kur atbilst First_Name Džons. Tālāk tiek izpildīts ārējais vaicājums, kurā aģentūras maksa tiek atjaunināta uz 35 000 Džonam Vikam.
Jūs varat nodot a izvēlieties * paziņojums gala rezultātu pārbaudei; pamanīsit, ka Džona Vika aģentūras maksa ir atjaunināta uz 35 000, jo ir tikai gadījums, kas atbilst vaicājumā definētajiem nosacījumiem.
Apakšvaicājumu izmantošana ar paziņojumu par dzēšanu
Tāpat kā atjaunināšanas paziņojumā, kurā tiek atjauninātas esošās tabulas datu rindas, dzēst paziņojums dzēš datu rindu(-as), pamatojoties uz nosacījumu.
Dzēšanas priekšraksta struktūra ir šāda:
dzēst no tabulas_nosaukums, kur mainīgā/kolonnas nosaukums =
(atlasiet kolonnas_nosaukums no tabulas_nosaukums, kur = nosacījums);
Šeit ir piemērs:
Dzēst no agent_details
kur Vārds IN
(atlasiet First_name no aģenta_details, kur aģentūras_maksa = 9000);
atlasiet * no agent_details;
Apakšvaicājumu izmantošana SQL ietvaros
Apakšvaicājumi ir lieliska SQL funkcija, kas var pasargāt jūs no bezgalīgas nevajadzīga koda rindu rakstīšanas. Ja varat izmantot apakšvaicājumu pamatfunkcijas, lai veiktu cenas, jūs nekad nevēlaties uztraukties par SQL kodēšanas sarežģītību.
Vienmēr vislabāk ir uzlabot esošās zināšanas par SQL, lai vienmēr būtu lietas kursā. Varat būt drošs, SQL apkrāptu lapas var sniegt jums labu priekšstatu par to, kā ar vienu acu uzmetienu atsvaidzināt pamatus.
Vai vēlaties uzzināt vairāk par SQL? Dažādu SQL vaicājumu komandu pārvaldīšana ir lielisks veids, kā tikt uz priekšu.
Lasiet Tālāk
- Programmēšana
- Programmēšana
- SQL
- Programmēšanas rīki

Gauravam Sijalam ir divu gadu rakstīšanas pieredze, rakstot virknei digitālā mārketinga firmu un programmatūras dzīves cikla dokumentus.
Abonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu