Data Manipulation
Data Manipulation
Ciljevi
• Poslije kompletiranja ove lekcije trebalo bi
se biti u mogućnosti da:
– Da se opiše svaka DML naredba
– Ubaci (insertuje) red u tabelu
– Ažurira/ju red/ovi u tabeli
– Briše/u red/ovi iz tabele
– Kontroliše transakcija
DML – Data Manipulation
Language
• DML naredbe se izvršavaju kada:
– Dodajete novi red u tabelu
– Modifikujete postojeće redove u tabeli
– Brišete postojeće redove iz tabele
• Transakcija se sastoji od kolekcije DML
naredbi koje predstavljaju logičku jedinicu
rada
Dodavanje novog reda u tabelu
Novi red
60 IT - SEKTOR 2400
Dodavanje
DEPARTMENTS (insertovanje novog
Dep. Dep.Name Loc.ID sloga u tabelu)
NO
10 Administration 1700
20 Marketing 1800
DEPARTMENTS
30 Purchasing 1700
Dep. Dep.Name Loc.ID
40 Human Res. 2400
NO
10 Administration 1700
20 Marketing 1800
30 Purchasing 1700
40 Human Res. 2400
60 IT – SEKTOR 2400
Sintaksa INSERT naredbe
• Dodavanje novog reda u tabelu koristeći INSERT
naredbu
• Samo jedan red se ubacuje na ovaj način!
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
1 row created.
Ubacivanje datumskih vrijednosti
• Datumske vrijednosti se unose putem funkcije
TO_DATE
• Format ‘dd.mm.yyyy’ označava:
• dd – 2 cifre dana u mjesecu (01 - 31)
• mm – 2 cifre za mjeserc (01 - 12)
• yyyy – 4 cifre za godinu (0000 - 9999)
1 row created.
Ubacivanje vrijednosti korištenjem
zamjenskih varijabli
• Kreiranje interkativne skripte za korištenje
zamjenskih parametara
SQL> INSERT INTO deptmenents (deptment_id,
2 department_name, location_id)
3 VALUES (&department_id,
4 '&department_name', '&location');
1 row created.
Kreiranje skripte sa prilagođenim
nazivima za unos
• ACCEPT - pohranjuje vrijednosti u varijable
• PROMPT – prikazuje prilagođeni tekst
ACCEPT department_id PROMPT ‘Unesite sifru
odjela:'
ACCEPT department_name PROMPT ‘Unesite naziv
odjela:'
ACCEPT location PROMPT ‘Unesite lokaciju kojoj
odjel pripada:'
INSERT INTO deptartments (department_id,
department_name, loc)
VALUES (&department_id, '&department_name',
'&location');
Kopiranje slogova iz drugih tabela
• Kopiranje vrijednosti iz drugih tabela
putem SQL iskaza
• Ne koristi se VALUES klauzula
• Broj kolona u insertu mora odgovarati broju
kolona u SELECT klauzuli
SQL> INSERT INTO managers(id, name, salary, hiredate)
2 SELECT empno, ename, sal, hiredate
3 FROM emp
4 WHERE job = 'MANAGER';
3 rows created.
Ažuriranje podataka u tabeli
UPDATE (ažuriranje
DEPARTMENTS podataka u tabeli)
Dep. Dep.Name Loc.ID
NO
10 Administration 1700
20 Marketing 1800
DEPARTMENTS
30 Purchasing 1700
Dep. Dep.Name Loc.ID
40 Human Res. 2400
NO
50 IT 2400
10 Administration 1700
20 Marketing 1800
30 Purchasing 1700
40 Human Res. 2400
50 IT – SEKTOR 2400
Sintaksa UPDATE naredbe
• Ažuriranje postojećih podataka u tabeli koristeći
UPDATE naredbu
• Svi redovi se ažuriraju kada ne postoji WHERE klauzula
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];
UPDATE employees
*
ERROR at line 1:
ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK)
violated - parent key not found
Brisanje redova iz tabele
DELETE (brisanje
DEPARTMENTS podataka iz tabele)
Dep. Dep.Name Loc.ID
NO
10 Administration 1700
20 Marketing 1800
DEPARTMENTS
30 Purchasing 1700
Dep. Dep.Name Loc.ID
40 Human Res. 2400
NO
50 IT 2400
10 Administration 1700
20 Marketing 1800
30 Purchasing 1700
40 Human Res. 2400
Sintaksa DELETE naredbe
• Brisanje postojećih podataka u tabeli koristeći
DELETE naredbu
• Svi redovi se brišu kada ne postoji WHERE klauzula
SQL> DELETE FROM departments;
27 rows deleted.
ROLLBACK to Savepoint B
ROLLBACK to Savepoint A
ROLLBACK
Implicitna obrada transakcija
• Automatski COMMIT se događa za jednu
do sljedećih okolnosti:
– DDL (Data Definition Language) izraz
– DCL (Data Control Language) izraz
– Normal izlaz iz SQL * Plus, bez
izričitog izdavanja COMMIT ili ROLLBACK
• Automatski ROLLBACK se događa kod
abnormalnog prestanka rada aplikacije
(npr. SQLTools) ili kvara sistema
Stanje podataka prije COMMIT i
ROLLBACK naredbi
• Prethodno stanje podataka moguće je vratiti
na početno stanje (ROLLBACK)
• Trenutni korisnik koji je napravio promjene
može pregledati rezultate promjena DML
naredbi putem SQL iskaza
• Drugi korisnici ne mogu vidjeti promjene
DML naredbi koje je izvršio trenutni korisnik
• Izmijenjeni redovi ne mogu se mijenjati od
strane drugih korisnika, sve dok trenutni
korisnik ne prihavati ili odbije trajno
prihvatiti načinjene promjene u bazi podataka
Stanje podataka poslije COMMIT
naredbe
• Promjene nad podacima se trajno mijenjaju
u bazi podataka
• Prethodno stanje podataka je trajno
izgubljeno
• Svi korisnici vide izvršene promjene nad
podacima
• Zaključani redovi se otključavaju i postaju
dostupni drugim korisnicima za promjenu
• Svi prethodno postavljeni SAVEPOINT-i se
brišu iz transkacije
Trajno prihvatanje izvršenih
promjena nad podacima
• Pravljene promjene nad podacima
SQL> UPDATE employees
2 SET department_id = 10
3 WHERE last_name = ‘Phenix’;
1 row updated.
Izraz Opis
INSERT Dodavanje novih redova u tabelu
UPDATE Modifikacija postojećih slogova u tabeli
DELETE Brisanje postojećih redova iz tabele
COMMIT Trajno prihvatanje svih nastalih promjena nad podacima
SAVEPOINT Omogućava ROLLBACK na SAVEPOINT marker
ROLLBACK Odbacije sve nastale promjene nad podacima
Manipulisanje sa podacima