14
SADRŽAJ: 1. UVOD............................................................... ......................................................2. Pravila pisanja kôda............................................................... .................................3. Osnovni primjeri kôda............................................................... .............................4. Kreiranje tabela............................................................. ..........................................5. Tabele baze podataka »Mediasky«......................................................... ................6. Povezivanje tabela – dijagram........................................................... .....................7. Upiti.............................................................. ................................................................ ..9 PANEVROPSKI UNIVERZITET APEIRON FAKULTET POSLOVNE INFORMATIKE Vanredne studije Smer Nastavnička informatikaPredmet BAZE PODATAKA „Mediasky ” (seminarski rad) Predmetni nastavnik Prof. dr Zoran Ž. Avramović, dipl.inž.elek. Student Semir Bojić, Index br. 79-08/VNI

BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

Embed Size (px)

Citation preview

Page 1: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

SADRŽAJ:

1. UVOD.....................................................................................................................str....... 3

2. Pravila pisanja kôda................................................................................................str....... 3

3. Osnovni primjeri kôda............................................................................................str....... 3

4. Kreiranje tabela.......................................................................................................str.......5

5. Tabele baze podataka »Mediasky«.........................................................................str....... 6

6. Povezivanje tabela – dijagram................................................................................str........8

7. Upiti........................................................................................................................str........9

PANEVROPSKI UNIVERZITET APEIRONFAKULTET POSLOVNE INFORMATIKE

Vanredne studijeSmer „Nastavnička informatika”

Predmet

BAZE PODATAKA

„Mediasky ”

(seminarski rad)

Predmetni nastavnikProf. dr Zoran Ž. Avramović, dipl.inž.elek.

Student

Semir Bojić,Index br. 79-08/VNI

Banja Luka, Novembar 2010.

Page 2: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

U ovom seminarskom radu prikazane su osnovne funkcije strukturiranog upitnog jezika SQL,

pravila pisanja koda, osnovne naredbe u kodu, vrste podataka i njihov opseg a sve je praktično

primijenjeno pri kreiranju baze podataka „Mediasky“ i dvadeset SQL upita.

2. Pravila pisanja kôda

SQL ne pravi razliku između malih i velikih slova (tj. nije casesensitive) što znači da su

slijedeće dvije naredbe iz primjera jednake:

primjer 1: select prezime from osoba where ime = ‘John’

primjer 2: SELECT prezime FROM osoba WHERE ime = ‘John’

Radi lakšeg prepoznavanja koda preporučljivo je da se naredbe pišu velikim slovima, kao u

primjeru 2., a sve ostalo malim slovima.

U nekim bazama niz znakova (string) mora biti napisan kao što je u bazi. Znači, u gornjim

naredbama nije isto ako piše John ili JOHN ali isto to ne mora vrijediti i za Microsoft SQL.

Komentari su tekst koji se piše kao podsjetnik i oni nemaju nikakvu vezu sa kodom osim što

daju određenu informaciju programeru koji čita kod, tj. oni se ne izvršavaju.

Postoje dvije vrste komentara:

-- ovo je komentar tj. oznaka za komentar je -- a iza slijedi tekst komentara

/* komentar */ ovo je takođe komentar koji se proteže kroz više redova

Imena objekata u SQL (imena tabela, kolona, pogleda) prave se tako da prvi znak mora biti

slovo (a-z, A-Z) ili podvučeno (underline) _, te u nekim slučajevima, @ i #.

Razmak i ostali specijalni znakovi se mogu koristiti ali nije preporučljivo.

3. Osnovni primjeri kôda

Prilikom korištenja nekog DBMS-a (MircrosoftSQL), potrebno je izabrati bazu sa kojom

ćemo da radimo. Prvo ćemo pogledati spisak baza na serveru. Da bismo to uradili koristimo slijedeću

komandu (OBAVEZNO je “;” na kraju svake komande).

2

Page 3: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

Iskoristiću bazu BZB, koju sam kreirao da bih pokazao upotrebu naredbe DROP koja služi za

brisanje baze.

DROP DATABASE BZB;

Nakon ove naredbe baza je obrisana. Važno je napomenuti da neće biti nikakvog upozorenja

tj. pitanja tipa "Da li ste sigurni?", tako da sa korišćenjem naredbe DROP u bilo kakvom smislu treba

