0% found this document useful (0 votes)
48 views11 pages

SQL All You Need For Nothing

please don't open this it's nothing stvarno nije vrijedno spomena, glupost koju sam uploadao kako bi dobio drugu glupost za free
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views11 pages

SQL All You Need For Nothing

please don't open this it's nothing stvarno nije vrijedno spomena, glupost koju sam uploadao kako bi dobio drugu glupost za free
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

SQL
-zadaci i reenjaPLT
IME*
SRM

MBR

PRZ*

NAZ

Ima_sefa
(0,1)

GOD

RADNO
MESTO

(0,N)

raspor
edjen

sef

SODEL

NAZOD

LOK

(0,N)
(0,1)

RADNIK

(0,N)

Je_sef
(0,1)

radi

(0,N)

ODELJENJE

(0,N)

rukovodi

radproj
(0,N)

(0,1)
PROJEKAT
SPR

NAP*

NAR*

eme relacija koje se koriste u primerima


Radnik({mbr,prz,ime,plt,god,sef,sodel,srm},{mbr})
Projekat({spr,nap,nar,ruk},{spr})
Radproj({spr,mbr,brc},{spr+mbr})
Odeljenje({sodel,nazod,lok},{sodel})
Radnomesto({srm,naz},{srm})
Platni razred ({splr,dgr,ggr},{splr})
Referencijalni integriteti meu emama
Ogranienja:
Null(radnik, prz)=F
Radnik[sef]Radnik[mbr]
Null(radnik, ime)=F
Radnik[sodel]Odeljenje[sodel]
Null(radnik, god)=F
Radnik[srm]Radnomesto[srm]
Null(projekat, nap)=F
Projekat[ruk]Radnik[mbr]
Null(projekat, nar)=F
Radproj[spr]Projekat[spr]
Radproj[mbr]Radnik[mbr]
Znaenje datih mnemonika je sledee:
Mnem.
MBR
IME
PRZ
SEF
PLT
SPR
RUK
NAR
NAP
BRC

Opis
matini br.radnika
ime radnika
prezime radnika
mbr efa
plata
ifra projekta
mbr rukovodioca projekta
naruilac projekta
naziv projekta
br. radnih asova na projektu

Marija Raki-Skokovi

Mnem.
SODEL
NAZOD
LOK
SRM
NAZ
GOD
SPLR
DGR
GGR

Opis
ifra odeljenja
naziv odeljenja
lokacija odeljenja
ifra radnog mesta
naziv radnog mesta
godina roenja radnika
ifra platnog razreda
donja granica platnog razreda
gornja granica platnog razreda

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

Izraavanje upita i osnovna struktura naredbe SELECT


SELECT [DISTINCT] <lista obeleja>
FROM <lista tabela>
[WHERE <uslov selekcije>]
[ORDER BY <podlista obeleja> [ASC|DESC]];

Pregled sadraja tabele, naredba SELECT


1. Izlistati saraj tabela RADNIK, PROJEKAT i RADPROJ.
SELECT *
FROM radnik;
SELECT *
FROM projekat p;
SELECT *
FROM radproj;

SELECT naredba i izmena redosleda kolona


2. Izlistati imena, prezimena, matine brojeve i plate radnika.
SELECT ime, prz, mbr, plt
FROM radnik;

DISTINCT u SELECT naredbi


3. Izlistati sva razliita imena radnika.
SELECT DISTINCT ime
FROM radnik;

WHERE uslov u SELECT naredbi. Operatori poreenja: =, != (<>), <, >, <=, >=; IN
(lista); BETWEEN .. AND..; LIKE; NOT LIKE; IS NULL; IS NOT NULL
4. Izlistati imena i prezimena radnika koji se zovu Petar.
SELECT ime, prz
FROM radnik
WHERE ime='Petar';
5. Izlistati imena, prezimena i plate radnika ija je plata vea od 10000.
SELECT ime, prz, plt
FROM radnik
WHERE plt>10000;
6. Izlistati imena, prezimena i plate radnika koji imaju platu izmeu 10000 i 20000.
SELECT ime, prz, plt
FROM radnik
WHERE plt BETWEEN 10000 AND 20000;
Ili
SELECT ime, prz, plt
FROM radnik
WHERE plt>=10000 AND plt<=20000;

