You are on page 1of 20

Sadržaj

1.Uvod....................................................................................................................................................3
1.1 Istorija SQL-a................................................................................................................................3
1.2 Kratak pregled SQL-a....................................................................................................................3
2. SQL.....................................................................................................................................................4
2.1 Kreiranje baze podataka...............................................................................................................6
2.2 Pravila pisanja koda......................................................................................................................7
2.3 Tabele...........................................................................................................................................8
2.4 Kreiranje tabele...........................................................................................................................8
3. Tabele.................................................................................................................................................9
3.1 Atributi.......................................................................................................................................10
3.2 Uvezivanje tabela – dijagram.....................................................................................................11
4.NAREDBE SQL JEZIKA.................................................................................................................11
5.UPITI..................................................................................................................................................12
6.Spajanje.............................................................................................................................................14
7.Relacioni operatori............................................................................................................................16

2
1.Uvod

1.1 Istorija SQL-a

SQL - „Structured QueriyLanguage“ je struktuirani jezik za upite. Istorija SOL-a


počinje 1970. Goodine kada je razvijen u IBM-ovom istrazivačkom labaratoriju u San Joseu-
u,California. Bio je slaborazvijen do 80-ih godina.
1981. godine izlazi SQL/DS a zatim se pojavljuju sistemi baza podataka Oracle i Reational
Technology.
Do 1989. godine izlazi 70-ak različitih verzija SQL sistema, a 1989. Godine dolazi do
proširenjea standarda pa nastaje SQL-89 – uvođenje referencijskog integriteta.
1992. godine izlazi SQL-2 ili SQL-92 – proširenje standarda u pisanoj formi ( broj stranica )
više od 4 puta nego u ranijoj verziji.
1999. godine objavljen SQL-3 ili SQL-99 s novim mogućnostima.
Sam SQL opisuje šta želimo dobiti kao rezultat, a ne kako doći do toga i to ga svrstava u
proceduralne programske jezike za razliku od npr. C programskog jezika.
SQL je stvoren za rad sa relacijskim bazama podataka za koje dr. Codd 1970. godine iznosi
12 Coddovih pravila ( objavljenih u članku “A Relational of Data for Large Shared Data
Banks” ).

1.2 Kratak pregled SQL-a

SQL omogućava da pravimo i promjenimo strukturu baze podataka, dodamo prava


korisniku za pristup bazama podataka ili tablicama, da tražimo informacije od baze podataka i
da mjenjamo sadržaj baze podataka. Za to imamo dvije vrste funkcija:
- DDL ( Data Definition Language ) funkcija za definiciju podataka čiji je tipičan
primjer naredba CREATE TABLE imeTabele();
- DML ( Data Manipulation Table ) funkcija za upravljanje podacima gdje se kao
primjer može navesti osnovna SQL naredba SELECT*FROM imeTabele,
Pristup podacima odvija se prema modelu klijent/poslužitelj.
To je po Bernardu H. Boar autoru knjige “Implementing Client/server Computing”, definirano
kao:
“ Model rada u kojem je jedna aplikacija podjeljena između više procesa koji komuniciraju
(transparentno prema korisničkom kraju) da bi završili procesiranje kao jedan jedinstveni
zadatak. Klijent/poslužitelj model vezuje procese da bi se dobila slika jedinstvenog sistema.
Djeljivi resursi su pozicionirani klijenti koji imaju zahtjeve i mogu pristupiti ovlaštenim
servisima. Arhitektura je beskonačno rekurzivna; pa poslužitelji mogu postati klijenti i
zahtijevati usluge od drugih poslužitelja u mreži, itd.”.

3
2. SQL

2.1 Pokretanje SQL Servera 2005 i programa SQL Server 2005


Management Studio

