Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

PROJEKTIRNJE INFORMACIJSKIH SUSTAVA

Osnove bazi podataka + Osnove SQL-a

PONAVLJANJE ZA STUDENTE

Tomislav Gligora spec.ing.

BAZA PODATAKA

Baza podataka je strukturirana kolekcija zapisa podataka. U nju pohranjujemo fizike zapise. Baza podataka je raunalna aplikacija koja se sastoji od podataka, metapodataka i podprograma. Takoer baza podataka je objekt koji sadri tablice i druge objekte radi pospremanja i obrade podataka. Dakle baza podataka pohranjuje, obrauje i izvjetava o podacima koji su potrebni za funkcioniranje informacijskog sustava, a samim time i za poslovanje tvrtke. Podaci su vrijednosti, informacije koje unosimo u bazu podataka u njima predviena polja, dok metapodaci su ti koji nam daju informacije o podacima u bazi, oni nam govore o duljini i tipu svakog polja. Podprogrami u bazi podataka su procedure, funkcije, paketi i okidai koji omoguavaju upravljanje podacima unutar baze podataka. Takoer za bazu podataka moemo rei da je implementacija ili kreacija fizikog modela baze podataka. Dok je model baze podataka nacrt koji nam govori kako se podaci pohranjuju u bazi podataka.

RELACIJSKI MODEL BAZE PODATAKA

Relacijski model baze podataka je poboljana verzija hijerarhijskog modela baze podataka. Glavna prednost relacijskog modela baze podataka je ta to se svakoj tablici moe pristupiti bez dodatnog pristupa roditeljiskim tablicama. To nam omoguava injenica da u ovom modelu svaka tablica moe biti povezana sa svakom tablicom bez obzira na njihov hijerarhijski poredak. Baza podataka se izrauje na temelju poslovnih pravila i poslovnih procesa. Jasno je da poslovna pravila i njezini podaci moraju biti sadrani u bazi podataka, jer u suprotnom informacijski sustav ne bi zadovljavao poslovni sustav organizacije za koju je predvien. Samim time to su poslovna pravila obuhvaena u bazi podataka i poslovni procesi su sadrani u bazi, jer gotovo svaki poslovni proces obuhvaa jedno ili vie poslovnih pravila. Prilikom izrade baze podataka prvi korak je izrada relacijskog modela (ER dijagarama entity relationship). Njega dobivamo iz objanjenog postupka obuhvaanja poslovnih pravila i poslovnih procesa. ER dijagram je relacijska shema, koja nam oznaujemo u kojem obliku su definirane veze izmeu tablica. ER dijagram je kljuno polazite za daljnji razvoj baze podataka. Iz ER dijagrama vidimo tablice, definicije podataka koje unosimo, njihov tip i duljinu. Takoer iz ER dijagrama vidimo koji su primarni kljuevi, a koji su strani kljuevi. U ER dijagramu tablice se zove entitetima, a polja u tablici atributima.

Da bismo mogli bazu podataka fiziki napraviti, aurirati i u krajnjem procesu funkcionalno implenemtirati, moramo poznavati SQL (Structured Query Language), to bi se moglo prevesti kao strukturirani jezik upita.

SQL Structured Query Language

SQL omoguava da tvorimo i promijenimo strukturu baze podataka, dodamo prava korisniku za pristup bazama podataka ili tablicama, da traimo informacije od baze podataka, zapravo su tu dvije skupine funkcija: DDL (Data Definition Language) funkcije za definiciju podataka i DML (Data Manipulation Language) funkcija za upravljanje podacima.

Primjer 1. Tipian primjer DDL funkcije: CREATE TABLE imeTablice; Primjer 2. Tipian primjer DML funkcije SELECT *FROM imeTablice;

PRAVILA PISANJA KODA SQL ne pravi razliku izmeu velikih i malih slova, to znai da su sljedee dvije naredbe jednake: select prezime from gosti where ime='Marko' ili SELECT prezime FROM gosti WHERE ime='Marko' Radi lakeg itanja koda tim nainom emo sve naredbe SQL-a dalje pisati. Preporua se da kljune rijei (naredbe) budu napisane velikim slovima, a svi ostali elementi malim slovima, radi lakeg itanja i snalaenja po kodu. U nekim bazama niz znakova (string) mora biti napisan kao to je u bazi. Znai u gornjim naredbama nije isto ako se pie 'Marko' ili 'MARKO', ali ne mora vrijediti za Microsoft SQL. Napravilniji nain pisanja SQL koda: SELECT prezime FROM gosti WHERE ime='Marko'

