logo

SQL KLAUZULE

  • SQL klauzula nam pomaže da dohvatimo skup ili skupove zapisa iz tablice.
  • SQL klauzula nam pomaže da odredimo uvjet za stupce ili zapise tablice.

Različite klauzule dostupne u Structured Query Language su sljedeće:

  1. WHERE KLAUZULA
  2. GRUPI PO KLAUZULI
  3. IMAJUĆI KLAUZULU
  4. RED PO KLAUZULI

Pogledajmo svaku klauzulu jednu po jednu s primjerom. Koristit ćemo MySQL bazu podataka za pisanje upita u primjerima.

1. KLAUZULA WHERE

Klauzula WHERE u SQL-u koristi se s upitom SELECT, koji je jedna od naredbi jezika za manipulaciju podacima. Odredbe WHERE mogu se koristiti za ograničavanje broja redaka koji se prikazuju u skupu rezultata, općenito pomažu u filtriranju zapisa. Vraća samo one upite koji ispunjavaju specifične uvjete WHERE klauzule. Odredba WHERE koristi se u izjavama SELECT, UPDATE, DELETE itd.

WHERE klauzula s upitom SELECT

Simbol zvjezdice koristi se s klauzulom WHERE u upitu SELECT za dohvaćanje svih vrijednosti stupaca za svaki zapis iz tablice.

Sintaksa odredbe where s upitom odabira za dohvaćanje svih vrijednosti stupaca za svaki zapis iz tablice:

 SELECT * FROM TABLENAME WHERE CONDITION; 

Ako prema zahtjevu želimo dohvatiti samo selektivne stupce, koristit ćemo donju sintaksu:

 SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION; 

Razmotrite tablicu zaposlenika sa sljedećim podacima:

E_ID Ime Plaća Grad Oznaka Datum_pridruživanja Dob
1 Sakshi Kumari 50000 Mumbai Voditelj projekta 2021-06-20 24
2 Tejaswini Naik 75000 Delhi Inženjer sustava 2019-12-24 23
3 Anuja Sharma 40000 Jaipur Menadžer 2021-08-15 26
4 Anushka Tripathi 90000 Mumbai Testeri softvera 2021-06-13 24
5 Rucha Jagtap 45000 Bangalore Voditelj projekta 2020-08-09 23
6 Rutuja Deshmukh 60000 Bangalore Menadžer 2019-07-17 26
7 Baviskarov glas 55000 Jaipur Inženjer sustava 2021-10-10 24
8 Tu je šeik 45000 Pune Softverski inženjer 2020-09-10 26
9 Swati Kumari 50000 Pune Testeri softvera 2021-01-01 25
10 Mayuri Patel 60000 Mumbai Voditelj projekta 2020-10-02 24
jedanaest Simran Khanna 45500 Kolhapur HR 2019-01-02 26
12 Shivani Wagh 50500 Delhi Programer softvera 2016-09-10 25
13 Kiran Maheshwari 50000 Nashik HR 2013-12-12 23
14 Tejal Jain 40000 Delhi Voditelj projekta 2017-11-10 25
petnaest Mohini Šah 38000 Pune Programer softvera 2019-03-05 dvadeset

Primjer 1:

Napišite upit za dohvaćanje svih onih evidencija zaposlenika kod kojih je plaća zaposlenika veća od 50000.

Upit:

 mysql> SELECT * FROM employees WHERE Salary > 50000; 

Gornji upit prikazat će sve one zapise zaposlenika kod kojih je plaća zaposlenika veća od 50000. Ispod 50000 plaća neće biti prikazana prema uvjetima.

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Prema očekivanom izlazu, prikazuju se samo oni zapisi kod kojih je plaća zaposlenika veća od 50000. Postoji šest zapisa u tablici zaposlenika koji zadovoljavaju zadani uvjet.

Primjer 2:

Napišite upit za ažuriranje evidencije zaposlenika i postavite ažurirano ime kao 'Harshada Sharma' gdje je ime grada zaposlenika Jaipur.

Upit:

 mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur'; 

SQL KLAUZULE

Gornji upit ažurirat će ime zaposlenika u 'Harshada Sharma', gdje je grad zaposlenika Jaipur.

Kako bismo provjerili jesu li zapisi ažurirani ili ne, pokrenut ćemo upit za odabir.

 mysql> SELECT * FROM employees; 

SQL KLAUZULE

