MySQL MariaDB

MySQL Subqueries

MySQL Subqueries
Az allekérdezés egy nagyobb lekérdezésen belüli, rekurzív SQL lekérdezés, vagy az egy lekérdezés belső lekérdezésnek számít. Ezzel szemben egy külső lekérdezést nevezünk lekérdezésnek, amely tartalmazza az allekérdezést. A MySQL-lekérdezés beágyazható a lekérdezésekbe, beleértve a SELECT, INSERT, UPDATE vagy DELETE. Ezenkívül egy másik allekérdezésen belül egy allekérdezés fészkelhető. Az alkeresés kifejezést zárójelben kell zárni, bárhol is használják. Megtanítjuk, hogyan és mikor kell használni a MySQL allekérdezést bonyolult lekérdezések összeállításához és a kapcsolódó allekérdezés ötletének ismertetéséhez. Nyissa meg a parancssori héjat az asztaláról, és írja be a jelszavát a használat megkezdéséhez. Nyomja meg az Enter billentyűt és folytassa.

Allekérdezés az egyetlen táblázat rekordjain belül:

Hozzon létre egy „állatok” nevű táblázatot az adatbázis adataiban."Adja hozzá az alábbi, különböző tulajdonságokkal rendelkező, különböző tulajdonságokkal rendelkező állatok feljegyzését az alábbiak szerint. Hozza le ezt a rekordot a SELECT lekérdezéssel az alábbiak szerint:

>> SELECT * FROM adatok.állatok;

01. példa:

Olvassuk le ennek a táblának a korlátozott rekordjait az allekérdezések segítségével. Az alábbi lekérdezés segítségével tudjuk, hogy először az allekérdezést hajtják végre, és annak kimenetét a fő lekérdezésben használják bemenetként. Egy allekérdezés egyszerűen lekéri azt a kort, ahol az állat ára 2500. Egy 2500 éves árú állat életkora a táblázatban 4. A fő lekérdezés kiválasztja az összes táblázati rekordot, ahol az életkor meghaladja a 4-et, és a kimenetet az alábbiakban adjuk meg.

>> SELECT * FROM adatok.állatok WHERE Age> (SELECT Age FROM adatok.állatok WHERE Ár = '2500');

02. példa:

Használjuk ugyanazt a táblázatot különböző helyzetekben. Ebben a példában a WHERE záradék helyett valamilyen függvényt fogunk használni az allekérdezésben. Az állatokra megadott összes ár átlagát vettük. Az átlagos ár 3189 lesz. A fő lekérdezés kiválasztja az összes nyilvántartást azokról az állatokról, amelyek ára meghaladja a 3189-et. Az alábbi kimenetet fogja kapni.

>> SELECT * FROM adatok.állatok WHERE Price> (SELECT AVG (Price) FROM adatok.állatok);

03. példa:

Használjuk az IN záradékot a SELECT fő lekérdezésben. Először is, az al lekérdezés 2500-nál nagyobb árakat fog lekérni. Ezt követően a fő lekérdezés kiválasztja az „állatok” tábla összes rekordját, ahol az ár az allekérdezés eredményében rejlik.

>> SELECT * FROM adatok.állatok WHERE Price IN (SELECT Price FROM adatok.állatok WHERE Ár> 2500);

44. példa:

Az allekérdezést használtuk az állat nevének lekérésére, ahol az ár 7000. Mivel az állat tehén, ezért a „tehén” név visszatér a fő lekérdezéshez. A fő lekérdezésben az összes rekord lekérésre kerül abból a táblázatból, ahol az állat neve 'tehén."Mivel csak két rekordunk van az állati" tehenekről ", ezért az alábbi kimenetelünk van.

>> SELECT * FROM adatok.állatok WHERE Name = (SELECT Name FROM adatok.állatok WHERE Ár = '7000');

Allekérdezés több tábla rekordon belül:

Tegyük fel, hogy az adatbázisában található két alábbi táblázat: „diák” és „tanár”. Próbálkozzunk néhány példával az alkérdezésekre e két táblázat segítségével.

>> SELECT * FROM adatok.diák;
>> SELECT * FROM adatok.tanár;

01. példa:

Adatokat fogunk lekérni egy táblából az allekérdezés segítségével, és felhasználjuk őket a fő lekérdezés bemeneteként. Ez azt jelenti, hogy ez a két táblázat valamilyen módon kapcsolódhat egymáshoz. Az alábbi példában az allekérdezést használtuk a hallgató nevének lekérésére a „hallgató” táblából, ahol a tanár neve „Samina”.'Ez a lekérdezés a' Samina 'szót adja vissza a fő lekérdezési tábla tanárának.'A fő lekérdezés ekkor kiválasztja az összes Samina tanár nevével kapcsolatos rekordot.'Mivel két rekordunk van erre a névre, ezért megkapjuk ezt az eredményt.

>> SELECT * FROM adatok.tanár WHERE TeachName = (SELECT TeachName FROM adatokból.diák WHERE TeachName = 'Samina');

02. példa:

Az allekérdezés kidolgozásához különböző táblázatok esetén próbálkozzon ezzel a példával. Van egy allekérdezésünk, amely a tanár nevét kapja le az asztali hallgatótól. A névnek az i-ben szerepelnie kell az értékének bármely pontján. Ez azt jelenti, hogy a TeachName oszlopban az összes név, amelynek értéke „i”, ki lesz jelölve, és visszatér a fő lekérdezéshez. A fő lekérdezés kiválasztja az összes rekordot a „tanár” táblából, ahol a tanár neve szerepel az allekérdezés által visszaadott kimenetben. Mivel az alkérdezés 4 tanár nevet adott vissza, ezért nyilvántartást fogunk készíteni ezekről a nevekről, akik a táblázatban találhatók."

>> SELECT * FROM adatok.tanár WHERE TeachName IN (SELECT TeachName FROM adatokból.diák WHERE TeachName LIKE '% i%');

03. példa:

Tekintsük az alábbi két táblázatot: „rendelés” és „megrendelés1”.

>> SELECT * FROM adatok.rendelés;
>> SELECT * FROM adatok.megrendelés1;

Próbáljunk ki egy BÁRMILYEN záradékot ebben a példában az allekérdezés kidolgozásához. Az allekérdezés kiválasztja az „id” -t a „order1” táblából, ahol az „Status” oszlop értéke „Unpaid”.'Az' id 'lehet több, mint 1. Ez azt jelenti, hogy több mint 1 érték kerül vissza a fő lekérdezésbe, hogy megkapjuk a 'order' táblázat eredményeit. Ebben az esetben bármilyen 'id' használható. Az alábbi kimenetet kaptuk ehhez a lekérdezéshez.

>> SELECT item, Sales, id FROM adatok.rendelés WHERE id = ANY (SELECT id FROM adatok.rendelés1 WHERE Állapot = 'Fizetetlen');

44. példa:

Tegyük fel, hogy a lekérdezés alkalmazása előtt az alábbi adatok szerepelnek a 'order1' táblázatban.

>> SELECT * FROM adatok.megrendelés1;

Alkalmazzuk a lekérdezést egy lekérdezésen belül, hogy töröljünk néhány rekordot a 'order1' táblából. Először is, az allekérdezés kiválasztja a "Status" értéket a "order" táblázatból, ahol az Item "Book".'Az allekérdezés a' Fizetett 'értéket adja vissza. Most a fő lekérdezés törli a „order1” táblázat sorait, ahol az „Status” oszlop értéke „Fizetett."

>> TÖRLÉS ADATOKBÓL.rendelés1 WHERE Status = (SELECT Status FROM adatok.rendelés WHERE tétel = 'könyv');

Ellenőrzéskor az alábbi rekordok a lekérdezés végrehajtása után a „order1” táblában maradtak.

>> SELECT * FROM adatok.megrendelés1;

Következtetés:

A fenti példákban sok alkérdezéssel hatékonyan dolgozott. Reméljük, hogy most minden tiszta és tiszta.

A legjobb játékkonzol emulátorok Linuxhoz
Ez a cikk felsorolja a Linux számára elérhető népszerű játékkonzol-emulációs szoftvereket. Az emuláció egy szoftver-kompatibilitási réteg, amely játék...
A legjobb Linux-disztribútorok játékhoz 2021-ben
A Linux operációs rendszer hosszú utat tett meg eredeti, egyszerű, szerver alapú kinézetétől. Ez az operációs rendszer rendkívül javult az elmúlt évek...
Hogyan lehet rögzíteni és streamelni a játékmenetét Linuxon
Korábban a játékokat csak hobbinak tekintették, de az idő múlásával a játékipar hatalmas növekedést ért el a technológia és a játékosok száma szempont...