Komentari su tekst koji piemo kao podsjetnik, a koji se nee izvriti. Imamo ih dvije vrste: za samo jedan red: -- ovo je komentar

tj. oznaka za komentar je --, a iza slijedi tekst komentara ili komentar kroz vie redova: /* ovo je takoer komentar, ali se protee kroz vie redova */

Imena objekata u SQL-u (imena tablica, stupaca, pogleda) prave se tako da prvi znak mora biti a - z, A - Z ili podvueno (underscore) _, te u nekim sluajevima @ i #. Na primjer u MS SQL-u imena mogu biti preko 100 znakova.

TIPOVI PODATAKA Pri kreiranju tablica odreujemo nazive stupaca te tip podataka koji e bit spremljen. To bi se moglo usporediti sa inicijalizacijom varijable u programiranju. Tipovi podataka su: CJELOBROJNI DECIMALNI NOVAC POMINI ZAREZ DATUMI NIZOVI ZNAKOVA BINARNI - bit, int, smallint, tinyint - decimal ili numeric - money, smallmoney - float, real - datetime, smalldatetime - char, nchar, text, varchar, nvarchar - binary, varbinary, image

FIZIKA IZRADA BAZE PODATAKA SQL naredba za kreiranje baze podataka je: CREATE DATABASE imeBaze;

I ona predstavlja prvi korak prilikom izrade fizike baze podataka na hard disku raunala. Veina komercijalnih i najpoznatijih inaica SQL-a podrava naredbu CREATE DATABASE. Kreiranje baze podataka male turistike tvrtke: CREATE DATABASE tourism_company;

Ukoliko iz bilo kojeg razloga elimo pobrisati bazu podataka, to u naem informacijskom sustavu nee biti sluaj, koristimo naredbu: DROP DATABASE imeBaze;

KREIRANJE TABLICA Svaka baza podataka, kao to je ve naglaeno, se sastoji od tablica koje sadre potrebne podatke. Pa stoga sljedei korak u fizikoj izradi baze podataka je izrada tablica i punjenje tablica pripadajuim podacima. Tablice predstavljaju dvodimenzionalne matrice iji redovi predstavljaju naziv i svojstva objekata pohranjenih u tablicu, a stupci svojstva objekata izraena odgovarajuim tipom podataka. Uz pomo jedne n-torke opisali smo jedan objekt. Tablica je objekt baze podataka u kojem se uvaju podaci. Naredba za kreiranje tablice u bazi podataka je: CREATE TABLE imeTablice ( imeKolone1 tipPodatka [NOT NULL], imeKolone2 tipPodatka [NOT NULL], ...... imeKoloneN tipPodatka [NOT NULL] ) te u skladu sa bazom imamo i naredbu za brisanje tablice: DROP TABLE imeTablice

Nakon brisanja tablice bespovratno unitavamo podatke, strukturu tablice ili privremene tablice.

Primjer naredbe za kreiranje tablice Odjeli: CREATE TABLE Odjeli ( ID NUMBER(10) PRIMARY KEY, Naziv NVARCHAR(30) NOT NULL, Br_zaposlenih NUMBER(5) NOT NULL, Napomena TEXT(1000), UNIQUE (ID) )

Nakon izvedbe ove naredbe i fiziki smo na disku napravili tablicu Odjeli. Dakle naa tablica je napravljena sa pripadajuim kolonama: ID, Naziv, Br_zaposlenih, Napomena. Vidljivo je iz naredbe da moramo definirati tip podataka za svaku kolonu te ako elimo i maksimalnu duljinu znakova koju elimo zauzeti sa pojedinim podatkom u kolonama. Takoer definiramo NULL i NOT NULL vrijednosti. Sve kolone su NULL ve pri samoj izradi tabele te NULL kao dio naredbe ne treba pisati, on se podrazumijeva; NULL ne znai da je neki podatak u tablici nula ve da se smije ostaviti prazna kolona u tablici ako nam je to potrebno. NOT NULL vrijednost nam predstavlja obavezno upisivanje podatka u kolonu koju smo na taj nain deklarirali, i NOT NULL kao takav se mora zapisati u okviru naredbe za kreiranje tablice.

