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 alapja | HOL | RENDELKEZŐ |
---|---|---|
Alapvető | Sorban végrehajtott műveletek. | Az oszlop műveletekben végrehajtott. |
Alkalmazva | Egy sor | Összegezve sor vagy csoportok. |
Adatok lekérése | Csak 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ók | Nem jelenik meg a WHERE záradékban. | Megjelenhet a HAVING záradékban. |
Használt | SELECT é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ödik | Előszűrő | Postfilter |
CSOPORTOSÍT | A 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.
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 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
- 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ó.
- 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.
- 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.
- 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.
- 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.
- 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.