You are on page 1of 67

BAZE PODATAKA

SQL STRUCTURED QUERY


LANGUAGE

Nastavnik: doc.dr.sc. Ivica Luki


TO JE SQL

SQL Structured Query Language

U prijevodu: Strukturni jezik za pretraivanje


(upite)
KRATKA POVIJEST SQL-A

1974. lanak D. D. Chamberlaina i R. F. Boycea u


kojem opisuju jezik SEQUEL
1975. Boyce, Chamberlan i M. Hammer
predstavljaju koncept jezika SQUARE koji je
koristio matematike izraze, za razliku od engleskih
termina koje je koristio SEQUEL
Ubrzo SQUARE mijenja ime u SEQUEL2 i taj jezik
je koriten u razvoju prvog prototipa relacijskog
sustava za upravljanje relacijskim bazama podataka
SYSTEM R razvijenog u laboratorijima IBM-a.
Kasnije je naziv promijenjen u SQL.
OSOBINE SQL-A
English-like jezik. Upotrebljava rijei kao to su npr.: select,
insert, delete i sl. kao dio naredbe
Ne-proceduralni jezik
U jednom trenutku ee obrauje skup slogova nego jedan
slog (na razini tablice)
Mogu ga koristiti korisnici razliitog profila: DB
administratori, aplikativni programeri, neprofesionalni
korisnici i sl.
Osigurava naredbe za razliite zadae ukljuujui:
Upite nad podacima
Dodavanje, mijenjanje i brisanje redaka u tablicama
Kreiranje, mijenjanje i brisanje objekata sheme
Kontrolu pristupa bazi podataka i objektima sheme
Osigurava konzistentnost baze podataka
OBJEKTI SQL-A
Baza podataka (Database)
Tablica (Table)
Pogled ili virtualna tablica (View)
Pravilo integriteta (Constraint)
Indeks (Index)
Procedura (Stored Procedure)
Okida (Trigger)
Sinonim (Synonym)

Imena objekata u SQL-u sastoje se od slova, donje crte '_' i


znamenki, pod uvjetom da prvi znak mora biti slovo.
Ispravna imena su: baze3 stud123 prediplomski_studij
Neispravna imena su : 3baze3 stud123# prediplomski-studij
SINTAKSA SQL-A
SQL ne razlikuje velika i mala slova (eng. case insensitive). Slijedi
da moemo pisati:
select * From STUDENT where GODINA= 'prva'

SELECT * FROM student WHERE godina= 'prva'

Uobiajeno je da se kljune rijei piu velikim slovima, a ostali


objekti kao to su imena tablica i atributa malim slovima
Treba napomenuti da se u vrijednostima (nizovima znakova) koje
unosimo razlikuju velika i mala slova. Tako da nije isto kad
napiemo:
SELECT * FROM student WHERE godina= 'prva'

SELECT * FROM student WHERE godina= 'PRVA'


SINTAKSA SQL-A
SQL je jezik slobdonog formata tako da moemo
dodavati razmake i tabulatore isto kao u C-u. A
za kraj naredbe koristi se ; (toka zarez). Tako
moemo pisati:

SELECT * FROM student WHERE godina= 'prva;

SELECT *
FROM student
WHERE
godina= 'prva;
SINTAKSA SQL-A
U SQL-u postoji dva tipa komentara
Prvi tip su linijski komentari:

-- dvije crte su oznaka za poetak komentara


SELECT * FROM studenti -- komentar1
WHERE godina= 1 -- komentar2

Drugi tip su vielinijski komentari:

/* Komentar u kojem se moe nalaziti


vie redaka teksta */
TIPOVI PODATAKA U SQL-U
INTEGER koristi se za pohranu cijelih brojeva
koristei 4 bajta memorije.
Doputeni raspon brojeva odreen je intervalom
[ - 232-1, 232-1- 1 ]

Mogu se predstaviti brojevi u rasponu:


[-2147483648, 2147483647]

Dogovorno je odabrano da se broj -2147483648


koristi za pohranu NULLvrijednosti.
TIPOVI PODATAKA U SQL-U
SMALLINT koristi se za pohranu cijelih brojeva
koristei 2 bajta memorije.
Doputeni raspon brojeva odreen je intervalom
[-32767, 32767]

Primjeri su:

124 -233 333 -12386

TINYINT koristi se za pohranu cijelih brojeva


koristei 1 bajt memorije.
TIPOVI PODATAKA U SQL-U
CHAR(n) - (fiksna duina zapisa) koristi se za pohranu
niza znakova unutar jednostrukih navodnika, Svaki
znak predstavljen je jednim bajtom, gdje je broj n
maksimalna duljina niza znakova koja iznosi 8000.
NCHAR(n) isto kao i CHAR tip podatka, ali omoguava
koritenje Unicode znakova koji sadre znakove iz nacionalnih
kodnih stranica (character set).
VARCHAR(n) - (varijabilna duina zapisa) gdje je broj n
maksimalna duljina niza znakova koja iznosi 8000.
TEXT - varijabilna duljina zapisa, max. 231-1 znakova

Isto tako postoje unicode verzije NVARCHAR(n) i


NTEXT.
Primjer niza je:
'Ivo' 'Pero' NULL
TIPOVI PODATAKA U SQL-U
DECIMAL prikaz decimalnih brojeva
Raspon brojeva je [- 1038 +1 , 1038 1]
p - ukupan broj znamenki (od 1 do 38)
s - broj decimalnih znamenki (o <= s <= p)
DECIMAL (13, 5) predstavlja decimalni broj sa ukupno
13 znamenki, od ega se najvie 5 znamenki smije
nalaziti iza decimalne toke
Primjeri su:

124.34 -233.45 333.56 NULL


TIPOVI PODATAKA U SQL-U
DATETIME
od 01.01.1753 do 31.12.9999, zaokrueno na 0.003
sekunde
SMALLDATETIME
od 01.01.1900 do 06.06.2079, zaokrueno na minutu
TIMESTAMP
specijalna namjena, najee u milisekundama
TIPOVI PODATAKA U SQL-U
BINARY(n)
fiksna duljina binarnog zapisa, max. 4000 bytes

VARBINARY(n)
varijabilna duljina binarnog zapisa, max. 4000 bytes

IMAGE
max. 231-1 (2,147,483,647) bytes
TIPOVI PODATAKA U SQL-U
NULL vrijednost se interno pohranjuje na razliite
naine za razliite tipove podataka (nije 0, nije 0.0, nije
prazan niz znakova)

Kad je tip podatka SMALLINT koristi se -32768 za


prikaz NULL vrijednosti

Kad je tip podatka INTEGER koristi se -2147483648 za


prikaz NULL vrijednost
SQL IZRAZI - RAZVRSTAVANJE

DML izrazi (Data Manipulation Language Statements) tj.


izrazi za upravljanje podacima
DDL izrazi (Data Definition Language Statements) tj.
izrazi za definiranje podataka
Izrazi za kontrolu transakcija (Transaction Control
Statements)
Izrazi za kontrolu sesije (Session Control Statements)

Izrazi za kontrolu sustava (System Control Statements)

Ugraeni SQL izrazi (Embedded SQL Statements)


DML IZRAZI
Koriste se za izvoenje slijedeih akcija nad podacima:

Upisivanje redaka u tablicu ili indeks (INSERT)


Promjena vrijednosti u stupcima tablica ili pregleda
(UPDATE)
Pretraivanje redaka iz tablica ili pregleda (SELECT)
Brisanje redaka iz tablica ili indeksa (DELETE)
Omoguavanje pregleda izvoenja SQL izraza
(EXPLAIN PLAN)
Zakljuavanje tablica i pregleda (LOCK TABLE)
DDL IZRAZI
Kreiraju, mijenjaju i briu objekte sheme:
Kreiranje, mijenjanje i brisanje objekata sheme i
drugih struktura baze podataka (same baze
podataka, korisnika nad bazom, tablica)
CREATE, ALTER i DROP
Mijenjanje imena objekata sheme (RENAME)
Praenje statistike o objektima sheme,
validiranje strukture objekata (ANALYSE)
Davanje i uzimanje privilegija i rola nad bazom
(GRANT i REVOKE)
IZRAZI ZA KONTROLU TRANSAKCIJE
Upravljaju promjenama uzrokovanim DML
izrazima:
Trajno potvrivanje transakcije (COMMIT)
Vraanje baze u stanje prije izvoenja
transakcije (ROLLBACK)
Definiranje toke od koje se moe povratiti
stanje baze (SAVEPOINT)
Definiranje svojstava transakcije (SET
TRANSACTION)
IZRAZI ZA KONTROLU SESIJA