Postoji samo jedan zapis u tablici zaposlenika gdje je grad zaposlenika 'Jaipur'. ID zapisa je 3, što zadovoljava zadani uvjet. Stoga je, prema zadanom uvjetu, ime zaposlenika s ID-om zaposlenika 3 sada promijenjeno u 'Harshada Sharma'.

java operator

Primjer 3:

Napišite upit za brisanje zapisa zaposlenika gdje je datum pridruživanja zaposlenika '2013-12-12'.

Upit:

 mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12'; 

SQL KLAUZULE

Gornji upit će izbrisati podatke o zaposleniku čiji je datum pridruživanja '2013-12-12'.

Kako bismo provjerili rezultate gornjeg upita, izvršit ćemo upit odabira.

 mysql> SELECT *FROM employees; 

SQL KLAUZULE

Postoji samo jedan zapis u tablici zaposlenika gdje je datum pridruživanja zaposlenika '2013-12-12'. Id zapisa je 13, što zadovoljava zadani uvjet. Stoga je prema zadanom uvjetu zaposlenik s ID-om zaposlenika 13 sada izbrisan iz tablice zaposlenika.

2. SKUPINA PO KLAUZULI

Klauzula Group By koristi se za raspoređivanje sličnih vrsta zapisa u grupe u Structured Query Language. Klauzula Group by u Structured Query Language koristi se s naredbom Select. Grupiraj po klauzuli postavlja se iza klauzule where u SQL naredbi. Klauzula Group By posebno se koristi s agregatnom funkcijom, tj. max (), min (), avg (), sum (), count () za grupiranje rezultata na temelju jednog ili više od jednog stupca.

Sintaksa klauzule Group By:

 SELECT * FROM TABLENAME GROUP BY COLUMNNAME; 

Gornja sintaksa odabrat će sve podatke ili zapise iz tablice, ali će rasporediti sve te podatke ili zapise u grupe na temelju naziva stupca navedenog u upitu.

Sintaksa klauzule Group By s agregatnim funkcijama:

 SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME; 

Razumimo klauzulu Group By uz pomoć primjera.

Razmotrite tablicu zaposlenika sa sljedećim podacima:

E_ID Ime Plaća Grad Oznaka Datum_pridruživanja Dob
1 Sakshi Kumari 50000 Mumbai Voditelj projekta 2021-06-20 24
2 Tejaswini Naik 75000 Delhi Inženjer sustava 2019-12-24 23
3 Anuja Sharma 40000 Jaipur Menadžer 2021-08-15 26
4 Anushka Tripathi 90000 Mumbai Testeri softvera 2021-06-13 24
5 Rucha Jagtap 45000 Bangalore Voditelj projekta 2020-08-09 23
6 Rutuja Deshmukh 60000 Bangalore Menadžer 2019-07-17 26
7 Baviskarov glas 55000 Jaipur Inženjer sustava 2021-10-10 24
8 Tu je šeik 45000 Pune Softverski inženjer 2020-09-10 26
9 Swati Kumari 50000 Pune Testeri softvera 2021-01-01 25
10 Mayuri Patel 60000 Mumbai Voditelj projekta 2020-10-02 24
jedanaest Simran Khanna 45500 Kolhapur HR 2019-01-02 26
12 Shivani Wagh 50500 Delhi Programer softvera 2016-09-10 25
13 Kiran Maheshwari 50000 Nashik HR 2013-12-12 23
14 Tejal Jain 40000 Delhi Voditelj projekta 2017-11-10 25
petnaest Mohini Šah 38000 Pune Programer softvera 2019-03-05 dvadeset

Primjer 1:

Napišite upit za prikaz svih zapisa tablice zaposlenika, ali grupirajte rezultate na temelju stupca dobi.

Upit:

 mysql> SELECT * FROM employees GROUP BY Age; 

Gornji upit prikazat će sve zapise tablice zaposlenika, ali grupirane prema stupcu dobi.

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Primjer 2:

Napišite upit za prikaz svih zapisa tablice zaposlenika grupiranih po nazivu i plaći.

Upit:

 mysql> SELECT * FROM employees GROUP BY Salary, Designation; 

Gornji upit prikazat će sve zapise tablice zaposlenika, ali grupirane prema stupcu plaća i oznaka.

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Primjeri klauzule Group By pomoću agregatnih funkcija

Primjer 1:

Napišite upit za popis broja zaposlenika koji rade na određenom imenovanju i grupirajte rezultate prema imenovanju zaposlenika.

Upit:

 mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation; 