biti veoma oprezan. Jednom obrisani podaci više se ne mogu vratiti.

Kreiranje baze

Kreiranje baze je veoma jednostavno (kao i njeno brisanje). Baza se kreira uz pomoć ključne

riječi CREATE:

CREATE DATABASE ime_baze;

Za kreiranje tabela koristi se slijedeći kod:

CREATE TABLE <ime tabele> (

-> <ime kolone 1> <tip kolone 1> <dodatak kolone 1>,

-> <ime kolone 2> < tip kolone 2> <dodatak kolone 2>,

->);

Unošenje sadržaja u neku tabelu se vrši naredbom INSERT, na dva načina:

INSERT INTO <ime tabele> SET

->imeKolone1=vrijednost1

->imeKolone2=vrijednost2

->;

ili

INSERT INTO <ime tabele>

->(imeKolone1, imeKolone2, ...)

->VALUES (vrijednost1, vriednost2, ...);

3

Page 4: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

Pregled sadržaja u tabelama se vrši komandom SELECT i to je jedna od najkomplikovanijih

naredbi u SQL-u, zato što je ona glavna i od nje ne zavisi fleksibilnost odgovora. Opšti oblik ove

naredbe izgleda (služi za ispis kompletne tabele):

SELECT * FROM <ime tabele>

Sve promjene u bazi se obavljaju pomoću ključne reči UPDATE. Ova naredba sadrži

elemente naredbe INSERT (za podešavanje vrijednosti kolone) i elemente komande SELECT (za

izbor sadržaja koji ćemo modifikovati). Uopšteno oblik komande UPDATE izgleda ovako:

UPDATE <imeTabele> SET

-><imeKolone>=<novaVrijednost>, ...

->WHERE <uslov>

Brisanje sadržaja u SQL-u je jednostavno i opasno, pa treba biti oprezan kada se koristi ova

komanda. Komanda za brisanje sadržaja je slijedeća:

DELETE FROM <imeTabele> WHERE <uslov>;

Komanda koja briše čitav sadržaj tabele:

DELETE FROM <imeTabele>;

4. Kreiranje tabela

Poslije kreiranja baze podataka, prvo što treba da se uradi je da se odrede entiteti (koji su u

relacionim bazama podataka predstavljeni kao tabele), atributi (kolone), tipovi i domeni podataka.

Baza podataka „Mediasky“ ima 6 tabela. Prije samog kreiranja tabela potrebno je dobro

osmisliti koje atribute će tabela imati, na koji način će biti složene kolone te precizno i «sa pogledom

u budućnost» odrediti tipove i domene podataka

4

Page 5: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

Vrijednosti domena predstavljaju skup svih istovrsnih podataka u toj tabeli.

SQL naredba koja kreira tabelu Korisnik:

CREATE TABLE korisnik( mbrKorisnik CHAR (13) NOT NULL, imeKorisnik CHAR(10) NOT NULL, prezKorisnik CHAR(15) NOT NULL, pbrStan INT REFERENCES mjesto (pbr)NOT NULL, sifKorisnik INT NOT NULL);

5. Tabele baze podataka »Mediasky«

1.Tabela Mjesto

CREATE TABLE mjesto ( pbr INT PRIMARY KEY NOT NULL, nazMjesto CHAR(10) NOT NULL);

2.Tabela Korisnik

CREATE TABLE korisnik( mbrKorisnik CHAR(13) NOT NULL, imeKorisnik CHAR(10) NOT NULL, prezKorisnik CHAR(15) NOT NULL, pbrStan INT REFERENCES mjesto (pbr)NOT NULL, sifKorisnik INT NOT NULL);

3. Tabela orgjed (organizaciona jedinica)

CREATE TABLE orgjed( sifOrgjed INT PRIMARY KEY NOT NULL

5

Page 6: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

, pbrMjesto INT REFERENCES mjesto (pbr) NOT NULL, sifNadOrgjed INT REFERENCES orgjed (sifOrgjed));

4. Tabela usluga

CREATE TABLE usluga( sifUsluga INT PRIMARY KEY NOT NULL, nazUsluge CHAR(50) NOT NULL, cijena INT NOT NULL);

5.Tabela zaposlenik

