logo

SQL KLAVZULE

  • Klavzula SQL nam pomaga pridobiti niz ali svežnje zapisov iz tabele.
  • Klavzula SQL nam pomaga določiti pogoj za stolpce ali zapise tabele.

Različni členi, ki so na voljo v jeziku strukturiranih poizvedb, so naslednji:

  1. KLAVZULA WHERE
  2. SKUPINA PO KLAVZULI
  3. S KLAVZULO
  4. VRSTNI RED PO KLAUZULI

Oglejmo si vsak stavek enega za drugim s primerom. Za pisanje poizvedb v primerih bomo uporabili bazo MySQL.

1. KLAVZULA WHERE

Klavzula WHERE v SQL se uporablja s poizvedbo SELECT, ki je eden od jezikovnih ukazov za obdelavo podatkov. Klavzule WHERE lahko uporabite za omejitev števila vrstic, ki bodo prikazane v naboru rezultatov, kar na splošno pomaga pri filtriranju zapisov. Vrne samo tiste poizvedbe, ki izpolnjujejo posebne pogoje klavzule WHERE. Klavzula WHERE se uporablja v stavku SELECT, UPDATE, DELETE itd.

WHERE člen s poizvedbo SELECT

Simbol zvezdice se uporablja s klavzulo WHERE v poizvedbi SELECT za pridobitev vseh vrednosti stolpcev za vsak zapis iz tabele.

linux ukazi, ki

Sintaksa klavzule where z izbirno poizvedbo za pridobitev vseh vrednosti stolpcev za vsak zapis iz tabele:

 SELECT * FROM TABLENAME WHERE CONDITION; 

Če v skladu z zahtevo želimo pridobiti samo selektivne stolpce, bomo uporabili spodnjo sintakso:

 SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION; 

Razmislite o tabeli zaposlenih z naslednjimi podatki:

E_ID Ime Plača Mesto Imenovanje Datum_pridružitve starost
1 Sakshi Kumari 50000 Mumbaj Vodja projekta 2021-06-20 24
2 Tejaswini Naik 75000 Delhi Sistemski inženir 2019-12-24 23
3 Anuja Sharma 40000 Jaipur Vodja 2021-08-15 26
4 Anuška Tripathi 90000 Mumbaj Testerji programske opreme 2021-06-13 24
5 Rucha Jagtap 45000 Bangalore Vodja projekta 2020-08-09 23
6 Rutuja Deshmukh 60000 Bangalore Vodja 2019-07-17 26
7 Baviškarjev glas 55000 Jaipur Sistemski inženir 2021-10-10 24
8 Tukaj je Sheik 45000 Pune Programski inženir 2020-09-10 26
9 Swati Kumari 50000 Pune Testerji programske opreme 2021-01-01 25
10 Mayuri Patel 60000 Mumbaj Vodja projekta 2020-10-02 24
enajst Simran Khanna 45500 Kolhapur HR 2019-01-02 26
12 Shivani Wagh 50500 Delhi Razvijalec programske opreme 2016-09-10 25
13 Kiran Maheshwari 50000 Nashik HR 2013-12-12 23
14 Tejal Jain 40000 Delhi Vodja projekta 2017-11-10 25
petnajst Mohini Šah 38000 Pune Razvijalec programske opreme 2019-03-05 dvajset

Primer 1:

Napišite poizvedbo za pridobitev vseh tistih zapisov zaposlenega, kjer je plača zaposlenega višja od 50000.

poizvedba:

 mysql> SELECT * FROM employees WHERE Salary > 50000; 

Zgornja poizvedba bo prikazala vse tiste zapise zaposlenega, kjer je plača zaposlenega višja od 50000. Plača pod 50000 ne bo prikazana v skladu s pogoji.

Dobili boste naslednje rezultate:

SQL KLAVZULE

Glede na pričakovani rezultat so prikazani samo tisti zapisi, kjer je plača zaposlenega večja od 50000. V tabeli zaposlenih je šest zapisov, ki izpolnjujejo dani pogoj.

Primer 2:

Napišite poizvedbo za posodobitev evidence zaposlenega in nastavite posodobljeno ime kot 'Harshada Sharma', kjer je ime mesta zaposlenega Jaipur.

poizvedba:

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

SQL KLAVZULE

Zgornja poizvedba bo posodobila ime zaposlenega v »Harshada Sharma«, kjer je mesto zaposlenega Jaipur.

Če želite preveriti, ali so zapisi posodobljeni ali ne, bomo zagnali izbirno poizvedbo.

 mysql> SELECT * FROM employees; 

SQL KLAVZULE

