MySQL MariaDB

Podpoizvedbe MySQL

Podpoizvedbe MySQL
Podpoizvedba je poizvedba SQL znotraj večje poizvedbe, ki je rekurzivna, ali podpoizvedba velja za notranjo poizvedbo. V nasprotju s tem se zunanja poizvedba imenuje poizvedba, ki vključuje podpoizvedbo. Podpoizvedbo MySQL je mogoče vdelati v poizvedbe, vključno z SELECT, INSERT, UPDATE ali DELETE. Poleg tega se lahko znotraj drugega podpoizvedbe ugnezdi podpoizvedba. Fraza podpoizvedba mora biti zaprta v oklepajih, kjer koli se uporablja. Naučili vas bomo, kako in kdaj uporabljati podpoizvedbo MySQL za sestavljanje zapletenih poizvedb in opisali idejo povezanega poizvedbe. Na namizju odprite lupino ukazne vrstice in napišite geslo, da jo začnete uporabljati. Pritisnite Enter in nadaljujte.

Podpoizvedba znotraj zapisov ene tabele:

Ustvarite tabelo z imenom 'živali' v podatkovni bazi podatkov.'Dodajte spodnji zapis različnih živali z različnimi lastnostmi, kot je prikazano. Ta zapis pridobite z uporabo poizvedbe SELECT, kot sledi:

>> IZBERI * IZ podatkov.živali;

Primer 01:

Pridobimo omejene zapise te tabele z uporabo podpoizvedb. Z uporabo spodnje poizvedbe vemo, da bo podpoizvedba najprej izvedena, njen izhod pa bo uporabljen v glavni poizvedbi kot vhod. Podpoizvedba preprosto pridobi starost, ko je cena živali 2500. Starost živali, katere cena je 2500, je 4 v tabeli. Glavna poizvedba bo izbrala vse zapise tabel, pri katerih je starost več kot 4, in rezultat je podan spodaj.

>> IZBERI * IZ podatkov.živali WHERE Starost> (IZBERI starost IZ podatkov.živali WHERE Cena = '2500');

Primer 02:

Uporabljajmo isto tabelo v različnih situacijah. V tem primeru bomo namesto stavka WHERE v podpoizvedbi uporabili neko funkcijo. Upoštevali smo povprečje vseh cen za živali. Povprečna cena bo 3189. Glavna poizvedba bo izbrala vse evidence o živalih s ceno nad 3189. Dobili boste spodnji rezultat.

>> IZBERI * IZ podatkov.živali KJE Cena> (IZBERI AVG (cena) IZ podatkov.živali);

Primer 03:

Uporabimo stavek IN v glavni poizvedbi SELECT. Najprej bo podpoizvedba dosegla cene, višje od 2500. Po tem bo glavna poizvedba izbrala vse zapise tabele 'živali', kjer je cena rezultat podpoizvedbe.

>> IZBERI * IZ podatkov.živali KJE Cena IN (IZBERI CENO IZ podatkov.živali KJE Cena> 2500);

Primer 04:

Podpoizvedbo smo uporabili za iskanje imena živali, kjer je cena 7000. Ker je ta žival krava, bo zato ime "krava" vrnjeno v glavno poizvedbo. V glavni poizvedbi bodo vsi zapisi pridobljeni iz tabele, kjer je ime živali 'krava'.„Ker imamo samo dva zapisa za živalsko„ kravo “, zato imamo spodnji rezultat.

>> IZBERI * IZ podatkov.živali WHERE Ime = (IZBERI ime IZ podatkov.živali WHERE Cena = '7000');

Podpoizvedba v zapisih več tabel:

Predpostavimo spodnji dve tabeli, "študent" in "učitelj", v svoji bazi podatkov. Preizkusimo nekaj primerov podpoizvedb z uporabo teh dveh tabel.

>> IZBERI * IZ podatkov.študent;
>> IZBERI * IZ podatkov.učitelj;

Primer 01:

Podatke bomo iz ene tabele pridobili s pomočjo poizvedbe in jih uporabili kot vhod za glavno poizvedbo. To pomeni, da se lahko ti dve tabeli na neki način povežeta. V spodnjem primeru smo s podpoizvedbo dobili ime učenca iz tabele 'študent', kjer je ime učitelja 'Samina.'Ta poizvedba bo vrnila' Samina 'v učitelja glavne tabele poizvedb.'Glavna poizvedba bo nato izbrala vse zapise, povezane z imenom učitelja' Samina.„Ker imamo za to ime dva zapisa, smo torej dosegli ta rezultat.