Gornji upit prikazat će oznaku s odgovarajućim brojem zaposlenika koji rade na toj oznaci. Svi ovi rezultati bit će grupirani prema stupcu oznaka.

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Prema očekivanom rezultatu, prikazuje se oznaka s odgovarajućim brojem zaposlenika.

Primjer 2:

Napišite upit za prikaz iznosa plaće zaposlenika prema gradu grupiranog prema dobi zaposlenika.

Upit:

 mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City; 

Gornji upit prvo će izračunati zbroj plaća zaposlenih u svakom gradu, a zatim će prikazati zbroj plaće s odgovarajućom plaćom, ali grupiran po stupcu dobi.

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Prema očekivanom rezultatu ispisuje se zbroj plaća zaposlenika prema gradu kojem zaposlenik pripada. Ako dva zaposlenika pripadaju istom gradu, tada će biti u jednoj grupi.

3. IMAJUĆI KLAUZULU:

Kada trebamo postaviti bilo koji uvjet na stupac tablice, koristimo klauzulu WHERE u SQL-u. Ali ako u tom trenutku želimo koristiti bilo koji uvjet za stupac u klauzuli Group By, koristit ćemo klauzulu HAVING s klauzulom Group By za uvjete stupca.

Sintaksa:

 TABLENAME GROUP BY COLUMNNAME HAVING CONDITION; 

Razmotrite tablicu zaposlenika sa sljedećim podacima:

E_ID Ime Plaća Grad Oznaka Datum_pridruživanja Dob
1 Sakshi Kumari 50000 Mumbai Voditelj projekta 2021-06-20 24
2 Tejaswini Naik 75000 Delhi Inženjer sustava 2019-12-24 23
3 Anuja Sharma 40000 Jaipur Menadžer 2021-08-15 26
4 Anushka Tripathi 90000 Mumbai Testeri softvera 2021-06-13 24
5 Rucha Jagtap 45000 Bangalore Voditelj projekta 2020-08-09 23
6 Rutuja Deshmukh 60000 Bangalore Menadžer 2019-07-17 26
7 Baviskarov glas 55000 Jaipur Inženjer sustava 2021-10-10 24
8 Tu je šeik 45000 Pune Softverski inženjer 2020-09-10 26
9 Swati Kumari 50000 Pune Testeri softvera 2021-01-01 25
10 Mayuri Patel 60000 Mumbai Voditelj projekta 2020-10-02 24
jedanaest Simran Khanna 45500 Kolhapur HR 2019-01-02 26
12 Shivani Wagh 50500 Delhi Programer softvera 2016-09-10 25
13 Kiran Maheshwari 50000 Nashik HR 2013-12-12 23
14 Tejal Jain 40000 Delhi Voditelj projekta 2017-11-10 25
petnaest Mohini Šah 38000 Pune Programer softvera 2019-03-05 dvadeset

Primjer 1:

Napišite upit za prikaz imena zaposlenika, plaće i grada u kojem je maksimalna plaća zaposlenika veća od 40000 i grupirajte rezultate prema oznakama.

Upit:

 mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000; 

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Gornji rezultat pokazuje da su ime zaposlenika, plaća i grad zaposlenika kod kojeg je plaća zaposlenika veća od 40000 grupirani prema nazivu. (Zaposlenici sa sličnim nazivom raspoređeni su u jednu skupinu, a oni s drugim nazivom posebno).

Primjer 2:

Napišite upit za prikaz imena zaposlenika i naziva gdje je zbroj plaće zaposlenika veći od 45000 te grupirajte rezultate po gradovima.

Upit:

 mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000; 

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Gornji izlaz prikazuje ime zaposlenika, naziv i plaću zaposlenika. Zbroj plaće je veći od 45000 grupirano po gradovima. (Zaposlenici sa sličnim gradovima smješteni su u jednu skupinu, a oni s različitim gradovima koji nisu slični svrstani su zasebno).

4. REDOSLIJED PO KLAUZULI

Kad god želimo sortirati bilo što u SQL-u, koristimo klauzulu ORDER BY. Klauzula ORDER BY u SQL-u pomoći će nam da sortiramo podatke na temelju određenog stupca tablice. To znači da će svi podaci pohranjeni u određenom stupcu na kojem izvršavamo klauzulu ORDER BY biti sortirani. Odgovarajuće vrijednosti stupaca bit će prikazane redoslijedom u kojem smo dobili vrijednosti u prethodnom koraku.