V tabeli zaposlenih je samo en zapis, kjer je mesto zaposlenega 'Jaipur'. ID zapisa je 3, kar izpolnjuje dani pogoj. Zato je v skladu z danim pogojem ime zaposlenega z ID-jem zaposlenega 3 zdaj spremenjeno v 'Harshada Sharma'.

Primer 3:

Napišite poizvedbo za brisanje zapisa zaposlenega, kjer je datum zaposlitve zaposlenega '2013-12-12'.

poizvedba:

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

SQL KLAVZULE

Zgornja poizvedba bo izbrisala podatke o zaposlenem, katerega datum pridružitve je '2013-12-12'.

Za preverjanje rezultatov zgornje poizvedbe bomo izvedli poizvedbo za izbiro.

 mysql> SELECT *FROM employees; 

SQL KLAVZULE

V tabeli zaposlenih je samo en zapis, kjer je datum pridružitve zaposlenega '2013-12-12'. ID zapisa je 13, kar izpolnjuje dani pogoj. Zato je glede na podani pogoj delavec z id delavca 13 sedaj izbrisan iz tabele zaposlenih.

2. SKUPINA PO KLAVZULI

Klavzula Group By se uporablja za razvrščanje podobnih vrst zapisov v skupine v jeziku strukturiranih poizvedb. Klavzula Group by v jeziku strukturiranih poizvedb se uporablja s stavkom Select. Klavzula Group by je postavljena za klavzulo where v stavku SQL. Klavzula Group By se posebej uporablja s funkcijo združevanja, tj. max (), min (), avg (), sum (), count () za združevanje rezultata na podlagi enega ali več kot enega stolpca.

Sintaksa klavzule Group By:

 SELECT * FROM TABLENAME GROUP BY COLUMNNAME; 

Zgornja sintaksa bo izbrala vse podatke ali zapise iz tabele, vendar bo vse te podatke ali zapise razporedila v skupine na podlagi imena stolpca, podanega v poizvedbi.

Sintaksa klavzule Group By z agregatnimi funkcijami:

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

Razumejmo klavzulo Group By s pomočjo primerov.

Razmislite o tabeli zaposlenih z naslednjimi podatki:

E_ID Ime Plača Mesto Imenovanje Datum_pridružitve starost
1 Sakshi Kumari 50000 Mumbaj Vodja projekta 2021-06-20 24
2 Tejaswini Naik 75000 Delhi Sistemski inženir 2019-12-24 23
3 Anuja Sharma 40000 Jaipur Vodja 2021-08-15 26
4 Anuška Tripathi 90000 Mumbaj Testerji programske opreme 2021-06-13 24
5 Rucha Jagtap 45000 Bangalore Vodja projekta 2020-08-09 23
6 Rutuja Deshmukh 60000 Bangalore Vodja 2019-07-17 26
7 Baviškarjev glas 55000 Jaipur Sistemski inženir 2021-10-10 24
8 Tukaj je Sheik 45000 Pune Programski inženir 2020-09-10 26
9 Swati Kumari 50000 Pune Testerji programske opreme 2021-01-01 25
10 Mayuri Patel 60000 Mumbaj Vodja projekta 2020-10-02 24
enajst Simran Khanna 45500 Kolhapur HR 2019-01-02 26
12 Shivani Wagh 50500 Delhi Razvijalec programske opreme 2016-09-10 25
13 Kiran Maheshwari 50000 Nashik HR 2013-12-12 23
14 Tejal Jain 40000 Delhi Vodja projekta 2017-11-10 25
petnajst Mohini Šah 38000 Pune Razvijalec programske opreme 2019-03-05 dvajset

Primer 1:

Napišite poizvedbo za prikaz vseh zapisov tabele zaposlenih, vendar združite rezultate glede na stolpec starosti.

poizvedba:

 mysql> SELECT * FROM employees GROUP BY Age; 

Zgornja poizvedba bo prikazala vse zapise tabele zaposlenih, vendar razvrščene po stolpcu starosti.

Dobili boste naslednje rezultate:

SQL KLAVZULE

Primer 2:

Napišite poizvedbo za prikaz vseh zapisov tabele zaposlenih, razvrščenih po nazivu in plači.

poizvedba:

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

Zgornja poizvedba bo prikazala vse zapise tabele zaposlenih, vendar razvrščene po stolpcu plače in oznake.

Dobili boste naslednje rezultate:

SQL KLAVZULE

Primeri klavzule Group By z uporabo agregatnih funkcij

Primer 1:

Napišite poizvedbo za seznam števila zaposlenih, ki delajo na določeni oznaki, in združite rezultate glede na označbo zaposlenega.

poizvedba:

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

Zgornja poizvedba bo prikazala oznako z ustreznim številom zaposlenih, ki delajo na tej oznaki. Vsi ti rezultati bodo združeni po stolpcu z oznakami.

