SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1

Similar documents
VRIJEDNOSTI ATRIBUTA

Naredbe za kontrolu toka

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Programiranje III razred

Prva recenica. Druga recenica.

12. Uskladištene procedure (Stored Procedures)

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Sberbank Business Online na Mozilla FireFox

VB komande. Programiranje 1

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Uvod u relacione baze podataka

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Uvod, varijable, naredbe, petlje

VEŽBA 5 do while petlja, switch case

Vežbe - XII nedelja PHP Doc

VHDLPrimeri Poglavlje5.doc

Šesti čas PL/SQL. Skraćenica za Procedural Language extension to SQL (proširenje SQL-a). Služi za složeniju i precizniju obradu podataka.

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

PROGRAMIRANJE. Amir Hajdar

Rad sa MySQL bazom podataka

JavaScript i HTML DOM

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Jezik Baze Podataka SQL. Jennifer Widom

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

9. RAD S DATOTEKAMA PODATAKA

Informacioni sistemi i baze podataka

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

dr. sc.. Josip Musić Originalne slideove izradio:

PKI Applet Desktop Application Uputa za instalaciju programske potpore

Uputa za instaliranje programske potpore za operativni sustav WINDOWS

Proceduralni mehanizmi za kontrolu integriteta relacione baze podataka

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Iskočni okviri (eng. popup boxes)

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se biti u mogućnosti: Opisati ograničenja Generisati i održavati ograničenja u bazi

RAČUNARSKI PRAKTIKUM II

Sintaksa VHDL jezika - podsjetnik -

Računarske osnove Interneta (SI3ROI, IR4ROI)

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

[] znači opciono; znači ili. Strana 3 od 5

Izrada VI laboratorijske vježbe

PARALELNO PROGRAMIRANJE

OSNOVE PROGRAMIRANJA

Visual Basic 6.0. Osnove VB. Uvod u računarstvo 1

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

SELECT CASE i FOR NEXT. Programiranje 1

Elektrotehnički fakultet Osijek Kneza Trpimira 2b. Stručni studij. Rent a Car. Projektni zadatak iz kolegija Baze podataka

Doc.dr.sc. GORAN KRALJEVIĆ

Numeričke metode i praktikum

CREATE DATABASE naziv-baze-podataka [IN naziv-dbspace]

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Blokovska struktura C++ programa ima četiri razine:

Upute za postavljanje Outlook Expressa

Seminar 3. Stored procedures. Global variables. Dynamic Execution. The OUTPUT clause. Cursors

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne.

Sadržaj predavanja 02. Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka(2/3) Cjelobrojni tip podataka(3/3) prec(short) prec(int) prec(long) int

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

IV SQL. Slika 1. SQL*Plus ikona. Slika 2. Dijalog provere identifikacije korisnika. Slika 3. Prozor SQL*Plus programa

Uputstvo za korišćenje logrotate funkcije

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

KREDITI ZA POLJOPRIVREDNIKE

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

GUI - događaji (Events) i izuzeci. Bojan Tomić

16. Sigurnije programiranje

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora).

MICHAEL JAKŠIĆ SIGURNOST WEB-STRANICA

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce)

KURSORI BAZE PODATAKA U ORACLE 11g

INSTALACIJA RAZVOJNOG OKRUŽENJA DEV-C++

Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

Što ćete naučiti. Internet općenito HTML CSS XML XHTML Javascript DOM DHTML PHP, ASP.NET

Što ćete naučiti. Internet općenito HTML CSS XML XHTML Javascript DOM DHTML. AJAX jquery PHP ASP.NET Ruby On Rails MS Silverlight FLASH, SMIL, SVG...

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

OSNOVE PROGRAMIRANJA

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2)

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

Moja naslovnica / Sveučilište u Zagrebu / Fakultet prometnih znanosti / Baze podataka / Opći dio / Izvanredni studenti - test za potpis

17. Semantička analiza i međureprezentacije

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević

Napadi umetanjem SQL koda

Shell programiranje. Damir Kirasić Škola otvorenog računarstva FER Zagreb

Cjenovnik usluga informacionog društva

Integritet u relacionim bazama podataka

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

vježbe. Slobodan Jelić

Operacijski sustavi. Laboratorijska vježba 2. Petra Lončar, mag. ing. el., asistent FESB, 2016.

VDSL modem Zyxel VMG1312-B10A/B30A

f2() f6() main() f3() f7() f4()

NAPREDNA BAZA PODATAKA ZA ADMINISTRACIJU KORISNIĈKIH RAĈUNA

Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam "Dr. Mijo Mirković" Marino Pereša. JavaScript. Završni rad. Pula, 2015.

Nizovi. Programiranje 1

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

Objektno orijentirano programiranje. Auditorne vježbe

Transcription:

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2 Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1

Baze podataka 2 Web: http://www.fpmoz.ba/gkraljevic Pitanja, primjedbe, dogovor za konzultacije... o E-mail: goran.kraljevic@hteronet.ba goran.kraljevic@sve-mo.ba BAZE PODATAKA 2 2