Kao što svi znamo, sortiranje znači UZLAZNIM ili SILAZNIM REDOM. Na isti način, KLAUZULA ORDER BY sortira podatke uzlaznim ili silaznim redoslijedom prema našim zahtjevima. Podaci će biti poredani uzlaznim redoslijedom kad god ASC ključna riječ koristi se s klauzulom ORDER, i DESC ključna riječ sortirati će zapise silaznim redoslijedom.

Prema zadanim postavkama, sortiranje u SQL-u bit će učinjeno korištenjem klauzule ORDER BY u ASCENDING redoslijedu ako nismo spomenuli redoslijed sortiranja.

Prije nego krenemo prema primjeru klauzule ORDER BY za sortiranje zapisa, prvo ćemo pogledati sintaksu tako da će nam biti lako proći kroz primjer.

gdje je tipka za umetanje na tipkovnici laptopa

Sintaksa klauzule ORDER BY bez ključne riječi asc i desc:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME; 

Sintaksa klauzule ORDER BY za sortiranje uzlaznim redoslijedom:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC; 

Sintaksa klauzule ORDER BY za sortiranje silaznim redoslijedom:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC; 

Zamislite da imamo tablicu zaposlenika sa sljedećim podacima:

E_ID Ime Plaća Grad Oznaka Datum_pridruživanja Dob
1 Sakshi Kumari 50000 Mumbai Voditelj projekta 2021-06-20 24
2 Tejaswini Naik 75000 Delhi Inženjer sustava 2019-12-24 23
3 Anuja Sharma 40000 Jaipur Menadžer 2021-08-15 26
4 Anushka Tripathi 90000 Mumbai Testeri softvera 2021-06-13 24
5 Rucha Jagtap 45000 Bangalore Voditelj projekta 2020-08-09 23
6 Rutuja Deshmukh 60000 Bangalore Menadžer 2019-07-17 26
7 Baviskarov glas 55000 Jaipur Inženjer sustava 2021-10-10 24
8 Tu je šeik 45000 Pune Softverski inženjer 2020-09-10 26
9 Swati Kumari 50000 Pune Testeri softvera 2021-01-01 25
10 Mayuri Patel 60000 Mumbai Voditelj projekta 2020-10-02 24
jedanaest Simran Khanna 45500 Kolhapur HR 2019-01-02 26
12 Shivani Wagh 50500 Delhi Programer softvera 2016-09-10 25
13 Kiran Maheshwari 50000 Nashik HR 2013-12-12 23
14 Tejal Jain 40000 Delhi Voditelj projekta 2017-11-10 25
petnaest Mohini Šah 38000 Pune Programer softvera 2019-03-05 dvadeset

Primjer 1:

Napišite upit za sortiranje zapisa uzlaznim redoslijedom oznake zaposlenika iz tablice zaposlenika.

Upit:

 mysql> SELECT * FROM employees ORDER BY Designation; 

Ovdje u SELECT upitu, klauzula ORDER BY se primjenjuje na stupac 'Designation' za sortiranje zapisa, ali nismo upotrijebili ključnu riječ ASC nakon klauzule ORDER BY za sortiranje uzlaznim redoslijedom. Prema zadanim postavkama, podaci će biti poredani uzlaznim redoslijedom ako ne navedemo ključnu riječ asc.

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Prema očekivanom rezultatu, zapisi se prikazuju uzlaznim redoslijedom prema imenovanju zaposlenika.

Primjer 2:

Napišite upit za prikaz imena i plaće zaposlenika uzlaznim redoslijedom plaće zaposlenika iz tablice zaposlenika.

Upit:

 mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC; 

Ovdje u SELECT upitu, klauzula ORDER BY primjenjuje se na stupac 'Plaća' za sortiranje zapisa. Koristili smo ključnu riječ ASC za sortiranje plaće zaposlenika uzlaznim redoslijedom.

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Svi zapisi se prikazuju prema rastućim redoslijedom plaće zaposlenika.

Primjer 3:

Napišite upit za sortiranje podataka silaznim redoslijedom imena zaposlenika pohranjenog u tablici zaposlenika.

Upit:

 mysql> SELECT * FROM employees ORDER BY Name DESC; 

Ovdje smo upotrijebili klauzulu ORDER BY s upitom SELECT primijenjenim na stupac Naziv za sortiranje podataka. Koristili smo ključnu riječ DESC nakon klauzule ORDER BY za sortiranje podataka silaznim redoslijedom.

Dobit ćete sljedeći izlaz:

SQL KLAUZULE

Svi zapisi prikazani su silaznim redoslijedom imena zaposlenika.