U meniju Start, pređite u odeljak All Programs, izaberite opciju Microsoft SQL Server
2005, a zatim opciju SQL Server Management Studio (slika 1-1). Pojaviće se ekran prikazan
na slici 1-2 koji omogućava da uspostavite vezu s Microsoftovim SQL Serverom 2005. Ako se
tip i ime servera razlikuju od onih ponuđenih na ekranu, upišite odgovarajući tip i ime
servera, a zatim izaberite opciju Windows Authentication. Pritisnite zatim dugme Connect.

Slika 1-1. Pokretanje Microsoftovog SQL Servera 2005 i programa SQL Server Management
Studio

4
Pošto uspostavite vezu sa serverom koji ste zadali, pojaviće se ekran programa SQL
Server Management Studio (slika 1-3)

Slika 1-2. Uspostavljanje veze s Microsoftovim SQL Serverom 2005

Slika 1-3. Uspostavljena je veza sa serverom kojim upravlja Microsoftov SQL Server 2005

5
2.1 Kreiranje baze podataka

Kreiranje baze podataka vršimo na sledeći nacin:

Kliknemo desni klik misa na DATABASE. Iz prirucnog menija izaberemo opciju NEW
DATABASE.

Slika 2.

U prozoru koji nam se otvori u polje DATABASE NAME upisemo ime naše baze.

Slika 3.

6
Kada smo upisali ime nase baze kliknemo na options i u polju COLLATION odaberemo
jezik. U nasem slučaju odabiramo jezik Croatian_CI_AI.

Slika 4.
Kliknemo OK i formirali smo našu bazu podataka.

2.2 Pravila pisanja koda

SQL ne pravi razliku između malih i velikih slova, to jest sledeca dva primjera su jednaka:

Primjer 1. select prezime from radnik where ime='vanja'


Primjer 2. SELECT prezime FROM radnik WHERE ime='vanja'

U SQL pored kodova možemo pisati i komentare kao podsjetnike i oni nemaju nikakvu vezu sa
kodom, osim sto daju određenu informaciju programeru koji čia taj kod.
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 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.

2.3 Tabele

7
Tabele predstavljaju dvodimenzionalne matrice čiji redovi predstavljaju naziv i svrhu
objekata spremljenih u tabelu, a kolone svrhu objekata izraženih odgovarajučim tipom
podataka. Uz pomoć jedne n-torke opisali smo jedan objektat npr:

Slika.4

2.4 Kreiranje tabele

U bazi koju smo formirali imamo folder TABLES, kliknemo desnik klikom i otvori
nam se sledeći padajući meni:

Slika 5.

Izaberemo opciju NEW TABLE.

8
Slika 6.

U kolonu Column Name ispisujemo ime kolone, u Data Type vršimo odabir tipa
podatka, a u kolonu Allow Nulls nam oznacava koja kolona smije ostati prazna a koja ne.
Kada unesemo sve potrebne podatke snimimo tabelu.

3. Tabele

1. Radnik:

Slika 7.

2. Vozila:

Slika 8.

9
3. Mjesec:

Slika 9.
4. Potrošnja:

Slika 10.

U tabelama sam koristio sledeće tipove podataka pažljivo odabrane da se ne bih


nepotrebno rasipao sa memorijom:
 Smallint (-32768 - +32767) 2B
 Varchar
 Decimal

3.1 Atributi
Atributi tabele Radnik:

Radnik#, radni_staž - smallint – numerički tip podatka iz klase integer, a njega sam
odabrao zbog pretpostavke da u skorije vrijeme neće biti veći broj radnih mjesta od onoliko
koliko ovaj tip dozvoljava.
Ime, Prezime, obrazovanje - varchar(20) - varijabibilni alfanumerčki tip – sa
maksimalnom dužinom od 20 karaktera, jer mislim da neću naići na ime ili prezime veće od
20 znakova. Ovdje sam odabrao varchar iz razloga što želim da uštedim na memoriji, jer on
zauzima onoliko bajtova koliki je broj znakova za razliku od char koji zazuzima punu
vrijednost.
Plata – decimal (6,2) – prva cifra označava ukupan broj cifara, a druga broj
decimalnih mjesta iza decimale tačke.