PROMJENA STRUKTRE TABLICE NAKON NJENOG KREIRANJA Mnogo puta na dizajn baze podataka nije uzeo u obzir sve to bi trebalo. Takoer zahtjevi za aplikacijama i bazama podataka su uvijek skloni promjenama. ALTER TABLE naredba omoguava administratoru baze podataka ili projektantu baze podataka da promijeni strukturu tabele nakon to je kreirana. Sintaksa naredbe je: ALTER TABLE imeTablice <ADD imeKolone tipPodatka; MODIFY imeKolone tipPodatka;>

ALTER TABLE naredba nam omoguava: Da dodajemo kolone postojeoj tabeli Promijenimo kolonu koja ve postoji

Recimo da na naoj tablici Odjeli moramo promijeniti duljinu podataka sa 30 znakova na 50 znakova u koloni Naziv, upotrijebili bismo sljedeu naredbu: ALTER TABLE Odjeli MODIFY Naziv NVARCHAR(50); Takoer ako bismo morali u tablici Odjeli dodati novu kolonu Br_racunala jer do sada nismo u bazi imali podatak koliko koji odjel ima raunala, koristili bismo sljedeu naredbu: ALTER TABLE Odjeli ADD Br_racunala NUMBER (4);

UNOS PODATAKA U TABLICE Nakon to smo napravili tablicu u bazi podataka moramo tu tablicu napuniti pripadajuim podacima, tako u naoj tablici Odjeli moramo pridodati odgovarajue vrijednosti za kolone ID, Naziv, Br_zaposlenih i Napomena kao to je to prikazano u tablici. INSERT naredba nam omoguava da unosimo podatke u tablice u bazi podataka. Moe se podijeliti u dvije naredbe: INSERT.....VALUES i INSERT.....SELECT

INSERT.....VALUES naredba unosi podatke u tabelu red po red. Korisna je za male operacije koje imaju samo nekoliko redova. Sintaksa naredbe je sljedea: INSERT INTO imeTablice (imeKolone1, imeKolone2, ....) VALUES (vrijednost1, vrijednost2,....)

Moramo potovati tri pravila kada unosimo podatke upotrebom ove naredba: Vrijednosti koje unosimo moraju istog tipa podataka kao polja u koja unosimo podatke

Veliina podataka mora odgovarati veliini kolone. Na primjer, ne moemo unijeti 80 karaktera u kolonu ija je irina 40 karaktera Podaci u listi VALUES moraju odgovarati kolonama u listi kolona, odnosno prva vrijednost se mora unijeti u prvu kolonu, druga u drugu i tako dalje.

Dakle, prilikom unoenja podataka u tablicu Odjeli koristimo sljedee naredbe: INSERT INTO Odjeli (ID, Naziv, Br_zaposlenih, Napomena) VALUES ( 1, 'Odjel_prodaje', 5);

INSERT INTO Odjeli (ID, Naziv, Br_zaposlenih, Napomena) VALUES (2, 'Odjel_nabave', 3);

INSERT INTO Odjeli (ID, Naziv, Br_zaposlenih, Napomena) VALUES (3, 'Financijski_odjel', 4);

INSERT INTO Odjeli (ID, Naziv, Br_zaposlenih, Napomena) VALUES (4, 'Odjel_recepcije', 6, 'Radno vrijeme 0-24h');

Ova naredba je jako korisna kada dodajemo po jedan red tablici baze podataka, ali oigledno ima ogranienja. Da li bismo eljeli da je koristimo da dodamo 25000 redova tabeli. U takvim situacijama, INSERT.....SELECT naredba je puno korisnija. On omoguava projektantu da kopira podatke iz tablice ili grupe tablica u drugu tablicu. Ovu naredbu bi mogli upotrijebit u nekoliko situacija. No mi neemo koristiti ovu naredbu jer nemamo potrebu kopiranja podataka iz baze podataka te prijenosa u druge tablice. Sintaksa ove naredbe je sljedea:

INSERT INTO imeTablice (imeKolone1, imeKolone2,....) SELECT imeKolone1, imeKolone2,... FROM imeTablice1 WHERE uvjet Ista pravila koja vae za INSERT....VALUES naredbu vae i za INSERT....SELECT naredbu.