Marija Raki-Skokovi

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

7. Izlistati imena, prezimena i plate radnika koji imaju platu koja nije izmeu 10000 i 20000.
SELECT ime, prz, plt
FROM radnik
WHERE plt NOT BETWEEN 10000 AND 20000;
8. Izlistati imena, prezimena i matine brojeve radnika koji se zovu Petar, Marko ili Ana.
SELECT ime, prz, mbr
FROM radnik
WHERE ime IN ('Petar','Marko','Ana');
9. Izlistati imena, prezimena i plate radnika koji imaju platu izmeu 15000 i 20000 ili se zovu
Marko.
SELECT ime, prz, plt
FROM radnik
WHERE plt>=15000 AND
plt<=20000 OR
ime='Marko';
10. Izlistati radnike koji se prezivaju na slovo P.
SELECT *
FROM radnik
WHERE prz LIKE 'P%';
11. Prikazati radnike koji imaju efa.
SELECT *
FROM radnik
WHERE sef IS NOT NULL;

Redosled ispisivanja vrsta u odgovoru na upit, ORDER BY klauzula


12. Izlistati imena, prezimena i plate radnika sortirane po opadajuem redosledu plata.
SELECT ime, prz, plt
FROM radnik
ORDER BY plt DESC;
13. Izlistati imena, prezimena i plate radnika sortirane po rastuem redosledu imena i opadajuem
redosledu prezimena.
SELECT ime, prz, plt
FROM radnik
ORDER BY ime ASC, prz DESC;

Spajanje tabela po jednakosti (EQUI JOIN)


14. Izlistati imena, prezimena i plate rukovodilaca projekata.
SELECT ime, prz, plt
FROM radnik r, projekat p
WHERE r.mbr=p.ruk;
15. Izlistati imena, prezimena i matine brojeve radnika koji rade na projektu sa ifrom 5, sortirane po
opadajuem redosledu prezimena.
SELECT r.ime, r.prz, r.mbr
FROM radnik r, radproj rp
WHERE r.mbr=rp.mbr AND spr=5
ORDER BY prz DESC;
Marija Raki-Skokovi

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

16. Izlistati imena, prezimena i matine brojeve svih radnika koji rade na projektu sa ifrom 2 sem
rukovodioca tog projekta.
SELECT r.ime, r.prz, r.mbr
FROM radnik r, radproj rp, projekat p
WHERE r.mbr=rp.mbr AND
rp.spr=p.spr AND
p.ruk!= r.mbr AND
rp.spr=2;
17. Izlistati nazive i naruioce projekata na kojima radi radnik Milo Miloevi.
SELECT DISTINCT nap, nar
FROM projekat p, radnik r, radproj rp
WHERE rp.mbr=r.mbr AND
rp.spr=p.spr AND
r.ime='Milos' AND
r.prz='Milosevic';

Spajanje tabela na vee (NON EQUI JOIN). Spajanje tabele same sa sobom
(SELFJOIN).
18. Izlistati imena, prezimena i plate radnika koji imaju platu veu od radnika sa matinim brojem 10.
SELECT r.ime, r.prz, r.plt
FROM radnik r, radnik r1
WHERE r1.mbr=10 AND
r.plt>r1.plt;
19. Izlistati imena i prezimena radnika i ime i prezime njegovog efa kao SEF
SELECT r.ime, r.prz, s.ime||' '||s.prz AS sef
FROM radnik r, radnik s
WHERE r.sef=s.mbr;
20. Izlistati nazive i ifre projekata na kojima radi bar jedan radnik koji radi i na projektu sa ifrom 2.
SELECT DISTINCT p.nap, p.spr
FROM projekat p, radproj rp, radproj rp1
WHERE p.spr=rp.spr AND
rp.mbr=rp1.mbr AND
rp1.spr=2 AND
rp.spr!=rp1.spr;