10
3.2 Uvezivanje tabela – dijagram

Slika 11.

Ovdje su prikazane sve veze među tabelama i one su jedan prema više i ostvarene su
pomoću Primarnog ključa (Primary Key). „Primary Key“ ograničenje koje nam osigurava da
će nam vrijednosti u navedenoj koloni biti jedinstvene.

4.NAREDBE SQL JEZIKA

SQL DDL
(engl. Data Definition Language)
 CREATE - kreiranje objekata baze
 DROP - uklanjanje objekata baze
 ALTER - izmjena definicije objekata baze
SQL DCL
(engl. Data Control Language)
 GRANT - definiranje prava pristupa podacima
 REVOKE - uklanjanje definicije prava pristupa podacima

11
SQL DCL
(engl. Data Control Language)
 SELECT - nam vraca skup rezultata iz zapisa jedne ili vise
tabele
 UPDATE - koristi se za promjenu vrijednosti u postojecem redu
ili redovima
 INSERT - koristi se za unosenje podataka u tabelu, red po red;
vrijednosti koje se unose moraju biti istog tipa podataka kao
polja u koja ih unosimo i moraju odgovarati velicini kolone
 DELETE - koristi se za brisanje podataka

Naredbe koje se koriste uz SELECT:

• WHERE – definira redove koji se traze


• GROUP BY – koristi se za kombiniranje redova sa srodnim vrijednostima u elemente
sa manjim skupom redaka
• HAVING – definira koji se redovi (traze) uz GROUP BY
• ORDER BY – definira koji se stupci koriste za sortiranje rezultata

5.UPITI

Upiti su naredbe pomoću kojih manipulišemo podacima u bazi podataka.

Primjer 1.
Kreiranje tabele

CREATE TABLE Mjsec(


Mjesec# SMALLINT,
Mjesec VARCHAR(50),
);

Slika 12.

Primjer 2.
Brisanje tabele

DROP TABLE Mjesec

Primjer 3.
Izmjena postojećih atributa

12
ALTER TABLE radnik ALTER COLUMN ime CHAR(15);

Primjer 4.

select ime,prezime,radnik# sifra_radnika


from radnik
order by ime

Slika 13.

