
SQL je skraćenica od Structured Query Language ; to je sveobuhvatan ili deklarativni jezik baze podataka koji se koristi za pristup podacima iz baza podataka.
Tablica usporedbe
Osnova za usporedbu | GDJE | vlasništvo |
---|---|---|
Osnovni, temeljni | Provodi se u nizu operacija. | Implementirano u operacijama u stupcima. |
Primijenjeno na | Jedan redak | Sažeti redak ili grupe. |
Dohvaćanje podataka | Ona dohvaća samo određene podatke iz određenih redova prema stanju. | Najprije se dobivaju potpuni podaci, a zatim se razdvajaju prema uvjetima. |
Skupne funkcije | Ne može se pojaviti u stavci WHERE. | Može se pojaviti u klauzuli HAVING. |
Koristi se s | SELECT i druge izjave kao što su UPDATE, DELETE ili bilo koja od njih. | Ne može se koristiti bez SELECT izraza. |
Glumiti kao | Unaprijed filter | Post-filter |
GROUP BY | Dolazi nakon GDJE. | Dolazi nakon što ste dobili. |
Definicija klauzule Gdje
Klauzula SQL WHERE koristi se za opisivanje stanja u trenutku preuzimanja podataka iz jedne tablice ili spajanja s više tablica. Ona vraća samo određenu vrijednost iz tablice ako je zadani uvjet ispunjen. WHERE se koristi za prožimanje zapisa i dohvaćanje samo potrebnih zapisa.
SQL također implementira logičke poveznice i, ili ne u WHERE klauzulu koja je također poznata kao boolean uvjet; uvjet mora biti istinit kako bi se preuzele torke. Operandi izraza logičkih poveznica uključuju operatore usporedbe kao što su <, <=, >, > =, =, i , Ovi usporedni operatori uspoređuju nizove i aritmetičke izraze. Može se koristiti u SELECT izrazu, kao iu naredbama UPDATE, DELETE .
Uzmimo primjer. Tablica prikazana u nastavku naziva se tablica " Prodaja " sastoji se od atributa " Proizvod " i "Broj prodaje ".

SELECT Proizvod, zbroj (Sales_amount) AS Total_sales FROM Prodaja WHERE Proizvod u ('Telefon', 'Zvučnici') GROUP BY Proizvod;

Definicija klauzule
SQL osigurava HAVING klauzulu koja se može koristiti zajedno s klauzulom GROUP BY . Ova klauzula HAVING pomaže u dohvaćanju vrijednosti za skupine koje ispunjavaju određene uvjete. WHERE klauzula također može koristiti zajedno s HAVING klauzulom tijekom odabira, WHERE klauzula filtrira pojedinačni redak. Redovi se zatim grupiraju i izvode se agregatni izračuni, a na kraju HAVING klauzula filtriraju grupe.
On se ponaša u istom kao WHERE kada se ne koristi GROUP BY ključna riječ. Grupne funkcije kao što su min, max, avg, sum i count mogu se pojaviti u samo dvije klauzule: SELECT i HAVING klauzula. On osigurava uvjet na torkama koje odgovaraju svakoj vrijednosti u skupini atributa. Jedini skup zapisa koji zadovoljava uvjet bit će prikazan kao rezultat.
Ovdje također uzimamo isti primjer kao WHERE i razmatrajući istu ' Sales ' tablicu. Kada želimo izračunati Total_sales telefona i zvučnika pomoću HAVING klauzule, napisat ćemo sljedeći upit.
ODABERITE PROIZVOD, SUM (Sales_amount) AS Ukupne_Prodaje OD PRODAJNE GRUPE PO PROIZVODU VRIJEME Proizvod u ('telefon', 'Govornici');
Upit proizvodi sljedeće izlaze gdje se proizvodi prvo dohvaćaju, zatim se izvršava agregatna funkcija (sum) i na kraju se filtriraju za razliku od WHERE klauzule.

Kada želimo pronaći samo one proizvode za koje je ukupna cijena veća od 1000. Upit se može napisati kao:
SELECT Proizvod, zbroj (Sales_amount) AS Ukupna_Prodaja OD PRODAJNE GRUPE PREMA PROIZVODOM Imajući iznos (Sales_amount)> 1000;
Proizvedeni izlaz je:

To se ne može izvesti korištenjem WHERE klauzule unatoč HAVING-u i generira poruku o pogrešci jer se WHERE klauzula ne može koristiti s agregatnim funkcijama.
Ključne razlike između klauzula o tome gdje i kada imaju
- Klauzula WHERE se primjenjuje u operacijama redaka i primjenjuje se na jedan redak, dok se HAVING klauzula koristi u operacijama stupaca i može se primijeniti na sažete retke ili grupe.
- U klauzuli WHERE željeni se podaci preuzimaju prema primijenjenom stanju. Nasuprot tome, HAVING klauzula dohvaća cijele podatke, a razdvajanje se vrši prema stanju.
- Agregatne funkcije kao što su min, sum, max, avg ne mogu se pojaviti zajedno s WHERE klauzulom. Nasuprot tome, te se funkcije mogu pojaviti u HAVING klauzuli.
- HAVING klauzula se ne može koristiti bez SELECT izraza. Nasuprot tome, WHERE se može koristiti sa SELECT, UPDATE, DELETE, itd.
- WHERE klauzula se ponaša kao predfilter, dok HAVING klauzula djeluje kao post-filter.
- WHERE, ako se koristi s GROUP BY, dolazi prije GROUP BY. To znači da WHERE filtrira redove prije izvođenja agregatnih izračuna. S druge strane, HAVING dolazi nakon GROUP BY, što znači da se filtriraju nakon što se izvode agregatni izračuni.
Zaključak
WHERE i HAVING klauzula djeluje na isti način, osim dodatne značajke za koju je HAVING klauzula popularna. Klauzula HAVING može učinkovito raditi s agregatnim funkcijama dok WHERE ne može raditi s agregatnim funkcijama.