PROMJENA VRIJEDNOSTI U VE POSTOJEIM RETCIMA esto prilikom projektiranja, ali i prilikom auriranja baze podataka moramo promijeniti neki zapis u tablici, u tu svrhu koristimo UPDATE naredbu. Sintaksa naredbe je: UPDATE imeTablice SET imeKolone1=vrijednost1 [,imeKolone2=vrijednost2] WHERE uvjet Ova naredba prvo provjerava WHERE klauzulu. Za sve redove iz izabrane tablice, za koje se WHERE klauzula izraunava sa vrijednou TRUE, odgovarajue vrijednosti se auriraju. Recimo, kada bi se u odjelu prodaje u turistikoj tvtrki poveao broj zaposlenih sa 5 na 7, sukladno navedeno u prijanjim poglavljima da bismo zadovoljili poslovna pravila i procese moramo taj podatak promijeniti i u bazi podataka u tablici Odjeli, i to na sljedei nain: UPDATE Odjeli SET Br_zaposlenih=7 WHERE Naziv=Odjel_prodaje;

Nakon izvrenja ove naredbe i fiziki se u bazi podataka broj zaposlenika u odjelu prodaje povea sa 5 na 7.

BRISANJE PODTAKA Kao to nam je ponekad prilikom izrade ili auriranje baze podataka potrebno dodati neki podatak u tablice u bazi, tako je potrebno ponekad i pobrisati neki podatak iz baze podataka. Za tu operaciju se koristi naredba DELETE. Sintaksa naredbe je: DELETE FROM imeTabele WHERE uvjet Vano je napomenuti da kada u SQL-u izvedete sljedeu naredbu nee vas alat pitati potvrdu da elite brisati redak ili vie redaka u bazi podataka u nekoj tablici, ve e to uiniti bez potvrde, za razliku od veine dananjih korisnikih programa koje u svakodnevnoj upotrebi koristimo. Primjer brisanja odjela prodaje: DELETE FROM Odjeli WHERE Naziv=Odjel_nabave; U zavisnosti od upotrebe WHERE klauzule u DELETE iskazu, SQL moe da: obrie jedan red, obrie vie redova, obrie sve redove ili ne obrie ni jedan red. Ova naredba ne moe obrisati vrijednost iz jednog polja, uklanja cijeli redak iz tabele, moe se pojaviti problem relacije sa drugim tablicama, i upotrebom ove naredbe uklanjamo jedan redak iz tabele ne i cijelu tabelu.

RELACIJSKO SPAJANJE TABLICA Postavlja se pitanje kako pravilno spojiti tablice u bazi podataka, a odgovor opet lei u poslovnim pravilima, poslovnim procesima i organizacijskoj strukturi tvrtke, u naem sluaju male turistike tvrtke. Da bismo uope mogli govoriti o relacijskom spajanju tablica u bazi podataka, moramo objasniti pojam relacije. RELACIJA je zapravo nain vezivanja tablica u bazi podataka, i postoji vie vrsta relacija: Varnina noga Jedana-na-jedan relacija Jedan-na-vie relacija Vie-na-vie relacija.

S obzirom da se veinom bazama podataka koristi samo jedan-na-vie relacijei i ona je najea relacija prilikom projektiranja baze podataka, te smo ostale relacije implementirali pomou jedan-na-vie relacije nju emo i objasniti.

JEDAN NA VIE RELACIJA


ODJELI
# ID * Naziv * Br_zaposlenih o Napomena

ZAPOSLENICI
# ID * Ime * Prezime o Spol * Datum_rodjenja * Ulica_br * Mjesto * Drzava * Post_br o Tel_kucni o Tel_posao o Tel_mob o E-mail * ID_ODJ * ID_OBJ

Ovaj primjer pokazuje kako su spojene dvije tablice jedan-na-vie relacijom. U maloj nekoj tvrtki postoje odjeli sa svojim pripadajuim zaposlenicima, pa su stoga napravljene tablice Odjeli i Zaposlenici. Iz poslovnih pravila znamo da jedan zaposlenik moe raditi samo u jednom odjelu, te da jedan odjel moe imati vie od jednog zaposlenika. Odatle dolazi i relacija jedan-na-vie.