Rekurzivni upit, klauzula CONNECT BY i START WITH


21. Prikazati, rekurzivno (po obeleju sef), matine brojeve, prezimena i imena svih radnika, saglasno
hijerarhijskoj strukturi rukovoenja, iji je glavni rukovodilac radnik sa matinim brojem 2,
ukljuujui i njega.
SELECT mbr, prz, ime, sef
FROM radnik
CONNECT BY PRIOR mbr=sef
START WITH mbr=2;

Marija Raki-Skokovi

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

Prikazivanje informacija koje ne zadovoljavaju kriterijum spajanja (OUTER JOIN)


22. Prikazati ifu i naziv svih odeljenja i imena i prezimena radnika koji rade na tom odeljenju,
sortirane po ifri odeljenja.
SELECT o.sodel, o.nazod, r.ime, r.prz
FROM odeljenje o, radnik r
WHERE o.sodel=r.sodel(+)
ORDER BY o.sodel;
23. Prikazati ifru projekta, naziv projekta i matini broj radnika koji rade na tim projektima, za sve
projekte.
SELECT p.spr, p.nap, rp.mbr
FROM projekat p, radproj rp
WHERE p.spr=rp.spr(+);
24. Prikazati matini broj radnika, ime, prezime, ifru projekta i naziv projekta na kojem rade, za sve
radnike.
SELECT r.mbr, prz, ime, p.spr, p.nap
FROM projekat p, radproj rp, radnik r
WHERE r.mbr= rp.mbr(+)
AND rp.spr=p.spr(+);

Aritmetiki izrazi u SELECT naredbi


25. Izlistati imena, prezimena i plate radnika uveane za 17%.
SELECT ime, prz, plt*1.17
FROM radnik;

Aritmetiki izrazi u WHERE klauzuli


26. Izlistati imena, prezimena i plate radnika koji imaju dva puta veu platu od radnika sa matinim
brojem 6.
SELECT r.ime, r.prz, r.plt
FROM radnik r, radnik r1
WHERE r1.mbr=6 AND
r.plt>2*r1.plt;
27. Izlistati imena i prezimena radnika koji zarauju manje od rukovodioca projekta na kom radnik
radi, kao i imena i prezimena rukovodioca kao Ime i prezime rukovodioca.
SELECT r.ime, r.prz, r1.ime||' '||r1.prz "Ime i prezime
rukovodioca"
FROM radnik r, radnik r1, radproj rp, projekat p
WHERE r.mbr=rp.mbr AND
rp.spr=p.spr AND
p.ruk=r1.mbr AND
r1.plt>r.plt;

Marija Raki-Skokovi

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

Grupne (skupovne) aritmetike funkcije nad numerikim poljima: AVG, SUM, MAX,
MIN, COUNT
28. Kolika je prosena plata radnika?
SELECT AVG(plt) "Prosecna plata"
FROM radnik;
29. Kolika je ukupna plata svih radnika?
SELECT SUM(plt) "Ukupna plata"
FROM radnik;
30. Kolika je ukupna godinja plata svih radnika?
SELECT SUM(plt)*12 "Ukupna godisnja plata"
FROM radnik;
31. Koliko ima radnika?
SELECT COUNT(*)"Broj radnika"
FROM radnik;

GROUP BY klauzula. Sumiranje rezultata upita po kolonama sa istom vredou.


