MySQL MariaDB

MySQL apakšvaicājumi

MySQL apakšvaicājumi
Apakšvaicājums ir SQL vaicājums lielākā rekursīvā vaicājumā, vai arī apakšvaicājums tiek uzskatīts par iekšēju vaicājumu. Turpretī ārējais vaicājums tiek saukts par vaicājumu, kas ietver apakšvaicājumu. MySQL apakšvaicājumu var iegult vaicājumos, tostarp SELECT, INSERT, UPDATE vai DELETE. Turklāt citā apakšvaicājumā var tikt ievietots apakšvaicājums. Frāze subquery ir jāaizver iekavās visur, kur tā tiek lietota. Mēs iemācīsim, kā un kad izmantot MySQL apakšvaicājumu, lai sastādītu sarežģītus vaicājumus un aprakstītu saistītās apakšvaicājuma ideju. Atveriet komandrindas apvalku no darbvirsmas un ierakstiet paroli, lai sāktu to izmantot. Nospiediet Enter un turpiniet.

Apakšvaicājums vienas tabulas ierakstos:

Datu bāzes datos izveidojiet tabulu ar nosaukumu “dzīvnieki”."Pievienojiet šo sekojošo ierakstu par dažādiem dzīvniekiem ar atšķirīgām īpašībām, kā parādīts. Ielādējiet šo ierakstu, izmantojot vaicājumu SELECT šādi:

>> SELECT * FROM dati.dzīvnieki;

01. piemērs:

Ielādēsim šīs tabulas ierobežotos ierakstus, izmantojot apakšklausījumus. Izmantojot zemāk esošo vaicājumu, mēs zinām, ka vispirms tiks izpildīts apakšvaicājums, un tā izvade tiks izmantota galvenajā vaicājumā kā ievade. Apakšvaicājums vienkārši nosaka vecumu, kurā dzīvnieka cena ir 2500. Dzīvnieka vecums, kura cena ir 2500, tabulā ir 4. Galvenais vaicājums atlasīs visus tabulas ierakstus, kuru vecums ir lielāks par 4, un izeja ir dota tālāk.

>> SELECT * FROM dati.dzīvnieki WHERE Vecums> (Atlasiet vecumu no datiem.dzīvnieki KUR Cena = '2500');

02. piemērs:

Izmantosim vienu un to pašu tabulu dažādās situācijās. Šajā piemērā apakšvaicājumā WHERE vietā izmantosim kādu funkciju. Mēs esam ņēmuši vidējo cenu par visām dzīvniekiem norādītajām cenām. Vidējā cena būs 3189. Galvenais vaicājums atlasīs visus ierakstus par dzīvniekiem, kuru cena pārsniedz 3189. Jūs saņemsiet zemāk redzamo rezultātu.

>> SELECT * FROM dati.dzīvnieki WHERE Price> (SELECT AVG (Price) FROM data.dzīvnieki);

03. piemērs:

Izmantosim klauzulu IN galvenajā SELECT vaicājumā. Pirmkārt, apakšvaicājums iegūs cenas, kas pārsniedz 2500. Pēc tam galvenais vaicājums atlasīs visus tabulas “dzīvnieki” ierakstus, kur cena ir apakšvaicājuma rezultātā.

>> SELECT * FROM dati.dzīvnieki WHERE Price IN (ATLASIET cenu no datiem.dzīvnieki KUR Cena> 2500);

4. piemērs:

Mēs izmantojām apakšvaicājumu, lai iegūtu dzīvnieka vārdu, kur cena ir 7000. Tā kā šis dzīvnieks ir govs, tāpēc nosaukums “govs” tiks atgriezts galvenajā vaicājumā. Galvenajā vaicājumā visi ieraksti tiks izgūti no tabulas, kurā dzīvnieka nosaukums ir 'govs."Tā kā mums ir tikai divi ieraksti par dzīvnieku" govi ", tāpēc mums ir zemāka produkcija.

>> SELECT * FROM dati.dzīvnieki KUR Vārds = (Atlasiet vārdu no datiem.dzīvnieki KUR Cena = '7000');

Apakšvaicājums vairāku tabulu ierakstos:

Pieņemsim, ka jūsu datu bāzē ir divas zemāk esošās tabulas: “students” un “skolotājs”. Izmēģināsim dažus apakšvaicājumu piemērus, izmantojot šīs divas tabulas.

>> SELECT * FROM dati.students;
>> SELECT * FROM dati.skolotājs;

01. piemērs:

Mēs iegūsim datus no vienas tabulas, izmantojot apakšvaicājumu, un izmantosim tos kā galveno vaicājumu ievadi. Tas nozīmē, ka šīs divas tabulas var kaut kādā veidā būt saistītas. Zemāk esošajā piemērā mēs izmantojām apakšvaicājumu, lai iegūtu studenta vārdu no tabulas “students”, kur skolotāja vārds ir “Samina”.'Šis vaicājums atgriezīs' Samina 'galvenās vaicājumu tabulas skolotājam."Pēc tam galvenais vaicājums atlasīs visus ierakstus, kas saistīti ar skolotāja vārdu" Samina."Tā kā mums ir divi šī vārda ieraksti, mēs esam ieguvuši šo rezultātu.

>> SELECT * FROM dati.skolotājs WHERE TeachName = (Atlasiet TeachName no datiem.students WHERE TeachName = 'Samina');

02. piemērs:

Lai izstrādātu apakšvaicājumu dažādu tabulu gadījumā, izmēģiniet šo piemēru. Mums ir apakšvaicājums, kas atnes skolotāja vārdu no galda studenta. Vārdam jebkurā vērtības vietā jābūt “i”. Tas nozīmē, ka kolonnā TeachName visi vārdi, kuru vērtībā ir “i”, tiks atlasīti un atgriezti galvenajā vaicājumā. Galvenais vaicājums atlasīs visus ierakstus no tabulas “skolotājs”, kur apakšvaicājuma atgrieztajā izvadā ir skolotāja vārds. Tā kā apakšvaicājums atgrieza 4 skolotāju vārdus, tāpēc mēs reģistrēsim visus šos vārdus, kas dzīvo tabulā."

>> SELECT * FROM dati.skolotājs WHERE TeachName IN (Atlasiet TeachName no datiem.students WHERE TeachName LIKE '% i%');

03. piemērs:

Apsveriet zemāk redzamās divas tabulas: 'order' un 'order1'.

>> SELECT * FROM dati.kārtība;
>> SELECT * FROM dati.pasūtījums1;

Izmēģināsim JEBKURU šī piemēra klauzulu, lai izstrādātu apakšvaicājumu. Apakšvaicājums tabulā “order1” atlasīs “id”, kur slejas “Statuss” vērtība ir “Neapmaksāta”.'ID' var būt lielāks par 1. Tas nozīmē, ka vairāk nekā 1 vērtība tiks atgriezta galvenajā vaicājumā, lai iegūtu tabulas “order” rezultātus. Šajā gadījumā varētu izmantot jebkuru “id”. Šim vaicājumam esam ieguvuši zemāk redzamo rezultātu.

>> SELECT item, Sales, id FROM dati.pasūtījums WHERE id = JEBKURS (ATLASIET ID NO DATIEM.order1 WHERE Statuss = 'neapmaksāts');

4. piemērs:

Pieņemsim, ka pirms jebkura vaicājuma piemērošanas tabulā “order1” ir zemāk norādītie dati.

>> SELECT * FROM dati.pasūtījums1;

Lietosim vaicājumu vaicājumā, lai izdzēstu dažus ierakstus no tabulas 'order1'. Pirmkārt, apakšvaicājums atlasīs vērtību “Statuss” no tabulas “pasūtījums”, kur vienums ir “Grāmata”.Apakšvaicājums kā vērtību atdod “Apmaksāts”. Tagad galvenais vaicājums izdzēsīs tabulas “order1” rindas, kur kolonnas “Statuss” vērtība ir “Apmaksāta."

>> Dzēst datus.order1 WHERE Status = (Atlasiet statusu no datiem.pasūtījums WHERE Item = 'Book');

Pārbaudot, mēs tagad zem vaicājuma izpildes esam palikuši tabulā “order1”.

>> SELECT * FROM dati.pasūtījums1;

Secinājums:

Visos iepriekš minētajos piemēros esat efektīvi strādājis ar daudzām apakšvaicājumiem. Mēs ceram, ka tagad viss ir skaidrs un tīrs.

5 labākās arkādes spēles Linux
Mūsdienās datori ir nopietnas mašīnas, kuras izmanto spēlēšanai. Ja jūs nevarat iegūt jauno augsto rezultātu, jūs zināt, ko es domāju. Šajā ierakstā j...
Cīņa par Vesnotu 1.13.6 Izlaista attīstība
Cīņa par Vesnotu 1.13.6 izlaists pagājušajā mēnesī, ir sestais izstrādes izlaidums 1.13.x sērija un tā nodrošina vairākus uzlabojumus, īpaši lietotāja...
Kā instalēt League of Legends operētājsistēmā Ubuntu 14.04
Ja jūs esat League of Legends fans, tad šī ir iespēja jums izmēģināt League of Legends. Ņemiet vērā, ka LOL tiek atbalstīts PlayOnLinux, ja esat Linux...