Dobili boste naslednje rezultate:

SQL KLAVZULE

Glede na pričakovan rezultat se prikaže oznaka z ustreznim številom zaposlenih.

Primer 2:

Napišite poizvedbo za prikaz vsote plače zaposlenega glede na mesto, razvrščeno glede na starost zaposlenega.

poizvedba:

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

Zgornja poizvedba bo najprej izračunala vsoto plač, ki delajo v vsakem mestu, nato pa bo prikazala vsoto plače z ustrezno plačo, vendar razvrščeno po stolpcu starosti.

Dobili boste naslednje rezultate:

SQL KLAVZULE

Glede na pričakovani rezultat se izpiše vsota plače zaposlenega glede na mesto, kateremu zaposleni pripada. Če dva zaposlena pripadata istemu mestu, potem bosta v eni skupini.

3. KLAVZULA, KI IMA:

Ko moramo v stolpec tabele postaviti kakršne koli pogoje, uporabimo klavzulo WHERE v SQL. Če pa želimo takrat uporabiti kateri koli pogoj za stolpec v klavzuli Group By, bomo uporabili klavzulo HAVING s klavzulo Group By za pogoje stolpca.

Sintaksa:

 TABLENAME GROUP BY COLUMNNAME HAVING CONDITION; 

Razmislite o tabeli zaposlenih z naslednjimi podatki:

E_ID Ime Plača Mesto Imenovanje Datum_pridružitve starost
1 Sakshi Kumari 50000 Mumbaj Vodja projekta 2021-06-20 24
2 Tejaswini Naik 75000 Delhi Sistemski inženir 2019-12-24 23
3 Anuja Sharma 40000 Jaipur Vodja 2021-08-15 26
4 Anuška Tripathi 90000 Mumbaj Testerji programske opreme 2021-06-13 24
5 Rucha Jagtap 45000 Bangalore Vodja projekta 2020-08-09 23
6 Rutuja Deshmukh 60000 Bangalore Vodja 2019-07-17 26
7 Baviškarjev glas 55000 Jaipur Sistemski inženir 2021-10-10 24
8 Tukaj je Sheik 45000 Pune Programski inženir 2020-09-10 26
9 Swati Kumari 50000 Pune Testerji programske opreme 2021-01-01 25
10 Mayuri Patel 60000 Mumbaj Vodja projekta 2020-10-02 24
enajst Simran Khanna 45500 Kolhapur HR 2019-01-02 26
12 Shivani Wagh 50500 Delhi Razvijalec programske opreme 2016-09-10 25
13 Kiran Maheshwari 50000 Nashik HR 2013-12-12 23
14 Tejal Jain 40000 Delhi Vodja projekta 2017-11-10 25
petnajst Mohini Šah 38000 Pune Razvijalec programske opreme 2019-03-05 dvajset

Primer 1:

Napišite poizvedbo za prikaz imena zaposlenih, plače in mesta, kjer je najvišja plača zaposlenega večja od 40000, in rezultate združite po oznakah.

poizvedba:

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

Dobili boste naslednje rezultate:

SQL KLAVZULE

Zgornji izhod kaže, da so ime zaposlenega, plača in mesto zaposlenega, kjer je plača zaposlenega večja od 40000, razvrščeni po oznakah. (Zaposleni s podobnim poimenovanjem so uvrščeni v eno skupino, tisti z drugim poimenovanjem pa posebej).

Primer 2:

Napišite poizvedbo za prikaz imena zaposlenih in oznake, kjer je vsota plače zaposlenega večja od 45000 in združite rezultate po mestih.

poizvedba:

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

Dobili boste naslednje rezultate:

SQL KLAVZULE

Zgornji rezultat prikazuje ime zaposlenega, imenovanje in plačo zaposlenega. Vsota plače je večja od 45000, razvrščenih po mestih. (Zaposleni s podobnimi mesti so uvrščeni v eno skupino, tisti z različnimi mesti, ki niso podobni, pa ločeno).

4. VRSTNI RED PO KLAUZULI

Kadarkoli želimo karkoli razvrstiti v SQL, uporabimo klavzulo ORDER BY. Klavzula ORDER BY v SQL nam bo pomagala razvrstiti podatke glede na določen stolpec tabele. To pomeni, da bodo razvrščeni vsi podatki, shranjeni v določenem stolpcu, na katerem izvajamo klavzulo ORDER BY. Ustrezne vrednosti stolpcev bodo prikazane v zaporedju, v katerem smo pridobili vrednosti v prejšnjem koraku.