Da bismo mogli fiziki povezati te dvije tablice moramo napraviti kljueve koji e biti poveznica izmeu ova dvije tablice. KLJU je termin koriten za opis polja u tablicama spojenima zajedno formirajui relaciju. Klju kopira polja iz tablice u efikasniju strukturu koju je puno jednostavnije pretraivati. Klju kreira specijalnu oznaku za polje, to omoguuje tom polju da se povezuje sa drugom tablicom stvarajui relacije izmeu njih. Sljedee vrste kljueva se mogu definirati u tablicama baze podataka: PRIMARNI KLJU se koristi za jedinstvenu identifikaciju u tablici. Jedinstvena identifikacija je potrebna za svaki unos jer ne postoji drugaiji nain na koji bismo mogli identificirati jedan jedinstveni unos. U naoj bazi podataka smo definirali sve kolone koje se nazivaju ID kao primarne kljueve, radi jednostavnosti i bolje mogunosti manipuliranja podacima nad bazom podataka. Primarni klju se definira prilikom izrade tablice i to

navoenje kljune rijei PRIMARY KEY uz kolonu tablice za koju elimo da bude primarni klju, kao to je prikazano na u naredbi za kreiranje tablice Odjeli.

Definiranje primarnog kljua u tablici Odjeli: CREATE TABLE Odjeli ( ID NUMBER(10) PRIMARY KEY, Naziv NVARCHAR(30) NOT NULL, Br_zaposlenih NUMBER(5) NOT NULL, Napomena TEXT(1000), UNIQUE (Naziv) )

Moemo vidjeti da obje tablice imaju jedinstvenu identifikaciju implementiranu u koloni ID.

JEDINSTVENI KLJU u bazi podataka je klju kojim osiguravamo jedinstvenost podataka u tablici. On je po svojoj funkciji slian primarnom kljuu, ali je glavna razlika to to pomou njega ne definiramo relacije izmeu tablica. Jedinstveni klju se definira prilikom izrade tablice i to navoenjem kljune rijei UNIQUE uz kolonu tablice za koju elimo da bude jedinstveni klju, kao to je prikazano na primjeru. STRANI KLJU je kopija primarnog kljua stvorena u tablici koja je podreena nekoj drugoj tablici na drugoj strani relacije, odnosno na naem primjeru u tablici Zaposlenici, koja je podreena tablici Odjeli. Konkretno svi zaposlenici koji rade u financijskom odjelu e u koloni ID_ODJ (strani klju u tablici Zaposlenici od tablice Odjeli) imate vrijednost 3, jer je kolona ID primarni klju u tablici Odjeli, a financijski odjel ima jedinstvenu ID vrijednost 3. Strani klju se stvara prilikom kreiranja tablice i to navoenjem kljune rijei FOREIGN KEY uz kolonu za koju elimo da nam bude strani klju.

Kreiranje tablice Zaposlenici: CREATE TABLE Zaposlenici ( ID NUMBER (10) PRIMARY KEY, Ime NVARCHAR(50) NOT NULL, Prezime NVARCHAR(50) NOT NULL, Spol BINARY, Datum_rodjenja DATE NOT NULL, Ulica_br NVARCHAR(50) NOT NULL, Mjesto NVARCHAR(50) NOT NULL, Drzava NVARCHAR(50) NOT NULL, Post_br NUMBER(10) NOT NULL, Tel_kucni NVARCHAR(20), Tel_posao NVARCHAR(20), Tel_mob NVARCHAR(20), E-mail NVARCHAR(50), ID_Odj NUMBER(10), ID_Odj NUMBER(10) ); Ako malo bolje analiziramo kreirane kolone u tablici Zaposlenici vidimo da nismo jo uvijek definirali strane kljueve iako smo stvorili kolonu koja nam je strani klju na tablicu Odjeli. Strane kljueve moemo kao takve definirati prilikom izrade tablice kao to je ve navedeno, ali postoji bolji nain kojim definiramo strane kljueve, a ujedno i stvaramo konano i fiziku vezu izmeu ove dvije tablice. Dakle sintaksa naredbe ALTER TABLE za stvaranje stranog kljua, a ujedno i stvaranje fizike relacijske veze izmeu tablica je: ALTER TABLE imeTablice ADD ( CONSTRAINT imeKonstrainta FOREIGN KEY (imeStranogKljua) REFERENCES imeTablice(imePrimarnogKljua));