Omoguuju upravljanje svojstvima sesije odreenog


korisnika:
Mijenjanje vaee sesije izvoenjem odreene
naredbe (ALTER SESSION)
Aktiviranje i deaktiviranje rola za vaeu sesiju
(SET ROLE)
UGRAENI SQL IZRAZI
Spajaju DDL, DML i izraze za kontrolu transakcija u
proceduralni program. Oni koriste ORACLE pre-prevoditelje
(precompilers):
Rad s kursorima (drai ili imena podruja u memoriji u
kojima se dre rastavljeni izrazi i druge informacije za
procesiranje istih) DECLARE CURSOR, OPEN, CLOSE
Deklariranje imena baze podataka i spajanje na ORACLE -
DECLARE DATABASE, CONNECT
Dodjeljivanje imena varijablama, specificiranje dogaaja
vezanih za greke DECLARE STATEMENT, DESCRIBE,
WHENEVER
Rastavljanje i izvoenje SQL izraza, pretraivanje podataka
iz baze PREPARE, EXECUTE, EXECUTE IMMEDIATE,
FETCH
NAREDBE U SQL-U
CREATE DATABASE koristi se za stvaranje nove baze
podataka. Vlasnik baze postaje korisniki raun koji je
napravio bazu. Naredba je oblika:
CREATE DATABASE imeBaze

CREATE DATABASE student

Za koritenje baze koristi se naredba:


USE DATABASE imeBaze

Za unitavanje baze koristi se naredba:


DROP DATABASE imeBaze
NAREDBE U SQL-U
CREATE TABLE koristi se za stvaranje tablice
(relacije) u bazi podataka.
Pri definiranju relacije, potrebno je za svaki atribut
navesti naziv (column name), tip podatka (Data Type), te
opcionalno navesti NOT NULL kvalifikator.
Uz svaki atribut mogu se zadati i predodreene
(defaultne vrijednosti), razliita ogranienja, vlasnik itd.

Za unitavanje relacije koristi se naredba:


DROP TABLE imeTablice
NAREDBE U SQL-U
Primjer stvaranje tablice
CREATE TABLE djelatnik(
ime VARCHAR(30) PRIMARY KEY,
prezime VARCHAR(30) NOT NULL,
jmbg CHAR(13),
dat_rod DATETIME,
dat_zaposlenja DATETIME,
spol CHAR(1) DEFAULT 'M
);
NAREDBE U SQL-U
Primjer stvaranju tablice mogu se dodati razliite vrste
ogranienja:

PRIMARY KEY - primarni klju tablice


UNIQUE - jedinstveni klju tablice
FOREIGN KEY - strani klju tablice
CHECK - provjera vrijednosti atributa prema zadanim
kriterijima

SUBP e kreirati indekse nad primarnim i jedinstvenim


kljuem radi breg pretraivanja
NAREDBE U SQL-U
CREATE TABLE tvrtka(
id_tvrtke SMALLINT,
naziv VARCHAR(50),
CONSTRAINT tvrtka_pk PRIMARY KEY(id_tvrtke)
);
CREATE TABLE djelatnik(
jmbg INT,
"ime_prezime" VARCHAR(30) NOT NULL,
adresa VARCHAR(100) NOT NULL,
id_tvrtke SMALLINT,
CONSTRAINT djelatnik_pk PRIMARY KEY(jmbg),
CONSTRAINT djelatnik_fk_tvrtka FOREIGN KEY(id_tvrtke)
REFERENCES tvrtka(id_tvrtke)
);
NAREDBE U SQL-U
Za promatrani atribut provjerava se vrijednost koja se upisuje
u taj atribut:

CREATE TABLE djelatnik (


jmbg INT,
"ime_prezime" VARCHAR(30) NOT NULL,
adresa VARCHAR(100) NOT NULL,
spol CHAR(1) DEFAULT 'M,
placa DECIMAL(8,3) DEFAULT 5000,
CONSTRAINT provjeri_spol CHECK (spol IN ('M','')),
CONSTRAINT provjeri_placu CHECK (placa >= 0)
);
NAREDBE U SQL-U
ALTER TABLE koristi se za izmjenu
strukture postojee tablice
dodavanje, uklanjanje i izmjena atributa tablice
dodavanje i uklanjanje ogranienja
Dodavanje atributa:
ALTER TABLE djelatnik ADD oib
VARCHAR(10);
Uklanjanje atributa
ALTER TABLE djelatnik
DROP COLUMN jmbg;
NAREDBE U SQL-U
Primjer:

ALTER TABLE djelatnik ALTER COLUMN oib


VARCHAR(15);
Dodavanje ogranienja
ALTER TABLE djelatnik ADD CONSTRAINT
djelatnik_chk_radnomjesto CHECK(radno_mjesto
IN ('Poslovoa',Programer,'Direktor'));
Uklanjanje ogranienja

ALTER TABLE djelatnik DROP CONSTRAINT


djelatnik_chk_radnomjesto;
NAREDBE U SQL-U
Kreiranje indeksa nad stupcima tablice koristi se zbog
breg pristupa traenim podacima
Sintaksa:
CREATE [ UNIQUE ] INDEX index_name
ON { table | view } ( column [ ASC | DESC ]
[ ,...n ] )
Primjer:
CREATE INDEX ind_ime ON
djelatnik(ime_prezime);

Uklanjanje postojeeg indeksa


Primjer:
DROP INDEX djelatnik.ind_ime;
NAREDBE U SQL-U
INSERT koristi se za unos podataka (novih
slogova) u tablicu
Primjer:

INSERT INTO VOZILO (reg_oznaka, marka, tip)


VALUES ('OS-123 AB', 'VW', 'Golf');
INSERT INTO VOZILO VALUES ('OS-123 AC',
'FIAT', 'UNO', '998', '33', '06/01/1997',
'92000', 'Chuck', 'Norris');
INSERT INTO djelatnik
(oib, ime_prezime, adresa) VALUES
('111222333', 'Stevan Segal', 'K. Trpi. 2');
NAREDBE U SQL-U
UPDATE koristi se za izmjenu postojeih
podataka (slogova) u tablici
Primjer:

UPDATE mjesto SET naziv = 'OSIJEK'


WHERE pbr = 31000;

UPDATE vozilo SET reg_oznaka = 'OS-321 AC',


tip = 'Punto' WHERE reg_oznaka = 'OS-123
AC';
UPDATE djelatnik SET adresa= 'C. Hadrijana 2'
WHERE ime_prezime = 'Stevan Segal';
NAREDBE U SQL-U
DELETE koristi se za brisanje postojeih
podataka (slogova) u tablici
Primjer:

DELETE FROM racunalo;

DELETE FROM vozilo


WHERE tip LIKE 'P%';

DELETE FROM djelatnik


WHERE ime_prezime = 'Stevan Segal';
Transformiranje

apstraktnog modela baze podataka


u dizajn baze podataka
i potom u fiziki model baze
APSTRAKTNI MODEL
TRANSFORMIRANJE U DIZAJN

1. Definiranje kandidata za primarni klju


2. Odabir primarnog kljua
3. Odabir jedinstvenog kljua
4. Imenovanje i dodavanje atributa za strani klju
5. Definiranje i imenovanje domena
DIZAJN
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA

1. Kreiranje zaglavlja relacije u DBMS-u


2. Kreiranje integriteta relacija u DBMS-u
3. Kreiranje tijela relacije u DBMS-u
4. Pretraivanje podataka pohranjenih u DBMS-u
(upiti)
5. Uspostavljanje kontrole pristupa podacima u DBMS-
u
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
1. Kreiranje zaglavlja relacije u DBMS-u

DDL naredba CREATE TABLE

Create table racuni


(broj number(5,0) not null,
datum date not null,
datum_DVO date,
broj_narudbe varchar2(30),
id_kupac number(5,0) not null);
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
2. Kreiranje integriteta relacija u DBMS-u

Dva osnovna naina:


A. Zajedno s kreiranjem zaglavlja relacije
B. Dodavanje nakon to je kreirano zaglavlje relacije
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
2. Kreiranje integriteta relacija u DBMS-u
A. Zajedno s kreiranjem zaglavlja relacije

DDL naredba CREATE TABLE

Create table racuni