SELECT [DISTINCT] <lista obeleja>
FROM <lista tabela>
[WHERE <uslov selekcije>]
[GROUP BY <lista obelezja>
[HAVING <uslov selekcije unutar grupe>]]
[ORDER BY <podlista obelezja> [ASC|DESC]];
32. Koliko radnika radi na projektu i koliko je ukupno angaovanje na projektu?
SELECT spr, COUNT(*), SUM(BRC)
FROM radproj
GROUP BY spr;
33. Izlistati matine brojeve, imena i prezimena rukovodilaca projekata i broj projekata kojima
rukovode.
SELECT mbr, ime, prz, COUNT(SPR)
FROM radnik r, projekat p
WHERE r.mbr=p.ruk
GROUP BY mbr, ime, prz;

HAVING klauzula. Biranje grupisanih torki koje zadovoljavaju odreeni uslov


34. Izlistati matine brojeve radnika koji rade na vie od 2 projekta.
SELECT mbr, COUNT(*)
FROM radproj
GROUP BY mbr
HAVING COUNT(*)>2;
35. Izlistati ifre i nazive projekata na kojima se radi vie od 50 asova.
SELECT p.spr, p.nap, SUM(rp.brc)
FROM radproj rp, projekat p
WHERE rp.spr=p.spr
GROUP BY p.spr, p.nap
HAVING SUM(rp.brc)>50;
Marija Raki-Skokovi

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

36. Izlistati ifre i nazive projekata na kojima je proseno angaovanje vee od prosenog
angaovanja na svim projektima.
SELECT p.spr, p.nap, AVG(rp.brc), AVG(rp1.brc)
FROM radproj rp, radproj rp1, projekat p
WHERE rp.spr=p.spr
GROUP BY p.spr, p.nap
HAVING AVG(rp.brc)>AVG(rp1.brc);
ili
SELECT p.spr, p.nap, round(AVG(rp.brc),2)
FROM radproj rp, radproj rp1, projekat p
WHERE rp.spr=p.spr
GROUP BY p.spr, p.nap
HAVING AVG(rp.brc)>AVG(rp1.brc);
37. Izlistati ifre i nazive projekata na kojima radi vie od 3 radnika.
SELECT p.spr, p.nap
FROM radproj rp, projekat p
WHERE rp.spr=p.spr
GROUP BY p.spr, p.nap
HAVING COUNT(*)>3;

Podupit koji vraa skup vrednosti. Operatori poreenja + ANY (ALL).


38. Izlistati matine brojeve, imena, prezimena i platu radnika koji imaju platu veu od prosene,
sortirane po rastuem redosledu plata.
SELECT DISTINCT mbr, ime, prz, plt
FROM radnik
WHERE plt> (SELECT AVG(plt) FROM radnik)
ORDER BY plt;
39. Izlistati matine brojeve, imena i prezimena radnika i nazive projekata na kojima radnici rade vie
od prosenog angaovanja na datom projektu.
SELECT DISTINCT r.mbr, r.ime, r.prz, nap
FROM radnik r, projekat p, radproj rp
WHERE r.mbr=rp.mbr AND
rp.spr=p.spr AND
rp.brc>(SELECT AVG(rp1.brc) FROM radproj rp1
WHERE rp1.spr=rp.spr);

Podupit koji vraa skup vrednosti. Skupovni operatori: IN (logiki jednak '=ANY') i
NOT IN (logiki jednak '!=ALL')
40. Izlistati matine brojeve, imena i prezimena radnika koji rade na projektu sa ifrom 1
SELECT mbr, ime, prz
FROM radnik
WHERE mbr IN(SELECT mbr
FROM radproj
WHERE spr=1);
Ili

Marija Raki-Skokovi

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

SELECT mbr, ime, prz