Na ovome upitu koristio sam aliase (radnik# sifra_radnika) koji nam služe da
određenu kolonu imenujemo prilikom izvršavanja naredbe select i naredbu order by koja služi
za sortiranje podataka po određenoj koloni.

Primjer 5.

select*
from radnik
where ime='drago'

Slika 14.

Ovdje sam izvršio restrikciju, tj. izdvajanje samo onih redova koji zadovoljavaju kriterijum
koji sam zadao. Select * nam služi da ispišemo sve kolone iz zadane tabele.

Primjer 6.
Promjena vrijednosti u postojecem redu ili redovima

13
update radnik
set plata=plata -200
where radnik#=6

Primjer 7.

Brišemo podataka iz tabele radnik

DELETE FROM radnik

Primjer 8.

Ovde smo dodali novog radnika u tabelu radnik

insert into radnik


(radnik#,ime,prezime,obrazovanje,plata,radni_staž);
<24,'Marko','Markoviæ','Elektrièar',600,6>

6.Spajanje
Spajanja služe da bismo kombinovali podatke iz više tabela. Postoje 4 vrste spajanja:

1. Inner Join (unutrašnje spajanje)


2. Outer Join (vanjsko spajanje: lijevo i desno)
3. Full Join (potpuno spajanje)
4. Cross Join (unakrsno spajanje)

Primjer 7.

select
ime,prezime,naziv_vozila,registarski_broj,predjeni_kilometri,ut
roseno_goriva,mjesec
from radnik
inner join vozila
on vozila.radnik#=radnik.radnik#
inner join potrosnja
on potrosnja.vozilo#=vozila.vozilo#
inner join mjesec
on mjesec.mjesec#=potrosnja.mjesec#

14
Slika 15.

Ovdje sam izvršio spajanje više tabela i podataka i time dobio rezultate u kojima sam
prikazao željene detalje o svakom zaposlenom.

Primjer 8.

select radnik.ime + ' ' + radnik.prezime


as [ime i prezime]
from radnik
group by radnik.ime, radnik.prezime

Slika 16.

Umjesto da izvršim projekciju imena i prezima pojedinačno, ja sam ih spojio u jednu kolonu
ime i prezime.

15
7.Relacioni operatori
Postoje sljedeći relacioni operatori:

 = jednako
 < manje
 > veće
 >< različito
 <= manje jednako
 >= veće jednako
Ostali operatori: IN, LIKE, BETWEEN, ...

Primjer.9
select plata 'Plata u KM',ime+' '+prezime Zaposleni
from radnik
where plata >600
order by 'Plata u KM' asc

Slika 17.

Ovdje sam koristio operator „>“ da bih izdvojio sve zaposlene sa platom većom od 600 KM i
izvršio sortiranje rezultata po koloni „Plata u KM“ u rastućem redoslijedu.

Primjer. 10
select naziv_vozila,registarski_broj,ime,prezime
from radnik
inner join vozila
on vozila.radnik#=radnik.radnik#
where vozilo#=4 or vozilo#=11

16
Slika 18.

Ovdje sam koristio „or“ da bih izdvojio zaposlene koji voze vozila cija je sifra 4 i 11

Primjer. 11

select naziv_vozila,registarski_broj,ime,prezime
from radnik
inner join vozila
on vozila.radnik#=radnik.radnik#
where vozilo# between 4 and 11

Slika 19.

Ovdje sam koristio naredbu “between” da bih izdvojio sve zaposlene koji voze vozila cija je
sifra izmedju 4 I 11.

8.Standardne (agregatne) funkcije


 SUM – zbir vrijednosti u koloni
 AVG – prosječna vrijednost u koloni
 MIN – minimalna vrijednost u koloni
 MAX – maksimalna vrijednost u koloni
 COUNT – prebrojavanje redova koji ispunjavaju određeni uslov

17
Primjer.12
SELECT min(plata) 'Najmanja Plata',
max(plata) 'Najveæa Plata',
avg(plata) 'Prosjeèna Plata'
FROM radnik

Slika 20.
Ovdje sam koristio standardne funkcije „min“,“max“ i „avg“ da bih dobio najmanju platu,
najvecu plati i prosjecnu platu svih radnika

Primjer. 13
Načiniti upit koji će ispisati imena radnika cije je obrazovanje električar
select ime,prezime
from radnik
where obrazovanje='elektrièar'

Slika 21.

18
Primjer 14.

Naciniti upit koji će nam ispisati nazive vozila I utrošeno gorivo za mjesec januar.

select naziv_vozila,utroseno_goriva
from potrosnja
inner join vozila
on potrosnja.vozilo#=vozila.vozilo#
where mjesec#='1'

Slika 22.

Primjer 15.
Načiniti upit koji će nam ispissati imena radnika čije prezime počinje sa Š.

select prezime,ime
from radnik
where prezime like 'š%'

Slika 23.

19
Primjer 16.

Načiniti upit koji će nam ispisati ime, prezime, naziv vozila, registarski broj, predjeni kilometri
utrošeno gorivo, mjesec za vozilo broj 5.
select (utroseno_goriva/predjeni_kilometri*100)prosjek,
ime,prezime,naziv_vozila,registarski_broj,predjeni_kilometri,utroseno_goriv
a,mjesec
from radnik
inner join vozila
on vozila.radnik#=radnik.radnik#
inner join potrosnja
on potrosnja.vozilo#=vozila.vozilo#
inner join mjesec
on mjesec.mjesec#=potrosnja.mjesec#
where vozila.vozilo#=5

Slika 24.

20

You might also like