MySQL Vodič za podupit s primjerima
Što su podupiti?
Podupit je upit odabira koji se nalazi unutar drugog upita. Unutarnji upit za odabir obično se koristi za određivanje rezultata vanjskog upita za odabir.
Pogledajmo sintaksu podupita –
Uobičajena pritužba kupaca u MyFlix Video Library je mali broj filmskih naslova. Uprava želi kupiti filmove za kategoriju koja ima najmanje naslova.
Možete koristiti upit poput
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
To daje rezultat
Pogledajmo kako ovaj upit radi
Gore navedeno je oblik Podupit retka. U takvim pod-upitima, unutarnji upit može dati samo JEDAN rezultat. Dopušteni operatori pri radu s podupitima reda su [=, >, =, <=, ,!=, ]
Pogledajmo drugi primjer,
Pretpostavimo da želite imena i telefonske brojeve članova osoba koje su iznajmile film i tek ih trebaju vratiti. Nakon što dobijete imena i telefonski broj, nazovite ih kako biste ih podsjetili. Možete koristiti upit poput
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Pogledajmo kako ovaj upit radi
U ovom slučaju, unutarnji upit vraća više od jednog rezultata. Gore navedeno je tip Tsposoban sub-query.
Do sada smo vidjeli dva upita, pogledajmo sada primjer trostruki upit!!!
Pretpostavimo da uprava želi nagraditi člana koji najviše plaća.
Možemo pokrenuti upit poput
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
Gornji upit daje sljedeći rezultat –
Podupiti protiv spajanja!
U usporedbi sa spojevima, podupiti su jednostavni za korištenje i lako se čitaju. Nisu tako komplicirani kao Pridružuje
Stoga ih često koristi SQL početnici.
Ali pod-upiti imaju problema s izvedbom. Korištenje spajanja umjesto pod-upita može vam dati do 500 puta povećanje performansi.
Ako imate izbor, preporuča se koristiti JOIN preko pod upita.
Podupiti bi se trebali koristiti samo kao rezervno rješenje kada ne možete koristiti operaciju JOIN da postignete gore navedeno
Rezime
- Podupiti su ugrađeni upiti unutar drugog upita. Ugrađeni upit poznat je kao unutarnji upit, a upit spremnika poznat je kao vanjski upit.
- Podupiti su jednostavni za korištenje, nude veliku fleksibilnost i mogu se lako rastaviti na pojedinačne logičke komponente čineći upit, što je vrlo korisno kada Ispitivanje i otklanjanje pogrešaka u upitima.
- MySQL podržava tri vrste podupita, skalarne, retke i tablice.
- Skalarni podupiti vraćaju samo jedan redak i jedan stupac.
- Podupiti retka vraćaju samo jedan redak, ali mogu imati više od jednog stupca.
- Podupiti tablice mogu vratiti više redaka kao i stupaca.
- Podupiti se također mogu koristiti u upitima INSERT, UPDATE i DELETE.
- Za probleme s izvedbom, kada se radi o dobivanju podataka iz više tablica, toplo se preporučuje korištenje JOIN-ova umjesto podupita. Podupiti se trebaju koristiti samo s dobrim razlogom.






