„MySQL SubQuery“ pamoka su pavyzdžiais

Turinys

Kas yra antrinės užklausos?

Antrinė užklausa yra pasirinkta užklausa, esanti kitoje užklausoje. Vidinė pasirinkimo užklausa paprastai naudojama norint nustatyti išorinės užklausos rezultatus.

Panagrinėkime antrinės užklausos sintaksę -

„MyFlix“ vaizdo įrašų bibliotekoje dažnas klientų skundas yra mažas filmų pavadinimų skaičius. Vadyba nori pirkti filmus kategorijai, kuri turi mažiausiai pavadinimų.

Galite naudoti tokią užklausą kaip

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

Tai duoda rezultatą

Pažiūrėkime, kaip veikia ši užklausa

Pirmiau pateikiama eilės užklausos forma . Tokiose užklausose vidinė užklausa gali suteikti tik VIENĄ rezultatą. Leidžiami operatoriai dirbant su eilės paklausomis yra [=,>, =, <=,,! =,]

Pažvelkime į kitą pavyzdį,

Tarkime, kad norite žmonių, kurie išsinuomojo filmą ir kuriuos dar negrąžins, narių vardai ir telefono numeriai. Kai gausite vardus ir telefono numerius, paskambinsite jiems, kad gautumėte priminimą. Galite naudoti tokią užklausą kaip

SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );

Pažiūrėkime, kaip veikia ši užklausa

Tokiu atveju vidinė užklausa pateikia daugiau nei vieną rezultatą. Aukščiau pateiktas yra T tipo antrinio užklausos tipas .

Iki šiol mes matėme dvi užklausas, dabar galime pamatyti trigubos užklausos pavyzdį !!!

Tarkime, kad vadovybė nori apdovanoti daugiausiai mokantį narį.

Mes galime vykdyti užklausą kaip

Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));

Pirmiau pateikta užklausa duoda tokį rezultatą -

Prie užklausų prisijungia Vs!

Palyginus su „Joins“, paprastas naudoti ir lengvai perskaityti užklausas. Jie nėra tokie sudėtingi kaip „Joins“

Taigi SQL pradedantiesiems jie dažnai naudojami.

Tačiau antrinėse užklausose yra problemų dėl našumo. Vietoj antrinės užklausos naudojimas prisijungti kartais gali padidinti iki 500 kartų didesnį našumą.

Atsižvelgiant į pasirinkimą, antrinei užklausai rekomenduojama naudoti JOIN.

Paklausos turėtų būti naudojamos kaip atsarginis sprendimas tik tada, kai negalite naudoti JOIN operacijos, kad pasiektumėte aukščiau

Santrauka

  • Paklausos yra įterptos užklausos kitoje užklausoje. Įterptoji užklausa yra žinoma kaip vidinė, o konteinerio užklausa - kaip išorinė.
  • Antrines užklausas lengva naudoti, jos yra labai lankstios ir jas galima lengvai suskirstyti į atskirus loginius komponentus, sudarančius užklausą, kuri yra labai naudinga testuojant ir derinant užklausas.
  • „MySQL“ palaiko trijų rūšių užklausas, skaliarines, eilių ir lentelių užklausas.
  • Skaliarinės antrinės užklausos pateikia tik vieną eilutę ir vieną stulpelį.
  • Eilutės antrinėse užklausose pateikiama tik viena eilutė, tačiau jose gali būti daugiau nei vienas stulpelis.
  • Lentelių užklausos gali pateikti kelias eilutes ir stulpelius.
  • Paklausos taip pat gali būti naudojamos INSERT, UPDATE ir DELETE užklausose.
  • Kilus našumo problemoms, kai reikia gauti duomenis iš kelių lentelių, primygtinai rekomenduojama vietoj užklausų naudoti JOIN. Papildomos užklausos turėtų būti naudojamos tik esant pagrįstai.

Įdomios straipsniai...