Különbség az SQL hol és a klauzula között
Tartalom
Ahol a HAVING záradékot elsősorban az SQL lekérdezések megállapításához használják, ezek lehetővé teszik, hogy az eredményfüggésben a kombinációt egy meghatározott predikátum használatával korlátozjuk. A WHERE és a HAVING közötti fő különbség az, hogy a WHERE kikötés meghatározza a oszlopok (sorok) a kapcsolatokból, beleértve a csatlakozási feltételeket, ha szükséges. Másrészről, a HAVING záradék határoz meg egy feltételt a csoportok kiválasztása, nem pedig az egyes tuplák alapján.
SQL jelentése Strukturált lekérdezési nyelv; átfogó vagy deklaratív adatbázisnyelv, amelyet az adatokhoz való hozzáféréshez használnak.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | AHOL | RENDELKEZŐ |
---|---|---|
Alapvető | Sorban történő végrehajtás. | Oszlopműveletekben valósul meg. |
Alkalmazva | Egy sor | Összegzett sor vagy csoportok. |
Az adatok letöltése | Kizárólag az egyes sorokból származó adatokat vonja le, a körülményektől függően. | Először a teljes adatot lekérjük, majd a körülményektől függően elkülönítjük. |
Összesített funkciók | Nem jelenhet meg a WHERE záradékban. | Megjelenhet a HAVING záradékban. |
Használva | Választás és egyéb állítások, például az UPDATE, DELETE vagy bármelyikük. | Nem használható SELECT utasítás nélkül. |
Ként működik | Előszűrő | Postfilter |
CSOPORTOSÍT | Hol jön. | Jön, mielőtt HAVING. |
A záradék meghatározása
Az SQL WHERE záradék egy olyan állapot leírására szolgál, amikor az adatok egy táblából származnak, vagy több táblához kapcsolódnak. Az adott értéket csak akkor adja vissza a táblázatból, ha az adott feltétel teljesül. Ahol a záradékot használják a rekordok áthatolására és csak a szükséges rekordok beolvasására.
Az SQL a logikai kapcsolatokat is megvalósítja és, vagy és nem a WHERE záradékban, amelyet szintén logikai állapot; ennek a feltételnek igaznak kell lennie, hogy lekérdezze a parancsokat. A logikai összeköttetések kifejezéseinek operandusain olyan összehasonlító operátorok vesznek részt, mint például <, <=, >, >=, =és <>. Ezek az összehasonlító operátorok összehasonlítják a karakterláncokat és a számtani kifejezéseket. Használható a SELECT nyilatkozatot, valamint az UPDATE, TÖRÖL nyilatkozatokat.
Vegyünk egy példát. Az alábbi táblázat „Sales'A táblázat áll'Termék'És'Sales_amount'Attribútumok.
A következő lekérdezést kell írni a Total_sales telefon és hangszórók.TERMÉK KIVÁLASZTÁSA, összeg (Értékesítési szám) AS Összesen: Értékesítésből származó termék, ahol a termék (telefon, hangszórók) CSOPORTOS TERMÉKEN van;
A következő kimenet az a kimeneti eredmény, ahol a sorokat először kiszűrjük, a telefon- és a hangszóró-sorokat visszanyerjük, majd az összesítő funkciót hajtjuk végre.A záradék meghatározása
Az SQL biztosítja HATÁROZOTT záradékot amely együtt használható a CSOPORTOSÍT kikötés. Ez a HAVING záradék elősegíti az egyes feltételeknek megfelelő csoportok értékének lekérését. Ahol a záradék a HAVING záradékkal együtt használható a kiválasztás során, a WHERE záradék szűrje az egyes sorokat. A sorokat ezután csoportosítják, és elvégzik az összesített számításokat, végül HAVING záradékkal szűrve a csoportokat.
Ugyanazon módon viselkedik, mint ahol WHERE, ha a GROUP BY kulcsszó nem kerül felhasználásra. A csoportfunkciók, például a min, max, az avg, az összeg és a számlálás, csak két záradékban jelenhetnek meg: SELECT és HAVING. Feltételt biztosít az attribútumcsoport minden értékének megfelelő tuplokra. Az egyetlen rekord, amely megfelel a feltételnek, eredményként jelenik meg.
Itt is ugyanazt a példát vesszük, mint a WHERE záradékot, és figyelembe vesszük ugyanazt a „Sales' asztal. Ha ki akarjuk számítani a Total_sales A telefon és a hangszórók száma HAVING záradékkal, a következő lekérdezést fogjuk írni.
KIVÁLASZTÁS Termék, összeg (Értékesítési_összeg) AS Összesen_eladás Eladási Csoportból termékenként termékenként (telefon, hangszórók);
A lekérdezés a következő kimenetet állítja elő, ahol a termékeket először lekérjük, majd elvégezzük az összesített funkciót (összeg), és végül a csoportokat kiszűrjük, a WHERE záradékkal ellentétben.
Ha csak azokat a termékeket akarjuk megtalálni, ahol a Total_sales nagyobb, mint 1000. A lekérdezés így írható:
TERMÉK KIVÁLASZTÁSA, összeg (eladási összeg) AS Összes_ eladás az értékesítési csoportból termékenként, amelynek összege (eladási összeg)> 1000;
A termelt output:
Ezt nem lehet WHERE záradékkal végrehajtani, a HAVING ellenére, és hibát generál, mivel a WHERE záradék nem használható aggregált függvényekkel.
- Ahol a záradékot sor műveletekben alkalmazzák, és egyetlen sorban alkalmazzák, míg a HAVING záradékot oszlopműveletekben használják, és alkalmazható összesített sorokra vagy csoportokra.
- A WHERE záradékban a kívánt adatok az alkalmazott feltételnek megfelelően kerülnek lekérésre. Ezzel szemben a HAVING záradék egész adatokat tölt le, majd az elválasztást a feltételnek megfelelően végzik.
- Az összesített funkciók, például a min, az összeg, a max, az avg, soha nem jelenhetnek meg a WHERE záradékkal együtt. Ezzel szemben ezek a funkciók megjelenhetnek a HAVING záradékban.
- A HAVING záradék nem használható SELECT utasítás nélkül. Ezzel szemben, Hol használható SELECT, UPDATE, DELETE stb.
- Ahol a záradék előszűrőként viselkedik, míg a HAVING záradék utószűrőként viselkedik.
- Ahol a záradék, ha azt a GROUP BY-rel használják, a GROUP BY elé kerül. Ez azt jelenti, hogy ahol MINDEN szűrősorok vannak az összesített számítások elvégzése előtt. Másrészt, a HAVING a GROUP BY után következik, ami azt jelenti, hogy az összesített számítások elvégzése után szűri.
Következtetés
WHERE és HAVING záradék ugyanúgy működik, kivéve azt a kiegészítő funkciót, amelyre a HAVING záradék népszerű. A HAVING záradék hatékonyan működhet az összesített funkciókkal, míg ahol NEM működtethető az összesített funkciókkal.