U ovoj naredbi do sada se nismo upoznali sa izrazima CONSTRAINT i REFERENCES. Dakle kljuna rije CONSTRAINT zapravo oznauje naziv relacijske veze izmeu dvije tablice. Kljunom rijei FOREIGN KEY defniramo koja e kolona biti strani klju u tablici, i na poslijetku kljunom rijei REFERENCES definiramo na koju tablicu i na koju kolonu e se spajati tablica nad kojom radimo naredbu ALTER TABLE. Tako za nae relacijsko spajanje tablica Odjeli i Zaposlenici bismo morali nakon to smo kreirali ove tablice (a jesmo), napraviti sljedeu naredbu: ALTER TABLE Zaposlenici ADD ( CONSTRAINT Odj_zap FOREIGN KEY (ID_ODJ) REFERENCES Odjeli(ID)); I konano nakon izvrenja ove naredbe smo i fiziki spojili ove dvije tablice.

MANIPULIRANJE PODACIMA IZ BAZE PODATAKA

Da bismo u potpunosti iskoristili mogunosti relacijske baze podataka koju smo objasnili i napravili u prethodnim poglavljima potrebno je da komuniciramo sa bazom podataka. Recimo da direktor neke tvrtke da zahtjev zaposleniku u odjelu prodaje da mu prikae prodajne rezultate nekog artikla u prvih pet mjeseci prole godine, ili da eli od financijskog odjela da mu prikae odreene financijske rezultate koji su ostvareni u proloj godini, u takvim sluajevima je potrebno komunicirati sa bazom podataka, odnosno informacijki sustav kojeg projektiramo mora moi dati takve i sline informacije. Takve mogunosti nam daje SQL sa svojim naredbama koje nisu objanjene u prethodnim poglavljima, a najpoznatija naredba je SELECT, pa emo stoga i krenuti u ovo poglavlje od navedene naredbe.

NAREDBA SELECT Osnovna naredba SQL-a, slui nam za manupiliranje podacima, bilo da je rije o cijelim tablicama, dijelovima tablica ili samo ponekom podatku u tablici. Takoer ova naredba moe prikazivati i podatke iz vie tablica odjednom, to joj daje najvaniju i najbolju funkcionalnost.

Sintaksa SELECT naredbe: SELECT imeKolone1, imeKolone2,.... FROM imeTablice WHERE uvjet; Primjer: Recimo da u tablici zaposlenici imamo izmeu ostalog zaposlenike ije je ime Ivana Gavran, Ivana Luter i Ivana Pregiban. Ako bismo eljelji prikazati ime i prezime svih zaposlenika ije je ime Ivana, morali bismo izvesti sljedeu naredbu: SELECT Ime, Prezime FROM Zaposlenici WHERE Ime='Ivana'; Kao rezultat ove naredbe dobivamo sljedee podatke:
Ime Ivana Ivana Ivana Prezime Gavran Luter Pregiban

ELIMINIRANJE DUPLIKATA IZ TABLICE Suprotno prethodnom primjeru mogli bismo imati potrebu da prikaemo sve brojeve telefona od zaposlenika koji se zovu Ivana, ali tako da ne prikazujemo duplicirane podatke, ve samo jednom da se prikae pojedini broj telefona. Za takve potrebe, odnosno za elimiranje duplikata koristimo kljunu rije DISTINCT, i to na sljedei nain: SELECT DISTINCT Tel_posao, Ime, Prezime FROM Zaposlenici WHERE Ime='Ivana' Kao rezultat ove operacije dobili bismo jednaku tablicu kao i u primjeru 5.1. sa dodatnom kolonom Tel_posao, ali ako bi se sluajno jedan broj telefona ponovio, kljuna rije DISTINCT bi eliminirala jedan rezultat.

IZRAZI UVJETI I OPERATORI Prilikom kreiranja SELECT naredbe esto nam je potreban vii nivo pretraivanja, mogli bismo rei finije sortiranje podataka, i u tom sluaju su na izrazi, uvjeti i operatori od velike korisiti, jer nam omoguavaju da to i uinimo. IZRAZ kao rezultat daje vrijednost. Izrazi su veoma raireni i pokrivaju razliite tipove podataka, kao to su stringovi, numeriki i logiki podaci. U sljedeem primjeru Ime i Prezime su izrazi koji za razultat daju vrijednost iz kolone Ime i Prezime, iz tablice Zaposlenici. SELECT Ime, Prezime FROM Zaposlenici WHERE Ime='Ivana'

UVJETI kada god naiemo na odreeni objekt ili grupu objekata u naoj bazi podataka, bit e nam potreban jedan ili vie uvjeta. Uvjeti se navode u WHERE kljunoj rijei. U prethodnom primjeru uvjet je: WHERE Ime='Ivana' Uvjeti nam omoguuju da formiramo upite selekcije. U svojem najopenitijem obliku, uvjeti obuhvaaju kolonu, konstantu i operator usporedbe. Dakle u ovom primjeru kolona je Ime, konstanta je Ivana, a operator je =.

