Poizvedbe SQL so meso in krompir RDBMS CRUD (ustvarjanje, branje, posodobitev, brisanje). Ko pa se vaša aplikacija ali baza podatkov podjetja poveča, postane potreba po inteligentnih poizvedbah za pridobivanje pogojnih podatkov, specifičnih za zahteve, nujna.

SQL je razmeroma izčrpen in vključuje številne funkcije, od katerih je vsaka zelo primerna za različne poslovne namene. Ena takih funkcij vključuje uporabo podpoizvedb.

Da bi bile vaše kode učinkovite in učinkovite, lahko uporabite podpoizvedbe v svojih kodah SQL za pridobivanje podatkov, manipulacijo obstoječih spremenljivk in doseganje več ciljev naenkrat.

Kaj so podpoizvedbe SQL?

Podpoizvedba je ugnezdena poizvedba, ki deluje kot parameter v drugi glavni poizvedbi. Podpoizvedba je an notranja poizvedba, medtem ko je glavna poizvedba zunanja poizvedba.

Podpoizvedba naj bi vrnila podatke kot argument v oklepaju za glavno poizvedbo, medtem ko glavna poizvedba nadalje pridobi končni rezultat.

Podpoizvedbe so vdelane v Izberite izjavi ali v

instagram viewer
Kje klavzula. Takšna struktura omogoča, da se podpoizvedba obnaša kot dobro opisan pogoj filtracije podatkov. Na žalost lahko podpoizvedbe uporabljajo samo Skupina po ukazi in ne Naročite po ukazi, saj so dovoljeni samo v glavni poizvedbi.

Povezano: Vse, kar morate vedeti o izjavi SQL GROUP BY

Običajno vsaka podpoizvedba obsega en sam stolpec z Izberite klavzula. Vendar pa obstajajo scenariji, v katerih ima glavna poizvedba več stolpcev. Podpoizvedbo je mogoče ugnezditi v drugo podpoizvedbo in jo narediti v gnezdeno podpoizvedbo.

Striktura podpoizvedbe je naslednja:

Izberite ime_stolpca iz tabele, kjer je stanje= 
(IZberite pogojni_stolpec IZ tabele) kot vzdevek;

Recimo, da imate naslednjo tabelo:

ID Ime Drugo ime Agencijska_provizija
1 Janez Wick 5000
2 Robert Graham 4000
3 Stephen Hicks 8000
4 Bob Marley 1000
5 Marija Ellen 9000

Če želite v tej tabeli potegnili imena ljudi, ki zaslužijo nad povprečno agencijsko provizijo, lahko namesto pisanja več vrstic kode napišete podpoizvedbo.

Povezano: Kako ustvariti tabelo v SQL

Takole izgleda poizvedba:

Izberite * iz podrobnosti agenta
kjer je agencija_provizija > (izberite povprečje (agencija_provizija) iz podrobnosti o agentu);

Ukaz pred > znak je zunanja poizvedba, medtem ko je vse za > znak je notranja poizvedba.

Notranja poizvedba bo izračunala povprečno agencijsko provizijo znotraj podpoizvedbe, zunanja poizvedba pa bo pokazala vse vrednosti, ki so večje od izračunane povprečne vrednosti.

Kako uporabljati podpoizvedbe v SQL?

Obstaja nekaj različnih načinov, na katere lahko uporabite podpoizvedbe v SQL.

Podpoizvedbe s klavzulo Where

Ena najosnovnejših struktur podpoizvedbe v SQL je znotraj klavzule Where. To je najpreprostejši način, da določite, kaj iščete. Stavek select vrne vrednosti v skladu s pogojem (pogoji) podpoizvedbe in ga uporabi kot parameter za glavno poizvedbo.

Struktura poizvedbe:

izberite * iz ime_tabele
kjer je ime_stolpca = (izberite ime_stolpca iz ime_tabele);

Pojasnimo to s primerom.

Recimo, da želite poiskati drugo najvišjo agencijsko provizijo v tabeli agency_details. Za to obstajajo nadomestne funkcije znotraj SQL; kljub temu je najboljša metoda uporaba podpoizvedbe.

Podpoizvedbo lahko definirate tako:

izberite *, največ (Agency_fee)
od agent_details
kjer je agencija_provizija < (izberite najvišjo vrednost (agencija_provizija) iz podrobnosti agenta);

Nastala izjava vam bo pokazala 8000, kar je druga najvišja pristojbina v dani tabeli. Ko se poizvedba zažene, podpoizvedba izračuna najvišjo vrednost s seznama pristojbin. Najvišji znesek pristojbine (9000) se shrani v pomnilnik.

Ko je ta del izračunan, se izračuna drugi del poizvedbe, ki poišče drugo najvišjo pristojbino iz tabele (od < se uporablja znak). Končni rezultat je 8000, kar je druga najvišja pristojbina v tabeli.

Podpoizvedbe znotraj klavzule From

