SQL čitanje i sortiranje podataka

Sada ćemo se upoznati sa najosnovnijim oblikom upita za čitanje podataka iz baze, koji se zadaje u jeziku SQL. Za ovo koristimo iskaz SELECT. Ovaj upit može biti veoma kompleksan, a u ovom tekstu ćemo obraditi samo najosnovnije mogućnosti za čitanje podataka iz jedne tabele.

U svom najosnovnijem obliku, iskaz SELECT koristimo da dobijemo neki "odgovor" od baze podataka, tako što uz njega zadajemo jedan ili više izraza (odvojenih zarezima).

SELECT lista izraza

Slično kao u algoritmima ili klasičnom programiranju, izraz može biti neka kombinacija operanda povezanih operatorima. Pri tom obično kao operande možemo navesti:

Ako želimo da zadamo nazive kolona, tj. da izvlačimo podatke iz baze podataka, moramo dopuniti SELECT iskaz odrednicom FROM. Već znamo da tabela u relacionoj bazi podataka, sadrži slogove (redove) sa poljima (kolonama). Jasno nam je da podatke možemo iščitati tako što posle ključne reči SELECT, zadajemo listu polja (i drugih izraza, pošto SELECT ne mora da sadrži isključivo polja - čak i polja mogu biti deo izraza, ne moramo ih navesti samostalno). Svaki izraz iz liste predstavlja po jednu kolonu koja će biti prikazana u rezultatu. Onda se zadaje odrednica FROM posle koje navodimo tabelu odakle čitamo podatke (ovde se u stvari može zadati lista tabela, ali time se bavimo u tekstu o povezivanju tabela).

SELECT lista izraza FROM lista tabela

Za sada ćemo umesto liste tabela sa podacima zadavati samo jednu tabelu. Umesto liste polja, moguće je zadati oznaku * (zvezdica), koja označava sva polja.

SELECT * FROM tabela

Kada se govori o optimizaciji SQL upita, ova praksa se ne preporučuje. Bolje je navesti čak i sva polja nego samo zvezdicu.

Svaki izraz u SELECT listi je moguće imenovati korišćenjem odrednice AS, čime dodeljujemo alternativno ime izrazu - tzv. alias.

SELECT izraz AS naziv, izraz AS naziv, ...

Kasnije u nekim situacijama možemo koristiti taj naziv, na primer kada zadajemo listu za sortiranje, o čemu pišemo u nastavku teksta.

Inače, ako želimo da aliasi sadrže i razmake (tj. da budu sastavljeni iz više reči), moramo da ih navedemo unutar apostrofa.

...izraz AS 'naziv u više reči' ...

Dobijene rezultate je moguće poređati ako navedemo i odrednicu ORDER BY. U ovoj odrednici možemo navesti polje po kome se vrši sortiranje, izraz zasnovan na nekom od polja ili čak listu polja i izraza. Za svaki član ORDER liste možemo navesti da li se sortira po opadajućem redosledu (DESC). Ako se DESC ne navede, sortiranje se vrši po rastućem redosledu (od najmanje ka najvećoj vrednosti). Za tekstualne vrednosti, to je redosled po abecedi. Inače, moguće je navesti i odrednicu ASC, kojom eksplicitno zahtevamo sortiranje u rastućem redosledu.

SELECT lista izraza FROM tabela ORDER BY lista izraza SELECT lista izraza FROM [tabela] ORDER BY izraz [DESC], izraz [DESC] ...

Šta znači kada se zada lista izraza za sortiranje? Pa, najpre se gleda prvi izraz - ako su sve vrednosti različite, vrši se prosto sortiranje po prvom izrazu, a ostali se ignorišu. Međutim, ako se pojavi više vrednsti prvog izraza koje su podjednake, onda se sortiranje vrši prema vrednosti drugog izraza itd.

Primer

Recimo da postoji sledeća tabela pod nazivom knjige.

sifra naslov stranice zanr pisac
0001 Isijavanje 390 HOR P02
0002 Boja magije 270 FAN P09
0005 Čekajući Godoa 90 DRA P11
0006 To 1070 HOR P02
0007 Veštice na putu 370 FAN P09
000A Mračna kula - Revolveraš 200 FAN P02
000B Prokleta avlija 150 IST P01

Pogledajmo najpre najjednostavniji SELECT iskaz koji treba da pročita naslove i brojeve strana iz tabele knjige.


  SELECT naslov, stranice
  FROM knjige
		
naslov stranice
Isijavanje 390
Boja magije 270
Čekajući Godoa 90
To 1070
Veštice na putu 370
Mračna kula - Revolveraš 200
Prokleta avlija 150

Hajde da sada napravimo takav isti upit, ali da još sortiramo podatke prema broju strana od "najveće" do "najmanje" knjige - dakle u opadajućem redosledu. Takođe smo zadali i novi naziv "broj" za drugi izraz u SELECT listi.


  SELECT naslov, stranice AS broj
  FROM knjige
  ORDER BY broj DESC
		
naslov broj
To 1070
Isijavanje 390
Veštice na putu 370
Boja magije 270
Mračna kula - Revolveraš 200
Prokleta avlija 150
Čekajući Godoa 90

Možete i sami isprobati ovaj primer...

sql-select-basic-sr
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.