(broj number(5,0) not null,
datum date not null,
datum_DVO date,
broj_narudbe varchar2(30),
id_kupac number(5,0) not null),
CONSTRAINT pk_racun PRIMARY KEY(broj),
CONSTRAINT fk_kupac FOREIGN KEY(id_kupac)
REFERENCES kupci(sifra))
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
2. Kreiranje integriteta relacija u DBMS-u
B. Dodavanje nakon to je kreirano zaglavlje relacije

DDL naredba ALTER TABLE

Alter table racuni


Add (CONSTRAINT pk_racun PRIMARY KEY(broj))

Alter table racuni


Add (CONSTRAINT fk_kupac FOREIGN KEY(id_kupac)
REFERENCES kupci(sifra))
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA

3. Kreiranje tijela relacije u DBMS-u

DML naredba

INSERT INTO ime_tablice


(stupac, stupac, stupac)
VALUES
(vrijednost, vrijednost, vrijednost );
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA

3. Kreiranje tijela relacije u DBMS-u

DML naredba insert into

INSERT INTO racuni


(broj,datum,id_kupac)
VALUES
(32, TO_DATE(25.11.2003,DD.MM.YYYY),345);
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
4.Pretraivanje podataka pohranjenih u DBMS-u (upiti)

DML naredba SELECT

SELECT stupci [alias]


FROM ime_tablice [alias]
[where uvjeti za redak]
[group by stupci]
[having uvjeti za grupu redaka]
[order by stupci]
;
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
4.PRETRAIVANJE PODATAKA POHRANJENIH U DBMS-U (UPITI)

Primjer : PROJEKCIJA

SELECT * SELECT broj, datum


FROM racuni FROM racuni

Select broj, datum, SELECT broj broj_rauna,


datum_dvo, datum datum_rauna
broj_narudbe, FROM racuni Aliasi
id_kupac
From racuni
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
4.PRETRAIVANJE PODATAKA POHRANJENIH U DBMS-U (UPITI)

WHERE uvjet podrazumijeva 3 elementa:


1. ime stupca
2. operator usporedbe
3. ime stupca, konstantu ili listu vrijednosti.

OPERATOR USPOREDBE moe biti:


- logiki
- SQL
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
4.PRETRAIVANJE PODATAKA POHRANJENIH U DBMS-U (UPITI)

Logiki operatori usporedbe:

= jednako
> vee od
>= vee od ili jednako
< manje od
<= manje od ili jednako
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
4.PRETRAIVANJE PODATAKA POHRANJENIH U DBMS-U (UPITI)

SQL operatori usporedbe:

BETWEENANDizmeu dvije vrijednosti


(ukljuivo)
IN(lista) odgovara bilo kojoj vrijednosti iz liste
LIKE odgovara znakovnom uzorku
IS NULL je nul vrijednost
FIZIKA RAZINA IMPLEMENTIRANJE DIZAJNA
4.PRETRAIVANJE PODATAKA POHRANJENIH U DBMS-U (UPITI)

Primjer
PROJEKCIJA

SELECT ifra, naziv SELEKCIJA

FROM artikli
WHERE cijena between 100 and 200

SELECT ifra, naziv


FROM artikli
WHERE cijena in (10,20,50,100)
PRIMJERI S JEDNOSTAVNIM WHERE
UVJETIMA

Profesori ija je titula docent


SELECT * FROM profesor WHERE Titula=docent

Projekt ije je kraj u danom rasponu


SELECT Naziv, DatumPocetka, DatumSvrsetka FROM
Projekt WHERE DatumSvrsetka BETWEEN
'1.1.2011' AND 1.1.2016'

Projekt ije kraj nije u danom rasponu


SELECT Naziv, DatumPocetka, DatumSvrsetka FROM
Projekt WHERE DatumSvrsetka NOT BETWEEN
'1.1.2011' AND 1.1.2016'
PRIMJERI S JEDNOSTAVNIM WHERE
UVJETIMA

Projekt ija je ifra dana u popisu


SELECT Naziv, DatumPocetka, DatumSvrsetka FROM
Projekt WHERE Sifra IN (123, 111, 215)

Projekt ija je ifra nije dana u popisu


SELECT Naziv, DatumPocetka, DatumSvrsetka FROM
Projekt WHERE Sifra NOT IN (123, 111, 215)