BAZE PODATAKA 2 3

Microsoft SQL Server: T-SQL T-SQL (Transact-SQL) BAZE PODATAKA 2 4

Lokalne varijable se deklariraju od strane korisnika korištenjem ključne riječi DECLARE. DECLARE @v_ime VARCHAR(25), @v_prezime VARCHAR(25), @v_datum_zaposlenja DATETIME, @v_placa NUMERIC(7,2)... BAZE PODATAKA 2 5

Globalne varijable su predefinirane od strane SQL sustava. Neke od najčešće korištenih globalnih varijabli su: o @@ERROR ova varijabla se često koristi za kontrolu uspješnog obavljanja pojedinih SQL instrukcija (ukoliko je SQL instrukcija uspješno obavljena vrijednost varijable je 0). o @@ROWCOUNT ova varijabla sadrži podatak o broju redova na koje djeluje posljednji SQL izraz. o @@IDENTITY ova varijabla sadrži podatak o posljednjoj generiranoj IDENTITY vrijednosti. BAZE PODATAKA 2 6

Vrijednost varijabli se pridjeljuje u sklopu SELECT izraza: SELECT @varijabla = SQL izraz DECLARE @v_sum_placa NUMERIC(7,2) SELECT @v_sum_placa = SUM(placa) FROM djelatnik SELECT 'Ukupna suma placa je: ' + convert(varchar(10), @v_sum_placa) BAZE PODATAKA 2 7

T-SQL Kontrola programskog toka BAZE PODATAKA 2 8

IF uvjet SQL izraz [ELSE IF uvjet SQL izraz] [ELSE SQL izraz] WHILE uvjet SQL izraz [BREAK] SQL izraz [CONTINUE] IF i ELSE uvjet pokreću izvršavanje samo jedne SQL naredbe. Ukoliko je potrebno u zavisnosti u uvjetnom izrazu pokrenuti više SQL naredbi, te naredbe treba definirati kao blok BEGIN END. Izvršavanje SQL naredbi unutar WHILE petlje može se kontrolirati primjenom naredbe prekida (BREAK) i nastavka izvršavanja (CONTINUE). BAZE PODATAKA 2 9

T-SQL rad sa kursorima: DECLARE naziv_kursora CURSOR FOR SELECT... OPEN naziv_kursora FETCH NEXT FROM naziv_kursora INTO @... WHILE @@FETCH_STATUS = 0 BEGIN... FETCH NEXT FROM naziv_kursora INTO @... END CLOSE naziv_kursora DEALLOCATE naziv_kursora BAZE PODATAKA 2 10

Kreiranje pohranjene procedure: CREATE PROCEDURE naziv_procedure {@parametar1 tip_podatka1} [OUTPUT] {@parametar2 tip_podatka2} [OUTPUT] [WITH {RECOMPILE ENCRYPTION}] AS SQL izrazi... ; Pohranjene procedure se koriste u prekompajliranom i optimiziranom obliku. Pri kreiranju procedure mogu se koristiti opcije RECOMPILE (proceduru je potrebno iznova kompajlirati pri svakom izvršavanju) i ENCRYPTION (sigurnosno kodiranje SQL procedure). BAZE PODATAKA 2 11

Poziv pohranjene procedure: EXECUTE (EXEC) naziv_procedure @parametar1=vrijednost1, @parametar2=vrijednost2,... Izvršavanje procedure završava kada se izvrši posljednja instrukcija u proceduri ili izvršenjem naredbe RETURN (RETURN znači bezuvjetan izlaz iz procedure). Za detekciju greške u izvršavanju pojedinog SQL izraza koristi se sistemska (globalna) varijabla @@ERROR. @@ERROR=0 znači da je SQL instrukcija ispravno obavljena, a ako nastupi greška, varijabla @@ERROR sadrži brojčani podatak (integer), koji predstavlja kod pogreške. Korisnički definirana greška: o RAISERROR ('Greška...',16,-1) BAZE PODATAKA 2 12

Kreiranje funkcije: CREATE FUNCTION naziv_funkcije ( {@parametar1 tip_podatka1} {@parametar2 tip_podatka2} ) RETURNS tip_podatka AS SQL izrazi... ; Napomena: Mora postojati najmanje jedan RETURN iskaz! BAZE PODATAKA 2 13

Kreiranje okidača (trigera): CREATE TRIGGER naziv_okidaca ON naziv_tablice FOR INSERT UPDATE DELETE AS SQL izrazi... ; IF UPDATE (naziv_atributa) Izraz kojim se unutar okidača kojeg je aktivirala UPDATE naredba provjerava da li je riječ o ažuriranju navedenog atributa unutar tablice. BAZE PODATAKA 2 14