WHERE kljuna rije SELECT, FROM i WHERE su tri najee koritene kljune rijei u SQL-u. WHERE ini da nai upiti budu selektivniji. Ukoliko ne upotrijebimo WHERE kljunu rije, jedino to moemo raditi sa naim upitom je da prikaemo sve podatke iz odreene tablice. Potrebno je naglasiti da unutar ove kljune rijei moemo dodatni nivo grupiranja uvesti navoenjem sljedeih kljunih rijei: STARTING WITH, ORDER BY, GROUP BY, HAVING. Ove kljune rijei se koriste za grupiranje podataka iz tablica i naemo ih dodatno objanjavati.

OPERATORI su elementi koje koristimo u izrazima za izraavanje uvjeta pod kojima se pretrauju podaci. Vrste operatora: ARITMETIKI: USPOREDBNI: +, -, /, *, % =, > ili >=, LIKE, < ili <=, _, || <> ili !=

ZA KARAKTERE (STRINGOVE):

LOGIKI OPERATORI: SKUPOVNI OPERATORI:

AND, NOT, OR UNION i UNION ALL, MINUS, IN i BETWEEN INTERSECT,

Na kraju ovog poglavlja moemo zakljuiti da nam izrazi, uvjeti i operatori slue za im selektivnije pretraivanje podataka. No, sada elimo prijei na vii nivo manipuliranja podacima, odnosno elimo na neki nain oblikavati dobivene podatke. Za to nam slue razne ugradbene funkcije u SQL-u koje emo onda obraditi u sljedeem poglavlju.

FUNKCIJE: OBLIKOVANJE DOBIVENIH PODATAKA Funkcije nam u SQL-u omoguavaju majstorije, kao to su odreivanje sume vrijednosti kolone ili konvertiranje svih karaktera nekog stringa u velika slova. Pa tako postoje sljedee funkcije: Agregatne funkcije Funkcije za vrijeme i datum Aritmetike funkcije Funkcije za rad sa karakterima Funkcije za konverziju Mijeovite funkciije

AGREGATNE FUNKCIJE ove funkcije jo se nazivaju i funkcijama grupe. Kao rezultat daju vrijednost baziranu na vrijednostima iz kolone. U tu grupu funkcija spadaju: COUNT, SUM, AVG, MAX, MIN, VARIANCE, STDDEV. Na sljedeem primjeru emo pokazati kako zbrojiti sve zaposlenike u tablici Odjeli u naoj bazi podataka: SELECT SUM(Br_zaposlenih) Ukupno_zaposlenih FROM Odjeli

FUNKCIJE ZA VRIJEME I DATUM s obzirom da ivimo u vremenu kojim upravljaju vrijeme i datum sve vie implementacija SQL-a ukljuuje funkcije za vrijeme i datum. Pa stoga u SQL-u postoje sljedee funkcije: ADD_MONTHS, LAST_DAY, MONTHS_BETWWEN, NEW_TIME, NEST_DATE, SYS_DATE.

ARITMETIKE FUNKCIJE dananja upotreba podataka koje dobijemo iz baze podataka ukljuuje i upotrebu matematike, pa stoga mnoge implementacije SQL-a ukljuuju aritmetike funkcije, a to su: ABS, CEIL i FLOOR,COS, COSH, SIN, SINH, TAN i TANH, EXP, LN i LOG, MOD, POWER,SIGN, SQRT. Ove funkcije rade matematike operacije nad brojanim podacima u bazi podataka. FUNKCIJE ZA RAD SA KARAKTERIMA ove funkcije rade razne operacije nad karakterima, a to su: CHR, CONCAT, INITCAP, LOWER i UPPER, LPAD i RPAD, LTRIM i RTRIM, REPLACE, SUBSTR, TRANSLATE, INSTR, LENGTH. FUNKCIJE ZA KONVERZIJU ove nam funkcije omoguavaju da na jednostavan nain konvertiramo jedan tip podataka u drugi, a to su: TO_CHAR, TO_NUMBER.