Kot vsi vemo, razvrščanje pomeni bodisi v NARAŠČAjočem bodisi v padajočem vrstnem redu. Na enak način ORDER BY CLAUSE razvrsti podatke v naraščajočem ali padajočem vrstnem redu glede na naše zahteve. Podatki bodo razvrščeni v naraščajočem vrstnem redu, kadar koli ključna beseda ASC se uporablja s klavzulo ORDER in ključna beseda DESC bo zapise razvrstil po padajočem vrstnem redu.

Privzeto bo razvrščanje v SQL izvedeno s klavzulo ORDER BY v NARASTAJOČEM vrstnem redu, če nismo omenili vrstnega reda razvrščanja.

Preden preidemo na primer klavzule ORDER BY za razvrščanje zapisov, si bomo najprej ogledali sintakso, tako da nam bo enostavno iti skozi primer.

Sintaksa stavka ORDER BY brez ključnih besed asc in desc:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME; 

Sintaksa stavka ORDER BY za razvrščanje v naraščajočem vrstnem redu:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC; 

Sintaksa stavka ORDER BY za razvrščanje v padajočem vrstnem redu:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC; 

Recimo, da imamo tabelo zaposlenih z naslednjimi podatki:

E_ID Ime Plača Mesto Imenovanje Datum_pridružitve starost
1 Sakshi Kumari 50000 Mumbaj Vodja projekta 2021-06-20 24
2 Tejaswini Naik 75000 Delhi Sistemski inženir 2019-12-24 23
3 Anuja Sharma 40000 Jaipur Vodja 2021-08-15 26
4 Anuška Tripathi 90000 Mumbaj Testerji programske opreme 2021-06-13 24
5 Rucha Jagtap 45000 Bangalore Vodja projekta 2020-08-09 23
6 Rutuja Deshmukh 60000 Bangalore Vodja 2019-07-17 26
7 Baviškarjev glas 55000 Jaipur Sistemski inženir 2021-10-10 24
8 Tukaj je Sheik 45000 Pune Programski inženir 2020-09-10 26
9 Swati Kumari 50000 Pune Testerji programske opreme 2021-01-01 25
10 Mayuri Patel 60000 Mumbaj Vodja projekta 2020-10-02 24
enajst Simran Khanna 45500 Kolhapur HR 2019-01-02 26
12 Shivani Wagh 50500 Delhi Razvijalec programske opreme 2016-09-10 25
13 Kiran Maheshwari 50000 Nashik HR 2013-12-12 23
14 Tejal Jain 40000 Delhi Vodja projekta 2017-11-10 25
petnajst Mohini Šah 38000 Pune Razvijalec programske opreme 2019-03-05 dvajset

Primer 1:

Napišite poizvedbo za razvrščanje zapisov v naraščajočem vrstnem redu oznake zaposlenih iz tabele zaposlenih.

poizvedba:

 mysql> SELECT * FROM employees ORDER BY Designation; 

Tukaj v poizvedbi SELECT je klavzula ORDER BY uporabljena v stolpcu 'Designation' za razvrščanje zapisov, vendar nismo uporabili ključne besede ASC za klavzulo ORDER BY za razvrščanje v naraščajočem vrstnem redu. Torej bodo podatki privzeto razvrščeni v naraščajočem vrstnem redu, če ne podamo ključne besede asc.

Dobili boste naslednje rezultate:

SQL KLAVZULE

Glede na pričakovan rezultat so zapisi prikazani v naraščajočem vrstnem redu glede na imenovanje zaposlenega.

Primer 2:

Napišite poizvedbo za prikaz imena in plače zaposlenega v naraščajočem vrstnem redu glede na plačo zaposlenega iz tabele zaposlenih.

poizvedba:

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

Tukaj v poizvedbi SELECT je klavzula ORDER BY uporabljena za stolpec »Plača« za razvrščanje zapisov. Uporabili smo ključno besedo ASC za razvrščanje plače zaposlenega v naraščajočem vrstnem redu.

Dobili boste naslednje rezultate:

SQL KLAVZULE

Vsi zapisi so prikazani po naraščajočem vrstnem redu plače zaposlenega.

Primer 3:

Napišite poizvedbo za razvrščanje podatkov v padajočem vrstnem redu imena zaposlenega, shranjenega v tabeli zaposlenih.

java psevdokoda

poizvedba:

 mysql> SELECT * FROM employees ORDER BY Name DESC; 

Tukaj smo za razvrščanje podatkov uporabili klavzulo ORDER BY s poizvedbo SELECT, uporabljeno v stolpcu Ime. Uporabili smo ključno besedo DESC za klavzulo ORDER BY za razvrščanje podatkov v padajočem vrstnem redu.

Dobili boste naslednje rezultate:

SQL KLAVZULE

Vsi zapisi so prikazani v padajočem vrstnem redu glede na ime zaposlenega.