Nakon nastupanja promjena u određenoj tablici zbog unosa, promjene ili brisanja podataka (INSERT, UPDATE ili DELETE), interni mehanizam baze podataka (SQL Server) stvara dvije privremene tablice: o inserted o deleted INSERT naredba: o Stvara se redak u tablici inserted. UPDATE naredba: o Stvara se redak u tablici deleted (stara vrijednost, prije update-a). o Stvara se redak u tablici inserted (nova vrijednost, poslije update-a). DELETE naredba: o Stvara se redak u tablici deleted. BAZE PODATAKA 2 15

Primjeri BAZE PODATAKA 2 16

Testna baza (napunjena testnim podacima... ) BAZE PODATAKA 2 17

Pohranjene procedure Primjer CREATE PROCEDURE povecaj_placu @p_id NUMERIC(5), @p_iznos NUMERIC(7,2) AS DECLARE @v_placa NUMERIC(7,2), @v_sifra_radmj VARCHAR(10) BEGIN SELECT @v_placa = placa, @v_sifra_radmj = sifra_radmj FROM djelatnik WHERE id_djelatnika = @p_id; IF NOT (@v_sifra_radmj='dir') AND @v_placa + @p_iznos > 3000 BEGIN RAISERROR('Potrebno provjeriti iznos place!',16,-1) END ELSE BEGIN UPDATE djelatnik SET placa = placa + @p_iznos WHERE id_djelatnika = @p_id; END END BAZE PODATAKA 2 18

Pohranjene procedure Primjer T-SQL Poziv pohranjene procedure: DECLARE @status INT EXEC @status = povecaj_placu 1, 100 IF @status=0 SELECT 'Ok!'; ELSE SELECT 'Greška!'; BAZE PODATAKA 2 19

Pohranjene procedure Primjer CREATE PROCEDURE insert_djelatnika @p_id_djelatnika NUMERIC(5), @p_ime VARCHAR(25), @p_prezime VARCHAR(25), @p_spol CHAR(2), @p_datum_zaposlenja DATETIME, @p_placa NUMERIC(7,2), @p_id_sefa NUMERIC(5), @p_sifra_opcine NUMERIC(5), @p_sifra_radmj VARCHAR(10) AS BEGIN IF EXISTS (SELECT 'x' FROM radno_mjesto WHERE sifra_radmj = @p_sifra_radmj) BEGIN 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); SELECT 'INSERT djelatnika uspješno izvršen!'; END ELSE RAISERROR('Ne postoji navedeno radno mjesto!',16,-1) END BAZE PODATAKA 2 20

Pohranjene procedure Primjer T-SQL Poziv pohranjene procedure: EXEC insert_djelatnika @p_id_djelatnika = 151, @p_ime = 'Ante', @p_prezime = 'Antić', @p_spol = 'M', @p_datum_zaposlenja = '2013-01-01', @p_placa = 1000, @p_id_sefa = 100, @p_sifra_opcine = 20, @p_sifra_radmj = 'IT-PROG'; BAZE PODATAKA 2 21

Funkcije Primjer CREATE FUNCTION placa_djelatnika (@p_id_djelatnika NUMERIC(5)) RETURNS NUMERIC AS BEGIN DECLARE @v_placa NUMERIC(7,2) SELECT @v_placa = placa FROM djelatnik WHERE id_djelatnika = @p_id_djelatnika; RETURN @v_placa; END T-SQL Poziv funkcije: DECLARE @p_id_djelatnika NUMERIC(5), @placa NUMERIC(7,2) EXEC @placa = placa_djelatnika @p_id_djelatnika = 1 SELECT 'Placa djelatnika iznosi: ' + convert(varchar(10), @placa); BAZE PODATAKA 2 22

Testna baza (proširena tablicom koju će puniti okidač... ) Okidač BAZE PODATAKA 2 23

Okidači Primjer CREATE TRIGGER audit_djelatnika ON djelatnik FOR INSERT, UPDATE AS DECLARE @id_djelatnika NUMERIC(5), @stara_placa NUMERIC(7,2), @nova_placa NUMERIC(7,2) BEGIN SELECT @id_djelatnika = id_djelatnika, @nova_placa = placa FROM inserted; SELECT @stara_placa = placa FROM deleted; IF UPDATE(placa) AND EXISTS (SELECT * FROM inserted) AND EXISTS (SELECT * FROM deleted) INSERT INTO DJELATNIK_AUDIT (id_djelatnika, stara_placa, nova_placa, datum, akcija) VALUES (@id_djelatnika, @stara_placa, @nova_placa, GETDATE(), 'UPDATE'); IF EXISTS (SELECT * FROM inserted) AND NOT EXISTS (SELECT * FROM deleted) INSERT INTO DJELATNIK_AUDIT (id_djelatnika, stara_placa, nova_placa, datum, akcija) VALUES (@id_djelatnika, @stara_placa, @nova_placa, GETDATE(), 'INSERT'); END BAZE PODATAKA 2 24

Baze podataka 2 Web: http://www.fpmoz.ba/gkraljevic Pitanja, primjedbe, dogovor za konzultacije... o E-mail: goran.kraljevic@hteronet.ba goran.kraljevic@sve-mo.ba BAZE PODATAKA 2 25