CREATE TABLE zaposlenik( mbrZaposlenik INT PRIMARY KEY NOT NULL, imeZaposlenik CHAR(10) NOT NULL, prezZaposlenik CHAR(15) NOT NULL, pbrStan INT REFERENCES mjesto (pbr) NOT NULL, sifOrgjed INT REFERENCES orgjed (sifOrgjed) NOT NULL);

6. Tabela racun

CREATE TABLE racun( sifRacun INT PRIMARY KEY NOT NULL, sifUsluga INT REFERENCES usluga (sifUsluga) NOT NULL

6

Page 7: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

, mbrKorisnik INT REFERENCES korisnik (mbrKorisnik) NOT NULL, mbrZaposlenik INT REFERENCES zaposlenik (mbrZaposlenik) NOT NULL, datIzdavanja DATETIME NOT NULL, vrTrajanja INT NOT NULL);

6. Povezivanje tabela - dijagram

7

Page 8: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

7. Upiti

1. SELECT * FROM korisnik

2. SELECT * FROM mjesto

3. SELECT * FROM orgjed

4. SELECT * FROM racun

5. SELECT * FROM usluga

8

Page 9: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

6. SELECT * FROM zaposlenik

7. SELECT imeKorisnik, prezKorisnik, nazMjesto FROM korisnik, mjesto WHERE korisnik.pbrStan=mjesto.pbr

8. SELECT imeKorisnik, prezKorisnik, datIzdavanja FROM korisnik, racun WHERE korisnik.mbrKorisnik=racun.mbrKorisnik AND datIzdavanja+vrTrajanja <= '11.05.2010'

9. SELECT imeKorisnik, prezKorisnik, nazUsluge FROM korisnik, racun, usluga WHERE racun.sifUsluga=usluga.sifUsluga AND racun.mbrKorisnik=korisnik.mbrKorisnik

9

Page 10: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

10. SELECT zaposlenik.prezZaposlenik, zaposlenik.imeZaposlenik, COUNT(racun.sifRacun) FROM racun, zaposlenik WHERE racun.mbrZaposlenik=zaposlenik.mbrZaposlenik GROUP BY zaposlenik.imeZaposlenik, zaposlenik.prezZaposlenik

11. SELECT racun.sifRacun FROM racun WHERE datIzdavanja BETWEEN '1.1.2010' AND '1.1.2011'

12. SELECT korisnik.imeKorisnik, korisnik.prezKorisnik, SUM(usluga.cijena) FROM korisnik, racun, usluga WHERE korisnik.mbrKorisnik=racun.mbrKorisnik AND racun.sifUsluga=usluga.sifUsluga GROUP BY korisnik.imeKorisnik, korisnik.prezKorisnik

13. SELECT zaposlenik.imeZaposlenik, zaposlenik.prezZaposlenik, SUM(usluga.cijena) FROM zaposlenik, racun, usluga WHERE zaposlenik.mbrZaposlenik=racun.mbrZaposlenik AND racun.sifUsluga=usluga.sifUsluga GROUP BY zaposlenik.imeZaposlenik, zaposlenik.prezZaposlenik

10

Page 11: BAZE PODATAKA SEMINARSKI RAD SEMIR BOJIC

14. SELECT imeKorisnik AS IME, prezKorisnik AS PREZIME FROM korisnik

15. SELECT AVG(usluga.cijena) FROM racun, usluga WHERE racun.sifUsluga=usluga.sifUsluga

16. SELECT MAX(cijena) AS MAXIMUM, MIN(cijena) AS MINIMUM FROM racun, usluga WHERE racun.sifUsluga=usluga.sifUsluga

17. SELECT racun.sifRacun, mjesto.nazMjesto FROM racun, zaposlenik, orgjed, mjesto WHERE racun.mbrZaposlenik=zaposlenik.mbrZaposlenik AND zaposlenik.sifOrgjed=orgjed.sifOrgjed AND orgjed.pbrMjesto=mjesto.pbr ORDER BY mjesto.nazMjesto DESC

18. SELECT korisnik.imeKorisnik, SUM(usluga.cijena) FROM korisnik, racun, usluga WHERE racun.mbrKorisnik=korisnik.mbrKorisnik AND racun.sifUsluga=usluga.sifUsluga AND korisnik.mbrKorisnik LIKE '03%' GROUP BY korisnik.imeKorisnik

11