Sada kada smo odradili jedan vii nivo manipuliranja podacima u tablicama, javlja se potreba da spajamo tablice i prikazujemo rezultate spajanja. Na primjer, kada bi direktor tvrtke traio da se izlistaju svi zaposlenici u odjelu prodaje, informacijski sustav mora biti u mogunosti dati odgovor na to pitanje. To bismo mogli izvesti samo na jedan nain da spojimo tablice Odjeli i Zaposlenici, te prikaemo odjel prodaje i zaposlenike koji u njemu rade.

SPAJANJE TABLICA Jedna od najveih mogunosti SQL-a je mogunost prikupljanja i manipuliranja podacima iz vie tablica istovremeno. Bez ove mogunosti bili bismo primorani sve podatke za jednu aplikaciju sauvati u jednoj tablici. Bez korisnikih tablica morali bismo sauvati iste podatke u vie tablica. JOIN iskaz SQL-a nam omoguava da kreiramo manje, specifine tablice, koje je lake odravati nego velike tablice. Jedini problem se namee kako spojiti dvije tablice i prikazati odreene podatke iz svake tablice. Taj problem rijeava upotreba ALIASA, koji su zapravo pokazivai na tablice, odnosno pokazuju koje kolone iz kojih tablica treba prikazati. Konkretno na naem primjeru kada bismo morali izlistati imena i prezimena svih zaposlenika iz odjela prodaje koji se zovu Marko napravili bismo sljedee: SELECT z.Ime, z.Prezime, o.Naziv FROM WHERE AND Zaposlenici z, Odjeli o (z.Ime='Marko' AND o.Naziv='Odjel_prodaje') o.ID=z.ID_ODJ;

Ako pomno promotrimo ovu SELECT naredbu vidimo da se razlikuje od do sada navedenih; jer pretraujemo dvije tablice te definiramo alias za obje tablice. Tako moemo selektirati velik broj tablica i vriti sjajna pretraivanja unutra baze podataka, to nam je i bio cilj, jer iz dobro definiranog ER-dijagrama i velike mogunosti pretraivanja nad stvorenom bazom podataka, imamo sve preduvjete da stvorimo dobar informacijski sustav. SQL nudi i mogunost jo jednog vieg nivoa pretraivanja podataka, a to je ugljeeni upit, gdje se onda kao dio uvjeta pojavljuje SELECT naredba umjesto nekog objekta, zapravo mogli bismo govoriti da u uvjetu imamo novu grupu objekata. Takoer moemo imati vie uvjeta i u svakom od njih drugu SELECT naredbu. Do sada smo prikazali kako manipulirati podacima, te se onda te manipulacije spremaju ili ne spremaju na disku. No, to ukoliko imamo potrebu estog manipuliranja istih podataka, a istovremeno ne elimo da se to oituje na naem disku. SQL i za to ima rjeenje, a to je upotreba pogleda (VIEW) i indeksa (INDEX).

KREIRANJE POGLEDA I INDEKSA Pogled (VIEW) se esto odnosi na virtualnu tabelu, koji je zapravo virtualni SELECT, odnosno ako vrimo neki veliki upit nad bazom podataka, i koristit emo ga ponovno u radu, preporuljivo je kreiranje pogleda, jer je to onda virtualna tabela koja sadri rezultat pretraivanja upita, i nije potrebno isti upit raditi ponovno, a time skraujemo sloene upite. Sintaksa za izradu upita je: CREATE OR REPLACE VIEW imePogleda [(imeKol1, imeKol2,...)] AS SELECT imeTablice imeKolone FROM imeKolone Pogledi ne zauzimaju fiziki prostor u bazi podataka kao to to ine tabele. Isto tako, nakon kreiranog pogleda, ako se promijene podaci u tabeli, ono to emo dobiti kada ponovno izvrimo upit nad pogledom se takoer mijenja. Na sljedeem primjeru moemo vidjeti upotrebu pogleda: CREATE OR REPLACE VIEW Marko_u_odjelu_prodaje AS SELECT FROM WHERE AND z.Ime, z.Prezime, o.Naziv Zaposlenici z, Odjeli o (z.Ime='Marko' AND o.Naziv='Odjel_prodaje') o.ID=z.ID_ODJ

Indeks (INDEX) je drugi nain kojim se podaci predstavljaju drugaije, nego to su zapisani na disku. Dodavanjem indeksa bazi podataka omoujemo SQL-u da koristi direktnu metodu pristupa (Direct Access Method). Sintaksa za kreiranje indeksa je: CREATE INDEX imeIndeksa ON imeTablice (imeKolone1, imeKolone1,....);

You might also like