FROM radnik
WHERE mbr =ANY(SELECT mbr
FROM radproj
WHERE spr=1);
41. Izlistati radnike koji rade na projektu 5, a ne rade na projektu 1.
SELECT r.mbr, ime, prz
FROM radnik r, radproj rp
WHERE rp.spr=5 AND
rp.mbr=r.mbr AND
r.mbr NOT IN(SELECT mbr
FROM radproj
WHERE spr=1);
Ili
SELECT r.mbr, ime, prz
FROM radnik r, radproj rp
WHERE rp.spr=5 AND
rp.mbr=r.mbr AND
r.mbr !=ALL(SELECT mbr
FROM radproj
WHERE spr=1);
42. Izlistati ime, prezime i platu radnika sa najmanjom platom.
SELECT ime, prz, plt
FROM radnik
WHERE plt=(SELECT MIN(plt) FROM radnik);
43. Izlistati radnike koji zarauju vie od Petra Petrovia, ili rade u istom odeljenju kao Milosevic
Milos.
SELECT mbr, ime, prz
FROM radnik
WHERE plt>ALL(SELECT plt
FROM radnik
WHERE ime='Petar' AND prz='Petrovic')
OR
sodel=ANY(SELECT sodel
FROM radnik
WHERE ime='Milos' AND prz='Milosevic');
44. Izlistati matine brojeve, imena i prezimena radnika koji ne rade na projektima 1 i 5.
SELECT DISTINCT mbr, ime, prz
FROM radnik
WHERE mbr NOT IN(SELECT mbr
FROM radproj
WHERE spr=1)
AND
mbr NOT IN(SELECT mbr
FROM radproj
WHERE spr=5);

Marija Raki-Skokovi

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

Unija u SELECT naredbi (unija dve relacije).


45. Izlistati matine brojeve, imena i prezimena radnika koji rade na bar jednom od projekata sa
ifrom 1 ili 5.
SELECT DISTINCT r.mbr,
FROM radnik r, radproj
WHERE r.mbr=rp.mbr AND
UNION
SELECT DISTINCT r.mbr,
FROM radnik r, radproj
WHERE r.mbr=rp.mbr AND

ime, prz
rp
rp.spr=1
ime, prz
rp
rp.spr=5;

Razlika u SELECT naredbi (razlika dve relacije).


46. Izlistati matine brojeve, imena i prezimena radnika koji rade na projektu sa ifrom 1, a ne rade na
projektu sa ifrom 5.
SELECT DISTINCT r.mbr,
FROM radnik r, radproj
WHERE r.mbr=rp.mbr AND
MINUS
SELECT DISTINCT r.mbr,
FROM radnik r, radproj
WHERE r.mbr=rp.mbr AND

ime, prz
rp
rp.spr=1
ime, prz
rp
rp.spr=5;

Presek u SELECT naredbi (presek dve relacije).


47. Izlistati matine brojeve, imena i prezimena radnika koji rade i na projektu sa ifrom 1 i na
projektu sa ifrom 5.
SELECT DISTINCT r.mbr,
FROM radnik r, radproj
WHERE r.mbr=rp.mbr AND
INTERSECT
SELECT DISTINCT r.mbr,
FROM radnik r, radproj
WHERE r.mbr=rp.mbr AND

ime, prz
rp
rp.spr=1
ime, prz
rp
rp.spr=5;

Predikat EXISTS (NOT EXISTS)


48. Izlistati matine brojeve, imena i prezimena radnika koji ne rade na projektu sa ifrom 5.
SELECT mbr, ime, prz
FROM radnik r
WHERE NOT EXISTS
(SELECT rp.mbr
FROM radproj rp
WHERE spr=5 AND rp.mbr=r.mbr);
49. Radnici koji ne rade ni na jednom projektu.
SELECT mbr, ime, prz
FROM radnik r
WHERE NOT EXISTS
(SELECT rp.mbr
FROM radproj rp
WHERE rp.mbr=r.mbr);
Marija Raki-Skokovi

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

50. Radnici koji nisu rukovodioci projekta.


