Slide 1

Слични документи
Kako spriječiti petlju

Introduction to Programming

Microsoft Word - MySQL_3.doc

Fakultet tehničkih nauka, Novi Sad Predmet: ISIBP

Introduction to Programming

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji

03 SUBP

01 SUBP

PDO

Upitni jezik SQL

Baza podataka

Web orijentirana rješenja u turizmu

Microsoft Word - WP_kolokvij_2_rjesenja.doc

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

PowerPoint Presentation

Microsoft PowerPoint - 6. Query Builder.pptx

Microsoft Word - SYLLABUS -Dinamicki

SPR , IV godina, VHDL – Ispitna pitanja

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

Microsoft Word - 405_Prodan_kon.doc

4. Веза између табела практичан рад 1. Повежите табеле Proizvodi и Proizvođači у бази података Prodavnica.accdb везом типа 1:N. 2. Креирајте табелу St

Programiranje 1

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Uvod u računarstvo 2+2

(Microsoft PowerPoint - 903_\216nidari\346_Java Persistence.pptx)

Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 17-1 Controlling User Access Davanje dozvole (grant

Kombinatorno testiranje

Inženjering informacionih sistema

No Slide Title

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Tutoring System for Distance Learning of Java Programming Language

Slide 1

Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 09 - this, static

Microsoft PowerPoint - Prve_i_druge_Vezbe.ppt [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

n50

Sveucilište u Zagrebu

Model podataka

PowerPoint Presentation

PowerPoint Presentation

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Microsoft Word - IP_Tables_programski_alat.doc

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

8

070-ALIP2-udzbenik.indb

SQL_zadaci sredjeni 2008 baze podataka

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

F84 Zahtjev za priznavanje inostrane visokoškolske kvalifikacije (zaokružiti) Application for academic recognition of foreign higher qualification (ci

Microsoft Word - 11 Pokazivaci

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

P11.3 Analiza zivotnog veka, Graf smetnji

PowerPoint Presentation

Introduction to Programming

Microsoft PowerPoint - podatkovni promet za objavu.pptx

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

SQL Agregacija Jennifer Widom

Modeliranje, implementacija i administracija baza podataka

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Uvod u računarstvo 2+2

Tutoring System for Distance Learning of Java Programming Language

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Introduction to Programming

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Staticki kriterijumi new-1.pptx

Microsoft PowerPoint - C-4-1

Школа Ј. Ј. Змај Свилајнац МЕСЕЧНИ ПЛАН РАДА ЗА СЕПТЕМБАР Школска 2018 /2019. Назив предмета: Информатика и рачунарство Разред: 5. Недељни број часова

[Р371] Пројектовање база података 2 [Р371] Пројектовање база података Саша Малков Саша Малков Универзитет у Београду Математички факултет 2018/2019 Те

Upute za korištenje EasyChair konferencijskog sustava HRO CIGRE 2019 Prijava referata Ako ste već koristili EasyChair na 13. Savjetovanju ili prije ta

PASCAL UVOD 2 II razred gimnazije

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Logičke izjave i logičke funkcije

PHP kod

P1.2 Projektovanje asemblera

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Objektno orjentirano programiranje 2P

Opticum HD - Uputstvo za skeniranje kanala.docx

3.Kontrlne (upravlja~ke) strukture u Javi

2

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

PowerPoint Presentation

Programiranje za UNIX Okruženje unix procesa

pricalica.PDF

KDP

Programski jezik C

12 Stanje

Algoritmi

Funkcije predavač: Nadežda Jakšić

Web programiranje i primjene - Osnovni pojmovi WEB tehnologije korišteni u kolegiju

KATUŠIĆ ANTONIO.pdf

Транскрипт:

SVEUČILIŠTE U MOSTARU FAKULTET STROJARSTVA I RAČUNARSTVA SUSTAVI BAZA PODATAKA Doc.dr.sc. GORAN KRALJEVIĆ SUSTAVI BAZA PODATAKA 1

Sustavi baza podataka Web: http://www.uni-mo.ba/~goran Pitanja, primjedbe, dogovor za konzultacije... o E-mail: goran.kraljevic@hteronet.ba SUSTAVI BAZA PODATAKA 2

SUSTAVI BAZA PODATAKA 3

Oracle: (Procedural Language / Structured Query Language) SUSTAVI BAZA PODATAKA 4

blok DECLARE v_varijabla VARCHAR2(5); SELECT naziv_kolone INTO v_varijabla FROM naziv_tablice; EXCEPTION WHEN naziv_iznimke THEN... END; SUSTAVI BAZA PODATAKA 5

Tipovi varijabli mogu biti definirani eksplicitno ili implicitno, prema tipovima atributa u relacijama baze podataka. DECLARE END; v_ime VARCHAR2(25); v_prezime djelatnik.prezime%type; v_datum_zaposlenja DATE := '01.01.2013'; v_placa NUMBER(7,2) := 0;...... SUSTAVI BAZA PODATAKA 6

SELECT izraz u -u: DECLARE END; v_sum_placa NUMBER(7,2); SELECT SUM(placa) INTO v_sum_placa FROM djelatnik; DBMS_OUTPUT.PUT_LINE ('Ukupna suma placa je: ' TO_CHAR(v_sum_placa)); SUSTAVI BAZA PODATAKA 7

U bloku je moguće koristiti sljedeće atribute (u nekom uvjetu) za verificiranje rezultata DML izraza (SELECT, INSERT, UPDATE, DELETE) o SQL%ROWCOUNT o SQL%FOUND o SQL%NOTFOUND o SQL%ISOPEN SUSTAVI BAZA PODATAKA 8

Kontrola programskog toka IF uvjet THEN...; [ELSIF uvjet THEN...;] [ELSE...;] END IF; LOOP... ;... ; EXIT [WHEN uvjet]; END LOOP; FOR brojac IN od..do LOOP... ;... ; END LOOP; WHILE uvjet LOOP... ;... ; END LOOP; SUSTAVI BAZA PODATAKA 9

rad sa kursorima DECLARE CURSOR naziv_kursora IS SELECT... ; OPEN naziv_kursora; LOOP FETCH naziv_kursora INTO... ; EXIT WHEN... ; END LOOP; CLOSE naziv_kursora; END ; SUSTAVI BAZA PODATAKA 10

Rukovanje iznimkama (exceptions): EXCEPTION WHEN iznimka1 [OR iznimka2...] THEN...;...; [WHEN iznimka3 THEN...;...; ] [WHEN OTHERS THEN...;...; ] o Primjeri predefiniranih iznimki: NO_DATA_FOUND, TOO_MANY_ROWS, ZERO_DIVIDE SUSTAVI BAZA PODATAKA 11

RAISE_APPLICATION_ERROR... SQL izraz... IF SQL%NOTFOUND THEN RAISE_APPLICATION_ERROR (-20000, 'Greška...'); END IF;...... EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR (-20000, 'Greška...'); END; SUSTAVI BAZA PODATAKA 12

Anonimni blok: Procedura: Funkcija: [DECLARE]... ; [EXCEPTION] END; PROCEDURE naziv IS... ; [EXCEPTION] END; FUNCTION naziv RETURN tip_pod IS... ; RETURN vrijednost; [EXCEPTION] END; SUSTAVI BAZA PODATAKA 13

Kreiranje pohranjene procedure: CREATE [OR REPLACE] PROCEDURE naziv_procedure [(parametar1 [IN OUT IN OUT] tip_podatka1, parametar2 [IN OUT IN OUT] tip_podatka2,...)] IS AS blok; Poziv pohranjene procedure: o EXECUTE naziv_procedure (parametri...); o naziv_procedure (parametri...); SUSTAVI BAZA PODATAKA 14

Kreiranje funkcije: CREATE [OR REPLACE] FUNCTION naziv_funkcije [(parametar1 [IN] tip_podatka1, parametar2 [IN] tip_podatka2,...)] RETURN tip_podatka IS AS blok; Napomena: o blok mora imati najmanje jedan RETURN iskaz! SUSTAVI BAZA PODATAKA 15

Procedura ili funkcija? SUSTAVI BAZA PODATAKA 16

Kreiranje okidača (trigera): CREATE [OR REPLACE] TRIGGER naziv_okidaca BEFORE AFTER INSERT UPDATE (OF naziv_atributa) DELETE ON naziv_tablice [FOR EACH ROW] blok; o o Ukoliko je riječ o okidaču koji se aktivira UPDATE naredbom, moguće je definirati određene atribute unutar tablice čija promjena će aktivirati okidač (UPDATE OF naziv_atributa). FOR EACH ROW ako se navede ova opcija, akcije unutar okidača će se izvršiti za svaku n-torku na koju je djelovala operacija koja je aktivirala okidač. SUSTAVI BAZA PODATAKA 17

U okidaču je moguće provjeriti (u nekom uvjetu) o kojoj akciji je riječ: o INSERTING, UPDATING, DELETING Ukoliko je okidač definiran na razini retka, moguće je koristiti referencu na vrijednosti u retku prije akcije (INSERT, UPDATE, DELETE) i poslije akcije: o :OLD o :NEW SUSTAVI BAZA PODATAKA 18

Primjeri SUSTAVI BAZA PODATAKA 19

Testna baza (napunjena testnim podacima... ) SUSTAVI BAZA PODATAKA 20

Primjer (kursor) DECLARE CURSOR djelatnik_cursor IS SELECT ime, prezime, placa, datum_zaposlenja FROM djelatnik; v_ime VARCHAR2(25); v_prezime VARCHAR2(25); v_placa NUMBER(7,2); v_datum_zaposlenja DATE; OPEN djelatnik_cursor; LOOP FETCH djelatnik_cursor INTO v_ime, v_prezime, v_placa, v_datum_zaposlenja; EXIT WHEN djelatnik_cursor%notfound; IF v_placa > 1200 AND v_datum_zaposlenja >= '1.1.2000' THEN DBMS_OUTPUT.PUT_LINE (v_ime ' ' v_prezime ' ima plaću od ' TO_CHAR(v_placa) ' KM, a u tvrtki je od: ' TO_CHAR (v_datum_zaposlenja, 'dd.mm.yyyy')); END IF; END LOOP; CLOSE djelatnik_cursor; END; SUSTAVI BAZA PODATAKA 21

Pohranjene procedure Primjer CREATE OR REPLACE PROCEDURE povecaj_placu (p_id NUMBER, p_iznos NUMBER) IS v_placa NUMBER(7,2); v_sifra_radmj VARCHAR2(10); SELECT placa, sifra_radmj INTO v_placa, v_sifra_radmj FROM djelatnik WHERE id_djelatnika = p_id; IF NOT (v_sifra_radmj='dir') AND v_placa + p_iznos > 3000 THEN RAISE_APPLICATION_ERROR (-20999, 'Potrebno provjeriti iznos place!'); END IF; UPDATE djelatnik SET placa = placa + p_iznos WHERE id_djelatnika = p_id; END; SUSTAVI BAZA PODATAKA 22

Pohranjene procedure Primjer CREATE OR REPLACE PROCEDURE insert_djelatnika (p_id_djelatnika NUMBER, p_ime VARCHAR2, p_prezime VARCHAR2, p_spol CHAR, p_datum_zaposlenja DATE, p_placa NUMBER, p_id_sefa NUMBER, p_sifra_opcine NUMBER, p_sifra_radmj VARCHAR2) IS v_dummy VARCHAR2(10); SELECT 'x' INTO v_dummy FROM radno_mjesto WHERE sifra_radmj = p_sifra_radmj; INSERT INTO djelatnik (id_djelatnika, ime, prezime, spol, datum_zaposlenja, placa, id_sefa, sifra_opcine, sifra_radmj) VALUES (p_id_djelatnika, p_ime, p_prezime, p_spol, p_datum_zaposlenja, p_placa, p_id_sefa, p_sifra_opcine, p_sifra_radmj); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Ne postoji navedeno radno mjesto!'); END; SUSTAVI BAZA PODATAKA 23

Funkcije Primjer CREATE OR REPLACE FUNCTION placa_djelatnika (p_id_djelatnika IN djelatnik.id_djelatnika%type) RETURN NUMBER IS v_placa djelatnik.placa%type :=0; SELECT placa INTO v_placa FROM djelatnik WHERE id_djelatnika = p_id_djelatnika; RETURN v_placa; END; Poziv funkcije: DECLARE id NUMBER(5) := 1; placa NUMBER(7,2); placa := placa_djelatnika (id); DBMS_OUTPUT.PUT_LINE('Placa djelatnika ' id ' iznosi: ' placa); END; SUSTAVI BAZA PODATAKA 24

Testna baza (proširena tablicom koju će puniti okidač... ) Okidač SUSTAVI BAZA PODATAKA 25

Okidači Primjer CREATE OR REPLACE TRIGGER audit_djelatnika AFTER INSERT OR UPDATE OF placa ON djelatnik FOR EACH ROW IF INSERTING THEN INSERT INTO DJELATNIK_AUDIT (id_djelatnika, stara_placa, nova_placa, datum, akcija) VALUES (:NEW.id_djelatnika, :OLD.placa, :NEW.placa, SYSDATE, 'INSERT'); ELSE INSERT INTO DJELATNIK_AUDIT (id_djelatnika, stara_placa, nova_placa, datum, akcija) VALUES (:NEW.id_djelatnika, :OLD.placa, :NEW.placa, SYSDATE, 'UPDATE'); END IF; END; SUSTAVI BAZA PODATAKA 26

Okidači Primjer Obavljanje korektivne akcije preko okidača (trigera) koja bazu podataka dovodi u konzistentno stanje (referencijalni integritet!) CREATE OR REPLACE TRIGGER cascade_update AFTER UPDATE OF sifra_odjela ON odjel FOR EACH ROW UPDATE radno_mjesto SET radno_mjesto.sifra_odjela=:new.sifra_odjela WHERE radno_mjesto.sifra_odjela=:old.sifra_odjela; END; SUSTAVI BAZA PODATAKA 27

Sustavi baza podataka Web: http://www.uni-mo.ba/~goran Pitanja, primjedbe, dogovor za konzultacije... o E-mail: goran.kraljevic@hteronet.ba SUSTAVI BAZA PODATAKA 28