Különbség az SQL hol és a klauzula között

Szerző: Laura McKinney
A Teremtés Dátuma: 1 Április 2021
Frissítés Dátuma: 6 Lehet 2024
Anonim
Különbség az SQL hol és a klauzula között - Technológia
Különbség az SQL hol és a klauzula között - Technológia

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.


  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaAHOLRENDELKEZŐ
AlapvetőSorban történő végrehajtás.Oszlopműveletekben valósul meg.
AlkalmazvaEgy sorÖsszegzett sor vagy csoportok.
Az adatok letöltéseKizá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ókNem jelenhet meg a WHERE záradékban.Megjelenhet a HAVING záradékban.
HasználvaVá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ödikElőszűrőPostfilter
CSOPORTOSÍTHol 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.

  1. 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.
  2. 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.
  3. 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.
  4. A HAVING záradék nem használható SELECT utasítás nélkül. Ezzel szemben, Hol használható SELECT, UPDATE, DELETE stb.
  5. Ahol a záradék előszűrőként viselkedik, míg a HAVING záradék utószűrőként viselkedik.
  6. 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.