SELECT mbr, ime, prz
FROM radnik r
WHERE NOT EXISTS
(SELECT ruk
FROM projekat p
WHERE p.ruk=r.mbr);
51. Ko je rukovodilac projekta sa najmanjom platom?
SELECT DISTINCT mbr, ime, prz
FROM radnik r, projekat p
WHERE p.ruk=r.mbr AND r.plt=
(SELECT MIN(plt)
FROM radnik r
WHERE EXISTS
(SELECT DISTINCT ruk
FROM projekat
WHERE ruk=r.mbr));

Globalni prikaz sintakse naredbe SELECT


SELECT [DISTINCT] <lista obeleja>
FROM <lista tabela>
[WHERE <uslov selekcije>]
[CONNECT BY <uslov povezivanja> [START WITH <uslov selekcije>]]
[GROUP BY <lista obelezja>[HAVING <uslov selekcije>]]
[UNION|INTERSECT|MINUS SELECT...]
[ORDER BY <podlista obelezja> [ASC|DESC]];

Kreiranje pogleda
CREATE VIEW <naziv pogleda> [<lista obelezja>] AS
SELECT upit;
52. Kreirati pogled Ruk (rime, rprz, rplt,rpr) koji e prikazivati imena, prezimena i plate rukovodilaca
projekata i ifre projekata kojima rukovode.
CREATE VIEW Ruk (rime, rprz, rplt,rpr) AS
SELECT DISTINCT ime, prz, plt, spr
FROM radnik r, projekat p
WHERE r.mbr=p.ruk;
53. Izlistati sve rukovodioce projekata.
SELECT * FROM Ruk;
54. Koji rukovodilac (ime, prezime) ima najmanju platu?
SELECT DISTINCT rime, rprz
FROM Ruk
WHERE rplt=
(SELECT MIN(rplt) FROM Ruk);

Marija Raki-Skokovi

10

Materijal za vebe iz predmeta Projekatovanje baza podataka-SQL

ZADACI I REENJA

55. Kreirati pogled Nesef koji ce prikazivati podatke o radnicima koji nisu rukovodioci projekata.
CREATE VIEW nesef AS
SELECT *
FROM radnik r
WHERE NOT EXISTS
(SELECT ruk
FROM projekat p
WHERE p.ruk=r.mbr);

Auriranje baze podataka


Dodavanje nove torke
INSERT INTO <ime tabele> [<lista obelezja>]
VALUES (<lista vrednosti>)|SELECT...
56. Dodati u tabelu RADNIK podatke za radnika: matini broj: 27, ime: Ana, prezime: Ras, plata:
37000, sef: NULL.
INSERT INTO radnik (mbr,ime,prz,plt,sef)
VALUES (27,'Ana','Ras',37000,NULL);

Brisanje postojeih torki


DELETE FROM <ime tabele> [WHERE <uslov selekcije>];
57. Iz tabele RADNIK obrisati podatke o radniku sa matinim brojem 27.
DELETE FROM radnik
WHERE mbr=27;

Modifikacija postojeih torki


UPDATE <ime tabele>
SET <obelezje>=<aritm_izraz>{,<obelezje>=<aritm_izraz>}
[WHERE <uslov selekcije>];
UPDATE <ime tabele>
SET (<lista obelezja>)=(SELECT upit)
{,(<lista obelezja>)=(SELECT upit)}
[WHERE <uslov selekcije>];
58. U tabeli RADNIK, radniku sa matinim brojem 10 poveati platu za 10% i postaviti da mu je ef
radnik sa matinim brojem 14.
UPDATE radnik
SET plt=plt*1.1, sef=14
WHERE mbr=10;
59. Modifikovati tabelu PROJEKAT tako da se za rukovodioca projekta sa ifrom 2 postavi ef
radnika sa matinim brojem 10.
UPDATE projekat
SET (ruk)=(SELECT sef FROM radnik WHERE mbr=10)
WHERE spr=2;

Marija Raki-Skokovi

11

You might also like