240 likes | 397 Views
Lekcija 10. 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
E N D
Lekcija 10 Baze podataka SQL - Ažuriranja i kontrole - Predavanja
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 Predavanja
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 Predavanja
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 NaslovPJSELECT SifN, Naziv FROM Naslov WHERE SifO=‘PJ’; Predavanja
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 ImeTabeleSET ImeKolone={R-Izraz | S-Upit}{,…} WHERE R-Predikat Predavanja
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’; Predavanja
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 SifCFROM Clan); Predavanja
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.06WHERE Stanje > 800.000,00;UPDATE Depozit SET Stanje=Stanje*1.05WHERE Stanje <= 800.000,00; • U ovom primeru je bitan redosled ažuriranja Predavanja
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. Predavanja
DELETE • Primer 1: Uklanjanje podataka o članu šifre ‘MM0’ koji niti drži neku knjigu niti je imao pozajmice:DELETE FROM ClanWHERE SifC=‘MM0’; Predavanja
DELETE • Primer 2: Za uklanjanje svih neaktivnih članova, onih koji nisu uzeli ni jednu knjigu, povremeno treba zadavati:DELETE FROM ClanWHERE SifC NOT IN (SELECT SifC FROM Drzi UNION SELECT DISTINCT SifC FROM Pozajmica); Predavanja
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. Predavanja
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 Predavanja
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 NazivCREATE VIEW Naslov1 AS SELECT SifN, Naziv FROM Naslov; Predavanja
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 Predavanja
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 Predavanja
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 Predavanja
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. Predavanja
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 Predavanja
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 Predavanja
Posebna prava • Posebna prava se uklanjaju naredbom:REVOKE {Pravo,…} ALL ON ImeTabele ImePogleda FROM {Korisnik,…} PUBLIC; Predavanja
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 Predavanja
Posebna prava • Kreiranje korisnikaGRANT CONNECT TO Sef IDENTIFIED BY LozinkaSefa;GRANT CONNECT TO Radnik IDENTIFIED BY LozinkaRadnika;GRANT CONNECT TO Clan IDENTIFIED BY LozinkaClana; Predavanja
Posebna prava • Davanje prava upitaGRANT SELECT ON Oblast, Naslov, Autor, Je_Autor TO PUBLIC;GRANT SELECT ON Knjiga, Clan, Drzi, Pozajmica, Rezervacija TO Sef, Radnik; • Davanje prava ažuriranjaGRANT INSERT, UPDATE, DELETE ON Clan, Drzi, Pozajmica, Rezervacija TO Radnik;GRANT INSERT, UPDATE, DELETE ON Oblast, Naslov, Autor, Je_Autor, Knjiga TO Sef; Predavanja