>> IZBERI * IZ podatkov.učitelj KJE TeachName = (SELECT TeachName IZ podatkov.študent WHERE TeachName = 'Samina');

Primer 02:

Če želite izdelati podpoizvedbo v primeru različnih tabel, poskusite v tem primeru. Imamo podpoizvedbo, ki pridobi ime učitelja od učenca tabele. Ime bi moralo imeti "i" na katerem koli položaju v svoji vrednosti. To pomeni, da bodo vsa imena v stolpcu TeachName, ki imajo v vrednosti vrednost 'i', izbrana in vrnjena v glavno poizvedbo. Glavna poizvedba bo izbrala vse zapise iz tabele 'učitelj', kjer je ime učitelja v izhodu, ki ga vrne podpoizvedba. Ker je podpoizvedba vrnila 4 imena učiteljev, bomo zato imeli zapis vseh teh imen v tabeli 'učitelj."

>> IZBERI * IZ podatkov.učitelj KJE TeachName IN (IZBERI TeachName IZ podatkov.študent KJE TeachName KAKO '% i%');

Primer 03:

Upoštevajte spodnji dve tabeli, 'order' in 'order1'.

>> IZBERI * IZ podatkov.naročilo;
>> IZBERI * IZ podatkov.naročilo1;

V tem primeru poskusimo s katerim koli stavkom za izdelavo podpoizvedbe. Podpoizvedba bo izbrala 'id' iz tabele 'order1', kjer ima stolpec 'Status' vrednost 'Unpaid.'ID' je lahko več kot 1. To pomeni, da bi bilo v glavno poizvedbo vrnjenih več kot 1 vrednost, da bi dobili rezultate tabele 'vrstni red'. V tem primeru bi lahko uporabili kateri koli "id". Za to poizvedbo imamo spodnji izhod.

>> IZBERI izdelek, prodaja, id IZ podatkov.naročilo WHERE id = KAKOR (IZBERI id iz podatkov.order1 WHERE Status = 'Neplačano');

Primer 04:

Predpostavimo, da imate spodaj navedene podatke v tabeli 'order1', preden uporabite katero koli poizvedbo.

>> IZBERI * IZ podatkov.naročilo1;

Uporabimo poizvedbo znotraj poizvedbe, da izbrišemo nekaj zapisov iz tabele 'order1'. Prvič, podpoizvedba bo izbrala vrednost »Stanje« iz tabele »vrstni red«, kjer je postavka »Knjiga«.'Podpoizvedba kot vrednost vrne »Plačano«. Zdaj bo glavna poizvedba izbrisala vrstice iz tabele 'order1', kjer je vrednost stolpca 'Status' plačana."

>> IZBRIŠI IZ podatkov.order1 WHERE Status = (SELECT Status FROM data.naročilo WHERE Postavka = 'Knjiga');

Po preverjanju imamo spodnji zapisi po izvedbi poizvedbe v tabeli 'order1'.

>> IZBERI * IZ podatkov.naročilo1;

Zaključek:

V vseh zgornjih primerih ste učinkovito delali z veliko podpoizvedbami. Upamo, da je zdaj vse jasno in čisto.

Namestite najnovejšo strategijo igre OpenRA v Ubuntu Linux
OpenRA je Libre / Free Real Time strateški stroj, ki poustvarja zgodnje igre Westwood, kot je klasična Command & Conquer: Red Alert. Porazdeljeni modi...
Namestite najnovejši Dolphin Emulator za Gamecube & Wii v Linux
Dolphin Emulator vam omogoča igranje izbranih iger Gamecube in Wii na osebnih računalnikih Linux (PC). Dolphin Emulator je prosto dostopen in odprtok...
Kako uporabljati GameConqueror Cheat Engine v Linuxu
Članek zajema vodnik o uporabi varalnice GameConqueror v Linuxu. Številni uporabniki, ki igrajo igre v sistemu Windows, pogosto uporabljajo aplikacijo...