vikson | 19 Februar, 2012 09:18
Evo nas na početku pretraživanja podataka iz baze. Kao što je obećavano, počinjemo da radimo na našoj glavnoj temi, a to je približiti SQL jezik.
Da se vratimo našem ormaru. Svaki put kada se bira odjeća za obući, naš mozak procesira upite vrlo slične SQL upitnom jeziku. Recimo, biramo plave štofane pandalone, bijelu košulju i plavi pulover. Znamo da u ormaru imamo i drugih pantalona, i drugih košulja i drugih džempera. Ali, iz ormara je izvadjena u tom trenutku potrebna odjeća.
SQL jezik je alat pomoću kojeg manipulišemo podacima u nekoj bazi podataka. To je pojednostavljeno rečeno, strukturirani jezik (engleski) za upravljanje podacima. Pomoću njega je moguće sledeće:
DDL (Data Definition language) - upravljati objektima u bazi (schema (šema), table (tabela), column (kolona), index (indeks), primary key (primarni ključ), foreing key (spoljašnji ključ)) (create (kreiranje), alter (popravljanje), drop (brisanje))
DML (Data Manipulation language) upravljati podacima u tabeli (insert (dodavanje), update (popravljanje), delete(brisanje)
QL (query language) - izvoditi upite (select - izbor podataka)
Naš zadatak je da savladamo dio SQL jezika za izvodjenje upita. Alat u kojem će se izvoditi primjeri je SQL Editor, koji se dobije u paketu za instalaciju baze MySQL (sa sledećeg site-a se može preuzeti instalacija http://dev.mysql.com/downloads/)
STRUKTURA SQL REČENICE
Svaki upit koji se postavlja je faktički prevod naše/vaše upitne rečenice u pojednostavljeni jezik, koji razumije računar.
Upitna rečenica izlgeda ovako:
SELECT kolona1[, kolona2, ..., kolonan] --IZABERI kolonu (kolone)
FROM tabela1[, tabela2, ...,tabelnan] --IZ tabele (tabela)
[WHERE kriterijum1, kriterijum 2,...,kriterijumn] -- [ZA KOJE VAŽI kriterijum (kriterijumi)]
[GROUP BY kolona1[, kolona2, ..., kolonan]] -- [GRUPIŠI po koloni (kolonama)]
[HAVING kolona1[, kolona2, ..., kolonan]] [ZA KOJE VAŽI kriterijum (kriterijumi)]
[ORDER BY kolona1[, kolona2, ..., kolonan]] -[SORTIRAJ PO koloni (kolonama)]
Za početak jednostavan primjer:
Daj mi spisak načina plaćanja.
IZABERI "šifra načina plaćanja", "opis načina plaćanja" IZ "način plaćanja".
SELECT NPL_SIF, NPL_OPS FROM dbracun.nacin_placanja;
TIPOVI PODATAKA
Ako zanemarimo sadržaj, svaka kolona u tabeli je niz znakova (slova, brojevi, slike,...). Pošto sve radi na računaru, potrebno je definisati o kojoj vrsti znakova se radi. Računar na osnovu izabranog tipa podatka odlučuje na koji način će procesirati te podatke. Šta to znači?
Ako znamo da će se u koloni čuvati samo numerični znakovi, koristimo tipove podataka, koji jednostavno prepoznaju i procesiraju numerike. Ako znamo da će se u koloni čuvati slova (i/ili numerici, specijalni znaci), koristimo tipove podataka za procesiranje karaktera. Još jedan vrlo čest primjer u bazi podataka je kolona koja čuva podatak o datumu i času. Zbog programerske sprecifičnosti, taj niz znakova se tretira kao datumski ili datumsko/časovni tip podataka. Postoji i tip podatka koji je namjenjen čuvanju podataka tipa slika, videozapis i ostalo. Tako imamo osnovne tipove podataka:
Na sledećem web site-u je da popis svih tipova podataka za MySQL bazu podataka http://dev.mysql.com/doc/refman/5.5/en/data-type-overview.html
NAPOMENA:
Ovaj blog će se fokusirati na sintaksu MySQL baze. Svaki proizvod ima neke specifičnosti, koje drugi nema, mada je većina osnovne sintakse jednaka, zbog ANSI - 1986 i ISO -1987 standarda.
Za ostale proizvode slična uputstva postoje na web site-ovima proizvodjača.
STRUKTURA BAZE PODATAKA RAČUNI
Prije nego počnemo sa pretraživanjem podataka iz baze, potrebno je da se upoznamo sa strukturom i relacijama koje povezuju tabele. Zato je dobro da programeri pripreme sliku i opis tabela i kolona.
Primjeri u ovom blogu se odnose na račune nastale u procesu prodaje u jednom trgovinskom preduzeću. Dijagram tabela je dat na donjoj slici.
Podaci su sačuvani u MySQL bazi, u shemi dbracun.
| Tabela | Ozn | Kolona | Tip podatka | Opis kolone |
| artikal_usluga | 1 | ARU_SIF | int(11) | Artikal/Usluga šifra |
| artikal_usluga | 2 | ARU_OZN | varchar(10) | Artika/Usluga oznaka |
| artikal_usluga | 3 | ARU_NAZ | varchar(150) | Naziv |
| artikal_usluga | 4 | ARU_IND | varchar(1) | Indikator A - artikal; U - Usluga |
| artikal_usluga | 5 | ARU_GR | varchar(3) | Grupa |
| artikal_usluga | 6 | ARU_GRN | varchar(45) | Grupa naziv |
| artikal_usluga | 7 | ARU_PD | varchar(3) | Podgrupa |
| artikal_usluga | 8 | ARU_PDN | varchar(45) | Podgrupa naziv |
| nacin_placanja | 1 | NPL_SIF | varchar(3) | Šifra načina plaćanja |
| nacin_placanja | 2 | NPL_OPS | varchar(45) | Opis načina plaćanja |
| organizacija | 1 | ORG_SIF | int(11) | Organizacijska jedinicia šifra |
| organizacija | 2 | ORG_NAZ | varchar(150) | Naziv |
| organizacija | 3 | ORG_NAD_SIF | int(11) | Šifra nadredjene OJ |
| organizacija | 4 | ORG_VOD_SIF | int(11) | Vodja OJ šifra |
| radnik | 1 | RAD_SIF | int(11) | Ššifra radnika |
| radnik | 2 | RAD_NAZIV | varchar(150) | Ime i prezime |
| radnik | 3 | RAD_PTT | varchar(45) | Broj pošte |
| radnik | 4 | RAD_ADR | varchar(45) | Adresa |
| radnik | 5 | RAD_DPR | date | Datum početka rada |
| radnik | 6 | RAD_DPU | date | datum podpisa ugovora |
| radnik | 7 | RAD_DZA | date | Datum prestanka rada |
| racun | 1 | RAC_SIF | int(11) | Šifra računa |
| racun | 2 | RAC_OZN | varchar(45) | Oznaka računa Datum-Šifra prodavnice-redni broj |
| racun | 3 | RAC_DAT | date | Datum računa |
| racun | 4 | ORG_SIF | int(11) | Šifra OJ |
| racun | 5 | RAD_SIF | int(11) | Šifra radnika |
| racun | 6 | NPL_SIF | varchar(3) | Šifra načina plaćanja |
| racun | 7 | RAC_UID | varchar(45) | Korisničko ime |
| racun | 8 | RAC_STA | int(11) | Status 0 - nedovršen; 1 - plaćeno; 2 - stornirano |
| racun | 9 | RAC_DUN | datetime | Datum unosa računa |
| racun | 10 | RAC_DZP | datetime | Datum zadnje promjene |
| racun_element | 1 | REL_SIF | int(11) | Element računa šifra |
| racun_element | 2 | RAC_SIF | int(11) | Redni broj u okviru računa |
| racun_element | 3 | REL_RB | int(11) | Redni broj u okviru računa |
| racun_element | 4 | ARU_SIF | int(11) | Šifra Artikal/Usluga |
| racun_element | 5 | REL_JM | varchar(5) | Jedinica mjere |
| racun_element | 6 | REL_KOL | decimal(15,3) | Količina |
| racun_element | 7 | REL_CEN | decimal(15,3) | Osnovna cijena |
| racun_element | 8 | REL_IZN | decimal(15,3) | Iznos za element računa |
| racun_element | 9 | REL_PPO | decimal(8,3) | Procenat poreza |
| racun_element | 10 | REL_DUN | datetime | Datum unosa |
Najčešći tipovi podataka koji se koriste u kreiranoj bazi za pegled računa su:
| « | Februar 2012 | » | ||||
|---|---|---|---|---|---|---|
| Po | Ut | Sr | Če | Pe | Su | Ne |
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||