Druga različica v podpoizvedbah je posredovanje pogoja v od klavzula. Kot podoben koncept se najprej obdela notranja poizvedba, nato pa zunanja poizvedba. Notranja poizvedba bo filtrirala podatke in pokazala rezultate, kjer je ID = 3.

Tukaj je poizvedba za referenco:

izberite a.* iz (
izberite agency_fee iz agenta_details
kjer je ID= 3) kot a;

To je zelo osnovna struktura; vendar bolj zapletene so vaše podatkovne tabele, boste dobili več vrstic podatkov, ki ustrezajo vašim pogojem.

Uporaba podpoizvedb z izjavo Insert Into

Če želite posodobiti obstoječo tabelo z nekaj novimi podatkovnimi vrsticami, lahko uporabite Vstavi v izjava. Podpoizvedba se lahko izkaže za zelo koristno, če želite dodati vrednosti na podlagi določenega pogoja(-ov).

Struktura poizvedbe:

vstavi v ime_tabele 
izberite * iz ime_tabele
kjer je ime_stolpca = pogoji;
izberite * iz table_name;

Tukaj je primer, kako lahko uporabite vstavljanje v stavek s podpoizvedbo:

vstavite v agent_details
izberite * iz podrobnosti agenta
kjer je agencijska_provizija v (1000, 5000);
izberite * iz agent_details;

Ko se poizvedba zažene, bodo vrednosti, ki se ujemajo s pogojem, znova vstavljene v obstoječo tabelo. The izberi * reference pobere vse stolpce skupaj in jih vstavi v tabelo agent_details, kot je. The v stavek se uporablja za definiranje več pogojev filtra hkrati.

Uporaba podpoizvedb z izjavo posodobitve

Obstajajo situacije, ko želite posodobiti osnovne tabele med izvajanjem poizvedb. Če želite to narediti, lahko uporabite nadgradnja izjavo skupaj z ukazi za poizvedbo.

Tako boste napisali podpoizvedbo za posodobitev informacij v tabeli v enem primeru:

posodobi ime_tabele 
nastavite ime_stolpca = nova_vrednost
kjer je ime_stolpca =
(izberite ime stolpca iz ime_tabele, kjer je = );

Tukaj je primer, ki prikazuje uporabo izjave posodobitve:

POSODOBITE podrobnosti agenta 
NASTAVI agencijsko_provizijo = 35000
KJE agencijska_provizija =
(IZBERITE agencijsko_fee FROM agent_details WHERE First_name='John');
izberite * iz agent_details;

Podpoizvedba bo filtrirala po stolpcu agency_fee in izločila vrstice, kjer se ujema First_Name Janez. Nato se izvede zunanja poizvedba, pri čemer se agencijska provizija posodobi na 35000 za Johna Wicka.

Lahko prenesete a izberi * izjava za preverjanje končnih rezultatov; opazili boste, da je agencijska provizija za John Wicka posodobljena na 35000, saj obstaja samo primer, ki ustreza pogojem, opredeljenim v poizvedbi.

Uporaba podpoizvedb z izjavo Delete

Tako kot izjava za posodobitev, pri kateri posodabljate vrstice podatkov v obstoječi tabeli, izbrisati stavek izbriše vrstico (-e) podatkov na podlagi pogoja.

Struktura izjave za brisanje je:

izbriši iz table_name, kjer je ime spremenljivke/stolpca = 
(izberite ime stolpca iz ime_tabele, kjer je = pogoj);

Tukaj je primer:

Izbriši iz agent_details 
kjer Ime_IN
(izberite First_name od agent_details, kjer je provizija za agencijo = 9000);
izberite * iz agent_details;

Uporaba podpoizvedb znotraj SQL

Podpoizvedbe so odlična funkcija v SQL, ki vas lahko reši pred pisanjem neskončnih vrstic nepotrebne kode. Ko lahko za svoje ponudbe uporabite osnovne funkcije podpoizvedb, vam nikoli ne bi bilo treba skrbeti, da bi se spuščali v zapletenost kodiranja SQL.

Vedno je najbolje, da izboljšate svoje obstoječe znanje SQL, da zagotovite, da ste vedno na vrhu svoje igre. Bodite prepričani, SQL goljufije vam lahko dajo dobro predstavo o tem, kako si z enim samim pogledom osvežiti svoje osnove.

Varovalna lista osnovnih ukazov SQL za začetnike

Želite izvedeti več o SQL? Obvladovanje različnih ukazov poizvedbe SQL je odličen način za napredovanje.

Preberite Naprej

DelitiTweetE-naslov
Povezane teme
  • Programiranje
  • Programiranje
  • SQL
  • Programska orodja
O avtorju
Gaurav Siyal (35 objavljenih člankov)

Gaurav Siyal ima dve leti izkušenj s pisanjem, pisanjem za vrsto podjetij za digitalni marketing in dokumente o življenjskem ciklu programske opreme.

Več od Gaurav Siyal

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite