Ajánlott, 2024

Szerkesztő Választása

A különbség az SQL-ben lévő és a záradékok között

WHERE és HAVING záradékot főleg az SQL lekérdezések kimutatásában használják, ezek lehetővé teszik számunkra, hogy egy adott predikátum használatával korlátozzuk a kombinációt az eredmény viszonyban. A WHERE és a HAVING közötti fő különbség az, hogy a WHERE záradék határozza meg a kapcsolatok (sorok) kiválasztásának feltételeit, beleértve a szükséges feltételeket is. Másrészről a HAVING záradék a kiválasztott csoportok állapotát határozza meg, nem pedig az egyes sorok.

SQL a Strukturált lekérdezés nyelve ; átfogó vagy deklaratív adatbázis-nyelv az adatbázisok adatainak eléréséhez.

Összehasonlító táblázat

Az összehasonlítás alapjaHOLRENDELKEZŐ
AlapvetőSorban végrehajtott műveletek.Az oszlop műveletekben végrehajtott.
AlkalmazvaEgy sorÖsszegezve sor vagy csoportok.
Adatok lekéréseCsak az adott sorokból származó adatokat gyűjti be a feltételnek megfelelően.Először a teljes adatokat lekérjük, majd az állapot szerint elválasztjuk.
Összesített funkciókNem jelenik meg a WHERE záradékban.Megjelenhet a HAVING záradékban.
HasználtSELECT és egyéb nyilatkozatok, például UPDATE, DELETE vagy egyikük.Nem használható SELECT utasítás nélkül.
Ként működikElőszűrőPostfilter
CSOPORTOSÍTA WHERE után jön.A HAVING után jön.

Ahol a záradék meghatározása

Az SQL WHERE záradékot arra használják, hogy leírja az állapotot az adatok egyetlen táblázatból történő letöltésekor vagy több táblázattal való csatlakozáskor. A megadott érték csak akkor teljesül, ha az adott feltétel teljesül. A WHERE záradékot a rekordok áthatolására és csak a szükséges rekordok lekérésére használják.

Az SQL végrehajtja a logikai összeköttetést és - vagy nem a WHERE-mondatot -, melyeket boolean- állapotnak is neveznek; a feltételnek igaznak kell lennie ahhoz, hogy visszanyerje a rekordokat. A logikai csatlakozási kifejezések operandumai az összehasonlító operátorokat, például a <, <=, >, > =, = és a . Ezek az összehasonlító operátorok összehasonlítják a húrokat és az aritmetikai kifejezéseket. Használható a SELECT utasításban, valamint az UPDATE, DELETE utasításokban.

Vegyünk egy példát. Az alábbi táblázatban szereplő „ Értékesítési ” táblázat „ Termék ” és „ Értékesítési összeg ” attribútumokat tartalmaz.

A következő lekérdezést a telefon és a hangszórók Total_sales kiszámításához kell írni.

 SELECT Product, összeg (Sales_amount) AS Total_sales az értékesítésből, ahol a termék („Phone”, „Speakers”) GROUP BY termék; 

A következő kimenet az a kimenő kimenet, ahol a sorokat először szűrjük, a telefon és a hangszóró sorokat lekérjük, majd az aggregált függvényt végrehajtjuk.

A záradék meghatározása

Az SQL HAVING záradékot tartalmaz, amely a GROUP BY záradékkal együtt használható. Ez a HAVING záradék segíti a bizonyos feltételeknek megfelelő csoportok értékeinek lekérését. WHERE záradék is használható a HAVING záradékkal együtt a kiválasztás során, WHERE zárja az egyes sorokat. A sorokat ezután csoportosítják, és az összesített számításokat végül végül a HAVING záradék szűri a csoportokat.

Ugyanúgy viselkedik, mint amikor a GROUP BY kulcsszót nem használják. A csoportfunkciók, mint a min, max, avg, sum és count csak két záradékban jelennek meg: SELECT és HAVING. Ez az állapotok csoportjába tartozó értékeknek megfelelő feltételeket biztosít. Az eredményként csak az a rekord, amely kielégíti a feltételeket.

Itt is ugyanazt a példát vesszük figyelembe, mint a WHERE záradékot, és figyelembe véve ugyanazt az „ Értékesítési ” táblát. Amikor a HAVING záradékkal szeretnénk kiszámítani a Total_sales telefon és hangszórók számát, a következő lekérdezést fogjuk írni.

 SELECT Termék, összeg (Sales_amount) AS Total_sales az értékesítési csoporttól termékenként, amely a termékben található ('telefon', 'hangszórók'); 

A lekérdezés a következő kimenetet generálja, ahol a termékeket először szerezzük be, majd az aggregált függvényt (összeget) végrehajtjuk, és az utolsó csoportokban a WHERE-mondattal ellentétben szűrjük.

Ha csak azokat a termékeket szeretnénk megtalálni, amelyeknél a Total_sales értéke meghaladja az 1000-et.

 SELECT Termék, összeg (Sales_amount) AS Total_sales az értékesítési csoporttól termékenként, amely összege (Sales_amount)> 1000; 

Az előállított teljesítmény:

Ezt a HAVING ellenére nem lehet WHERE záradékkal végrehajtani, és hibaüzenetet generál, mert a WHERE záradék nem használható összesített függvényekkel.

A kulcs és a záradék közötti különbségek

  1. A WHERE-mondatot a sor műveletekben használják, és egyetlen sorban alkalmazzák, míg a HAVING záradékot az oszlop műveletekben használják, és az összesített sorokra vagy csoportokra is alkalmazható.
  2. A WHERE záradékban a kívánt adatokat az alkalmazott feltételnek megfelelően kapja meg. Ezzel ellentétben, a HAVING záradék az egész adatot hozza, majd az elkülönítés az állapot szerint történik.
  3. Az összesített funkciók, mint a min, összeg, max, avg soha nem jelennek meg a WHERE záradékkal együtt. Ezzel szemben ezek a funkciók a HAVING záradékban jelennek meg.
  4. A HAVING záradék nem használható SELECT utasítás nélkül. Ezzel szemben WHERE használható a SELECT, UPDATE, DELETE stb.
  5. A WHERE záradék előszűrőként viselkedik, míg a HAVING záradék szűrőként működik.
  6. WHERE-mondat, ha a GROUP BY-nél használják, a GROUP BY előtt érkezik. Ez azt jelenti, hogy WHERE szűrési sorok az összesített számítások végrehajtása előtt. Másrészről, a HAVING a CSOPORT CSOPORT után jön létre, ami azt jelenti, hogy az összesített számítások elvégzése után szűrőket alkalmaz.

Következtetés

Ahol a HAVING záradék ugyanúgy működik, kivéve a HAVING záradék népszerűségét. A HAVING záradék hatékonyan működhet az összesített funkcióval, míg WHERE nem működtethető összesített funkcióval.

Top