Podaci za svakoga

SQL - uvod

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:

  • numerični - bool (za 0 (false) i 1 (true)), bit, smallint, int (za cijele brojeve), float, double, decimal (za realne brojeve) ...
  • slova/brojevi/specijalni znaci - char (fiksna dužina), varchar (dužina zavisi od dužine znakova u koloni) ...
  • datum/čas - date (samo datum), datetime, timestamp (datum i čas), time (samo čas), ...
  • slike, video, zvučni zapis - blob 
  • ...

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:

  • varchar (xx) - podržava čuvanje svh znakova: numerike, slova, specijalni znaci
  • int (integer) - podržava čuvanje cijelih brojeva u rasponu od -2147483648 do 2147483647
  • decimal (x,y) - podržava čuvanje realnih brojeva (fiksni broj decmalki)
  • date - podržava čuvanje datuma (standardni format 'YYYY-MM-DD')
  • datetime - podržava čuvanje datuma i časa ('YYYY-MM-DD HH:MI:SS')

Komentari

Dodaj komentar





Zapamti me

 
Powered by blog.rs