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

Baze podataka

SQL
- Ažuriranja i kontrole -
SQL naredbe
ažuriranja

• Deo SQL jezika kojim se vrši izmena u tabelama čine tri


naredbe:
– INSERT: naredba za unošenje novih redova u tabelu
– UPDATE: naredba za izmene redova u tabeli
– DELETE: naredba za uklanjanje redova iz tabele
• Naredbe ažuriranja se uvek odnose na jednu tabelu
• Kod ovih naredbi nema svođenja; svaka od naredbi vrši
promene na nivou redova tabele

11/28/2017 Predavanja 2
INSERT

• Uz ovu naredbu mora se navesti:


– u koju tabelu ubacujemo,
– za koje kolone dajemo vrednosti,
– vrednosti koje ubacujemo.
• Sintaksa naredbe:
INSERT INTO ImeTabele [(ListaKolona)]
{VALUES (ListaKonstanti)}| R-Upit
• Ako nije navedena ListaKolona iza ImeTabele ubacuju se
vrednosti za sve kolone

11/28/2017 Predavanja 3
INSERT

• Primer 1:
Ubacivanje podatka o novom naslovu
INSERT INTO Naslov
VALUES(‘PJC#’,
’Programski jezik C#’,’C#’);
• Primer 2:
Neka je kreirana nova tabela NaslovPJ(SifN,Naziv).
Ubacujemo u tu tabelu podatke za naslove iz oblasti ‘PJ’ na
osnovu sadržaja tabele Naslov
INSERT INTO NaslovPJ
SELECT SifN, Naziv
FROM Naslov
WHERE SifO=‘PJ’;

11/28/2017 Predavanja 4
UPDATE

• Uz ovu naredbu mora se navesti:


– u kojoj tabeli se vrše izmene,
– za koje kolone u redu menjamo vrednosti,
– pod kojim uslovima menjamo vrednosti.
• Sintaksa naredbe UPDATE koja sadrži sve navedene
elemente:
UPDATE ImeTabele
SET ImeKolone={R-Izraz | S-Upit}{,…}
WHERE R-Predikat

11/28/2017 Predavanja 5
UPDATE

• Primer 1:
Neka je u tabeli Naslov za naslov šifre SifN=‘RBP0’
greškom uneta šifra oblasti ‘PJ’, sledi izmena:

UPDATE Naslov
SET SifO=‘BP’
WHERE SifN=‘RBP0’;

11/28/2017 Predavanja 6
UPDATE

• Primer 2:
Neka je jedan broj članova brisan iz evidencije. Pri tome za
tabelu Pozajmica nije specificiran referencijalni integritet.
Usled toga šifre članova u Pozajmica treba ručno postaviti
na NULL vrednost.

UPDATE Pozajmica
SET SifC=NULL
WHERE SifC NOT IN (SELECT SifC
FROM Clan);

11/28/2017 Predavanja 7
UPDATE

• Primer 3:
Upis kamata od 6% za račune sa iznosom većim od
800.000,00 dinara i kamate od 5% za račune sa iznosom
manjim od 800.000,00 dinara:

UPDATE Depozit
SET Stanje=Stanje*1.06
WHERE Stanje > 800.000,00;
UPDATE Depozit
SET Stanje=Stanje*1.05
WHERE Stanje <= 800.000,00;
• U ovom primeru je bitan redosled ažuriranja

11/28/2017 Predavanja 8
DELETE

• Uz ovu naredbu mora se navesti:


– iz koje tabele se vrši uklanjanje,
– pod kojim uslovima se uklanja neki red.
• Sintaksa naredbe:
DELETE FROM ImeTabele
WHERE R-Predikat
• U WHERE klauzuli se mogu primenjivati sve do sada
obrađene forme uključujući i podupite
• SUBP odbija uklanjanja, ako je to u suprotnosti sa
dinamičkom specifikacijom ref. integriteta.

11/28/2017 Predavanja 9
DELETE

• Primer 1:
Uklanjanje podataka o članu šifre ‘MM0’ koji niti drži neku
knjigu niti je imao pozajmice:

DELETE FROM Clan


WHERE SifC=‘MM0’;

11/28/2017 Predavanja 10
DELETE

• Primer 2:
Za uklanjanje svih neaktivnih članova, onih koji nisu uzeli ni
jednu knjigu, povremeno treba zadavati:

DELETE FROM Clan


WHERE SifC NOT IN (SELECT SifC
FROM Drzi
UNION
SELECT DISTINCT SifC
FROM Pozajmica);

11/28/2017 Predavanja 11
POGLEDI (VIEW)

• Izvedene tabele
• Dobija se izvršavanjem upita kojim je definisan pogled
• Kreiranje:
CREATE VIEW ImePogleda [ListaKolona]
AS R-Upit;
• ImePogleda mora biti novo (ne sme da postoji)
• ListaKolona – ili se nasleđuje iz upita koji ga definiše ili se
mora navesti (npr. spajanje)
• Jednom kreiran pogled, može se koristiti za druge upite, i
ponekad i kod ažuriranja.

11/28/2017 Predavanja 12
POGLEDI (VIEW)

• Prednosti koje imaju pogledi u radu sa RBP:


– Pogled predstavlja jednu vrstu potprograma u SQL-u.
Može se koristiti u podupitima u WHERE i HAVING
klauzulama.
– Komplikovani i često korišćeni upiti se mogu formulisati u
vidu pogleda (poziv tipa SELECT * FROM ImePogleda;)
– Pogled olakšava kontrolu pristupa BP

11/28/2017 Predavanja 13
POGLEDI (VIEW)

• Primer 1: Pogled koji ograničava pristup tabeli Naslov na


redove sa šifrom ‘PJ’
CREATE VIEW NaslovPJ
AS SELECT *
FROM Naslov
WHERE SifO=‘PJ’;
• Primer 2: Pogled koji ograničava pristup tabeli Naslov na
kolone SifN i Naziv
CREATE VIEW Naslov1
AS SELECT SifN, Naziv
FROM Naslov;

11/28/2017 Predavanja 14
Kontrola pristupa
podacima

• Vrste kontrole:
– Ko može da pristupa BP
– Čemu može da pristupa u BP
– Šta može da radi sa onim čemu može da pristupi
• Kontrola pristupa se obezbeđuje sa funkcijama:
– Kreiranje i uklanjanje korisnika – naloga za rad sa BP
– Dodela i uklanjanje opštih prava za rad sa BP
– Dodela i uklanjanje posebnih prava

11/28/2017 Predavanja 15
Kontrola pristupa
podacima

• Naredbe za kontrolu pristupa:


– GRANT: naredba dodele
– REVOKE: naredba uklanjanja
• Kreiranje korisnika se obavlja istovremeno sa dodelom
jednog od opštih prava:
GRANT OpštePravo TO Korisnik
IDENTIFIED BY Lozinka;
• Korisnik: javni podatak za najavu korisnika sistemu za
upravljanje BP
• Lozinka: tajni naziv, kojom korisnik kompletira postupak
najave

11/28/2017 Predavanja 16
Kontrola pristupa
podacima

• OpštePravo: može biti jedno od sledećih:


– CONNECT: sva dodeljena posebna prava nad tabelama,
plus kreiranja pogleda nad tim tabelama
– RESOURCE: prethodna prava plus prava kreiranja
osnovnih tabela
– DBA (Data Base Administrator): neograničena prava nad
BP, koja ima korisnik koji je administrator BP

11/28/2017 Predavanja 17
Opšte pravo

• Korisnik se najčešće kreira sa CONNECT pravom


• Opšte pravo iznad CONNECT može se dodeliti sa
naredbom u formi:
GRANT OpštePravo TO Korisnik;
• Administrator BP može ukloniti neko opšte pravo nekom
korisniku naredbom:
REVOKE OpštePravo FROM Korisnik;
• Ako se uklone RESOURCE i DBA pravo, korisniku ostaje
CONNECT pravo.
• Uklanjanjem CONNECT prava, uklanja se i korisnik i on se
više ne može najavljivati za rad sa BP.

11/28/2017 Predavanja 18
Posebna prava

• Posebna prava se odnose na tabele i poglede u BP, kao i na


dozvoljene radnje nad njima
• Sintaksa naredbe dodele posebnog prava:
GRANT {Pravo,…} ALL
ON ImeTabele  ImePogleda
TO {Korisnik,…}  PUBLIC
[WITH GRANT OPTION];
• Jedno ili više prava mogu se dodeliti jednom ili više korisnika
• WITH GRANT OPTION: navedeni korisnici mogu dalje
dodeljivati sva navedena prava
• PUBLIC - obuhvata sve postojeće korisnike
• ALL - obuhvata sva prava
11/28/2017 Predavanja 19
Posebna prava

• Posebno pravo nad tabelom ili pogledom:


– SELECT: pravo upita
– INSERT: pravo ubacivanja novih redova
– UPDATE [ListaKolona]: Pravo izmene svih kolona ili
samo navedenih
– DELETE: pravo uklanjanja redova
– REFERENCES [ListaKolona]: pravo referisanja kolona
preko stranih ključeva

11/28/2017 Predavanja 20
Posebna prava

• Posebna prava se uklanjaju naredbom:

REVOKE {Pravo,…} ALL


ON ImeTabele  ImePogleda
FROM {Korisnik,…}  PUBLIC;

11/28/2017 Predavanja 21
Posebna prava

• Primer: Neka u RBP Biblioteka imamo tri korisnika koji


treba da imaju sledeća prava:
– Sef: prava ažuriranja podataka o oblastima, naslovima,
autorima, autorstvu i knjigama, plus prava upita nad svim
podacima
– Radnik: prava ažuriranja podataka o članovima, držanju
knjiga, pozajmicama i rezervacijama, plus prava upita
nad svim podacima
– Clan: prava upita nad podacima o oblastima, naslovima,
autorima i autorstvu

11/28/2017 Predavanja 22
Posebna prava

• Kreiranje korisnika

GRANT CONNECT TO Sef IDENTIFIED BY LozinkaSefa;

GRANT CONNECT TO Radnik IDENTIFIED BY


LozinkaRadnika;

GRANT CONNECT TO Clan IDENTIFIED BY


LozinkaClana;

11/28/2017 Predavanja 23
Posebna prava

• Davanje prava upita

GRANT SELECT ON Oblast, Naslov, Autor, Je_Autor TO


PUBLIC;
GRANT SELECT ON Knjiga, Clan, Drzi, Pozajmica,
Rezervacija TO Sef, Radnik;
• Davanje prava ažuriranja

GRANT INSERT, UPDATE, DELETE ON Clan, Drzi,


Pozajmica, Rezervacija TO Radnik;

GRANT INSERT, UPDATE, DELETE ON Oblast, Naslov,


Autor, Je_Autor, Knjiga TO Sef;
11/28/2017 Predavanja 24
Pitanja ?

11/28/2017 Predavanja 25

You might also like