Projekt ija je ifra nepoznata


SELECT * FROM Projekt WHERE Sifra IS NULL
Projekt ija je ifra poznata
SELECT * FROM Projekt WHERE Sifra IS NOT NULL
PRIMJERI S JEDNOSTAVNIM WHERE
UVJETIMA

Projekt iji naziv u sebi ima rije elektro


SELECT Naziv, Sifra FROM Projekt WHERE Naziv
LIKE '%elektro%'

Pri koritenju operatora LIKE mogu se koristiti


sljedei wildcard znakovi:
znak % zamjenjuje bilo koju kombinaciju znakova
znak _ zamjenjuje jedan znak
znak \ ukida specijalno znaenje znaka ispred kojeg se
pojavi. Koristi se za ukidanje specijalnog znaenja za
znakove _ % \
PRIMJERI S JEDNOSTAVNIM WHERE
UVJETIMA

Projekt iji naziv u sebi ima rije elektro


SELECT Naziv, Sifra FROM Projekt WHERE Naziv
MATCHES '*elektro*'

MATCHES operator omoguava koritenje sljedeih


wildcard znakova i kombinacija sa slovima
* - zamjenjuje bilo koju kombinaciju znakova (kao % kod
operatora LIKE)
[znakovi] - zamjenjuje jedan od znakova koji se nalaze unutar
zagrada
[^znakovi] - zamjenjuje jedan od znakova koji se ne nalaze
unutar zagrada
[z1-z2] - zamjenjuje jedan znak iz intervala z1-z2
? - zamjenjuje jedan znak (kao "_" kod operatora LIKE)
\ - Escape znak - ukida specijalno znaenje znaka ispred kojeg
se pojavljuje. Ukida specijalno znaenje za znakove \ ? * [ ]
PRIMJERI S JEDNOSTAVNIM WHERE
UVJETIMA

Ispis projekata iji naziv ima jednu od kombinacija znakova -


EL, El, eL, el
SELECT * FROM Projekt WHERE Naziv MATCHES '*[Ee][Ll]*'

Ispis projekata iji naziv poinje nekim od znakova koji se


nalaze izmeu slova A i D, te zavrava znakom a, i, o.
SELECT * FROM Projekt WHERE Naziv MATCHES '[A-D]*[aio]'

Ispis projekata iji naziv poinje nekim od znakova koji se


nalaze izmeu slova E i P, i nakon tog prvog znaka sadri barem
dva znaka koji nisu samoglasnici.
SELECT * FROM Projekt WHERE Naziv MATCHES
'[E-P]*[^aeiouAEIOU]*[^aeiouAEIOU]*'
PRIMJERI S SLOENIJIM WHERE UVJETIMA

Ispis studenata kojima su prva dva slova prezimena i


prva dva slova imena jednaka.
SELECT * FROM studenti WHERE
SUBSTRING(prezime,1,2) = SUBSTRING(ime,1,2)
Ispis studenata ija je prezime dulje od imena

SELECT * FROM studenti


WHERE LENGTH(prezime) - LENGTH(ime) > 0
Ispis studenata koji su roeni 1991. godine.

SELECT * FROM stud WHERE YEAR(datRodjenja) = 1991


Ispis studenata koji su roeni ponedjeljkom u 1991. godini.

SELECT * FROM stud WHERE YEAR(datRodjenja) = 1991


AND WEEKDAY(datRodjenja) = 1
PRIMJERI S SLOENIJIM WHERE UVJETIMA

Za sve studente ispisati sljedee podatke: prvo slovom


imena, prezime, potanski broj i adresu za one studente koji
su roeni u mjestu iji je potanski broj djeljiv sa 1000
SELECT SUBSTRING(ime,1,1), prezime, pbr, adresa
FROM studenti WHERE MOD(pbr, 1000) = 0
Ispis svih studenata koji su roeni na dananji dan prije 18
godina
SELECT * FROM studenti WHERE
YEAR(datRodjenja) = YEAR(TODAY)-18
AND MONTH(datRodjenja) = MONTH(TODAY)
AND DAY(datRodjenja) = DAY(TODAY)
MATEMATIKE FUNKCIJE SQL-A
Skalarne funkcije
djeluju nad jednom vrijednou i kao rezultat daju jednu
vrijednost.
mogu se koristiti uvijek tamo gdje se oekuje expression
Agregatne funkcije
djeluju nad skupom vrijednosti, a kao rezultat daju jednu,
agregiranu vrijednost
SKALARNE FUNKCIJE SQL-A
Matematike funkcije
ABS, SIN, COS, EXP, POWER, LOG, SQUARE, SQRT, RAND,
ROUND, ...

Datumske funkcije
DAY, MONTH, YEAR, WEEKDAY, ...

Tekstualne funkcije
SUBSTRING, LEN, LOWER, UPPER, ...
AGREGATNE FUNKCIJE SQL-A
ISO standard definira 5 agregatnih funkcija:
- COUNT
- SUM
- AVG
- MIN
- MAX

Ove funkcije se izvravaju nad jednim stupcem tablice


i vraaju jednu vrijednost.
Specifina je COUNT(*) jer ne eliminira null
vrijednosti.
AGREGATNE FUNKCIJE SQL-A

DISTINCT eliminiranje duplih vrijednosti. Nema


efekta na funkcije MIN i MAX, ali ima na SUM i AVG.
Moe se navesti samo jedanput u upitu.

VANO: Agregatne funkcije se mogu rabiti SAMO u


SELECT listi i HAVING iskazu.

Ako SELECT lista sadri agregatnu funkciju a nema


GROUP BY iskaza koji bi grupirao podatke, slijedi da
nijedan element SELECT liste ne moe sadravati bilo
kakvu referencu na stupac, osim ako je stupac argument u
agregatnoj funkciji.
AGREGATNE FUNKCIJE SQL-A NASTAVAK

P R I M J E R pogrene uporabe:

SELECT sifra_djelatnika, COUNT(*)


FROM djelatnici;
AGREGATNE FUNKCIJE SQL-A NASTAVAK
P R I M J E R uporabe:

Tablica Djelatnici :
ifra NOT NULL NUMBER(4)
ImePrezime VARCHAR2(10)
RadnoMjesto VARCHAR2(9)
ifraNadreenog NUMBER(4)
DatumUposlenja DATE
Plaa NUMBER(7,2)
Dodatak NUMBER(7,2)
ifraOdjela NOT NULL NUMBER(2)

1. Prikazati prosjenu plau za itavo poduzee.


2. Prikazati najveu, najmanju i prosjenu plau za poduzee.
3. Prikazati ukupan broj djelatnika u odjeljenju 20.
Tablica Djelatnici
ifra ImePrezime Radno Datum Plaa Dodatak ifra ifra
Mjesto Uposlenja Nadreenog Odjela
1 Pero Peri Direktor 01.01.1997. 5600 1200 10
2 Ana Ani Direktor IT 01.01.1997. 5900 1000 1 20
3 Petra Peri Direktor 01.02.1997. 5200 1000 1 30
marketinga
4 Manda Mandi Programer 01.02.1997. 2500 2 20
5 Nikola Nikoli Programer 01.04.2000. 2100 2 20
6 Anita Anti Komercijalist 15.06.1999. 1900 3 30
AGREGATNE FUNKCIJE SQL-A NASTAVAK

RJEENJE:

1. Prikazati prosjenu plau za itavo poduzee.


SELECT AVG(plaa)
FROM djelatnici;
2. Prikazati najveu, najmanju i prosjenu plau za poduzee.
SELECT MAX(plaa),MIN(plaa),AVG(plaa)
FROM djelatnici;
3. Prikazati ukupan broj djelatnika u odjeljenju 20.
SELECT COUNT(*)
FROM djelatnici
WHERE ifraOdjela=20;
Tablica Djelatnici
ifra ImePrezime Radno Datum Plaa Dodatak ifra ifra
Mjesto Uposlenja Nadreenog Odjela
1 Pero Peri Direktor 01.01.1997. 5600 1200 10
2 Ana Ani Direktor IT 01.01.1997. 5900 1000 1 20
3 Petra Peri Direktor 01.02.1997. 5200 1000 1 30
marketinga
4 Manda Mandi Programer 01.02.1997. 2500 2 20
5 Nikola Nikoli Programer 01.04.2000. 2100 2 20
6 Anita Anti Komercijalist 15.06.1999. 1900 3 30
Pitanja..

You might also like