Bazy danych - Wkuwanko.pl

Transkrypt

Bazy danych - Wkuwanko.pl
Plan wykładu
• Sekwencje
• Wyzwalacze
Bazy danych
•
•
•
•
Wykład 9: Programowanie aplikacji baz
danych po stronie serwera
Bloki anonimowe
Funkcje
Procedury
Pakiety
Małgorzata Kr towska
Katedra Oprogramowania
e-mail: [email protected]
Bazy danych (studia dzienne)
Perspektywy cd
2
Zł czenia tabel
CREATE [ OR REPLACE] VIEW nazwa_perspektywy
[kolumna1, kolumna2, ...]
AS zapytanie
WITH READ ONLY;
• select * from emp, dept
where emp.deptno=dept.deptno;
– select *
from emp NATURAL JOIN dept;
– select *
from emp JOIN dept USING (deptno);
• ka dy uprawniony u ytkownik mo e tylko ogl da dane o
pracownikach bez mo liwo ci wstawiania, modyfikowania czy
usuwania wierszy
•
Select prac.ename, kier.ename as mgr
from emp prac, emp kier
where prac.mgr=kier.empno;
– Select prac.ename, kier.ename as mgr
» from emp prac JOIN emp kier ON prac.mgr=kier.empno;
Bazy danych (studia dzienne)
3
Bazy danych (studia dzienne)
4
Zł czenia zewn trzne
•
•
Powtórzenie:
Zł czenie zewn trzne rozszerza rezultat prostego zł czenia o te wiersze z
jednej tabel, dla których w trakcie zł czania nie znaleziono odpowiadaj cych im
wierszy w drugiej tabeli.
•
SQL> select ename, dept.deptno, dname from emp, dept
where emp.deptno (+) =dept.deptno and dept.deptno in (30,40);
ENAME
DEPTNO DNAME
•
Zł czenia zewn trzne cd
• Zł czenie zewn trzne mo na realizowa równie w oparciu o
struktur LEFT JOIN, RIGHT JOIN, FULL JOIN
• Przykład. Wypisz wszystkich pracowników podaj c dla ka dgo z
nich nazw działu, w którym pracuje.
Select empno, ename, dname
from emp left join dept on emp.deptno=dept.deptno;
---------- ---------- -------------ALLEN
30 SALES
BLAKE
30 SALES
MARTIN
30 SALES
JAMES
30 SALES
TURNER
30 SALES
WARD
30 SALES
40 OPERATIONS
Bazy danych (studia dzienne)
wypisuje wszystkich pracowników, gdy pracownik nie ma
przypisanego działu w miejsce dname pojawia si warto
5
Zł czenia zewn trzne cd
Bazy danych (studia dzienne)
NULL
6
Struktura bloku w PL/SQL
• Przykład Wypisz wszystkie działy, dla ka dego z nich podaj c
sumaryczne zarobki zatrudnionych w nim pracowwników.
[DECLARE
deklaracje]
Select dept.deptno, dname, sum(sal)
from emp right join dept on emp.deptno=dept.deptno
group by dept.deptno, dname;
– gdy w dziale nie ma adnego pracownika w pozycji Sum (sal)
b dzie warto NULL
BEGIN
• Przykład
[EXCEPTION
obsługa wyj tków]
Select empno, ename, dname
from emp full join dept on emp.deptno=dept.deptno;
– poł czenie LEFT JOIN i RIGHT JOIN - zostan wypisane
departamenty bez pracowników i pracownicy bez departamentów.
Bazy danych (studia dzienne)
END;
7
Bazy danych (studia dzienne)
8
Wykonanie bloku w PL/SQL
[DECLARE
deklaracje]
BEGIN
[EXCEPTION
obsługa wyj tków]
Struktura bloku w PL/SQL
START nazwa_pliku
@nazwa_pliku
zmienne, stałe, kursory,
wyj tki zdefiniowane przez u ytkownika
Uruchomienie bloku
załadowanego do bufora
instrukcje j zyka SQL
instrukcje steruj ce PL/SQL
END;
/
RUN
/
Bazy danych (studia dzienne)
działania, które maj by podj te w razie
wyst pienia bł dów
9
Bazy danych (studia dzienne)
Zmienne i stałe
10
Typy danych
ZMIENNA:
• zmienna%TYPE
• tabela.kolumna%TYPE
• tabela%ROWTYPE
identyfikator typ_danych [NOT NULL] [:=wart_pocz | DEFAULT wart_pocz];
STAŁA:
identyfikator CONSTANT typ_danych [:=wart_pocz | DEFAULT wart_pocz];
Bazy danych (studia dzienne)
11
Bazy danych (studia dzienne)
12
Instrukcja warunkowa
IF warunek THEN
instrukcja-1;
END IF;
Instrukcja iteracyjna LOOP
IF warunek THEN
instrukcja-1;
ELSE
instrukcja-2;
END IF;
LOOP
WHILE warunek LOOP
instrukcje;
instrukcje;
EXIT [WHEN warunek];
END LOOP;
END LOOP;
IF warunek-1 THEN
instrukcja-1;
ELSIF warunek-2 THEN
instrukcja-2;
ELSE
instrukcja-3;
END IF;
Bazy danych (studia dzienne)
FOR licznik IN [REVERSE] min..max LOOP
instrukcje;
END LOOP;
13
Bazy danych (studia dzienne)
14
Obsługa wyj tków
Przetwarzanie wyników zapyta
SELECT lista
INTO nazwa_zmiennej | nazwa_rekordu
FROM tabela;
• Wyst pienie bł du systemu ORACLE
– wyj tki predefiniowane
– wyj tki nie-predefiniowane
• Jawne wywołanie sytuacji wyj tkowej przez
u ytkownika przez instrukcj RAISE
Bazy danych (studia dzienne)
15
Bazy danych (studia dzienne)
16
Sekwencje
Sekwencje
• Obiekty bazy danych u ywane do generowania
unikatowych warto ci (zwykle na potrzeby kluczy
głównych)
• Dost p do kolejnych warto ci umo liwiaj pseudokolumny
CREATE SEQUENCE nazwa_sekwencji
[ INCREMENT BY warto
| START WITH warto
| {MAXVALUE warto | NOMAXVALUE}
| {MINVALUE warto | NOMINVALUE }
| {CYCLE | NOCYCLE } ]
– NEXTVAL (zwraca warto zwi kszon w kolejnym kroku)
– CURVAL (zwraca bie ac warto )
Bazy danych (studia dzienne)
17
Bazy danych (studia dzienne)
Sekwencje
Wyzwalacze
Procedury składowane w bazie danych, automatycznie
uruchamiane przez system przy wyst pieniu okre lonego
zdarzenia w bazie danych
ALTER SEQUENCE nazwa_sekwencji
U ycie: tworzenie niestandardowych wi zów integralno ci,
zło onych funkcji monitoruj cych działania u ytkowników,
...
[ INCREMENT BY warto
| {MAXVALUE warto | NOMAXVALUE}
| {MINVALUE warto | NOMINVALUE }
| {CYCLE | NOCYCLE } ]
Bazy danych (studia dzienne)
18
19
Bazy danych (studia dzienne)
20
Tworzenie wyzwalaczy
Wyzwalacze
(liczba wykonanych akcji)
CREATE OR REPLACE
TRIGGER nazwa_wyzwalacza
{ BEFORE | AFTER | INSTEAD OF }
{ DELETE | INSERT | UPDATE
[ OF kolumna, [, kolumna ] … ] }
[ OR { DELETE | INSERT | UPDATE
[ OF kolumna, [, kolumna ] … ] } ]
ON tabela
[ FOR EACH ROW [ WHEN (warunek) ] ]
blok pl/sql
• Wyzwalacze wierszowe: akcja wykonywana jest tyle razy,
ile jest wierszy, których dotyczy polecenie aktywuj ce
wyzwalacz
• Wyzwalacze poleceniowe: akcja wykonywana jest tylko
jeden raz, niezale nie od ilo ci wierszy, których dotyczy
polecenie aktywuj ce wyzwalacz
Bazy danych (studia dzienne)
21
Rodzaje wyzwalaczy
(czas wykonania)
Bazy danych (studia dzienne)
22
Stare i nowe warto ci wierszy
• Wyzwalacze przeprowadzaj ce okre lon akcj przed
wykonaniem polecenia, które aktywizuje wyzwalacz
• Wyzwalacze przeprowadzaj ce akcj po wykonaniu
polecenia, które aktywizuje wyzwalacz
INSERT
new
UPDATE
new, old
DELETE
old
:identyfikator.kolumna
Bazy danych (studia dzienne)
23
Bazy danych (studia dzienne)
24
Wł czanie i wył czanie wyzwalaczy
Modyfikowanie warto ci
ALTER TRIGGER nazwa_wyzwalacza
{ ENABLE | DISABLE}
BEFORE
Mo na zmienia warto ci “new”
AFTER
Nie mo na zmienia warto ci “new”
Bazy danych (studia dzienne)
25
ALTER TRIGGER nazwa_wyzw ENABLE;
ALTER TRIGGER nazwa_wyzw DISABLE;
Bazy danych (studia dzienne)
Podprogramy
26
Składniki podprogramu
Nagłówek podprogramu
• Procedury do przeprowadzenia akcji
• Funkcje do obliczania warto ci
• Pakiety do zbierania logicznie powi zanych procedur i
funkcji
[deklaracje]
BEGIN
[EXCEPTION
wyj tków]
END;
obsługa
Bazy danych (studia dzienne)
27
Bazy danych (studia dzienne)
28
Podprogramy
Podprogramy
[CREATE OR REPLACE]
FUNCTION nazwa_funkcji
[(parametr [, parametr … ] )]
RETURN nazwa_typu IS
[deklaracje]
BEGIN
[CREATE OR REPLACE]
PROCEDURE nazwa_procedury
[ (parametr [, parametr … ] )] IS
[deklaracje]
BEGIN
[EXCEPTIONS
obsługa wyj tków]
[EXCEPTIONS
obsługa wyj tków]
END [nazwa_procedury];
END [nazwa_funkcji];
Bazy danych (studia dzienne)
29
30
Wywoływanie procedur/funkcji
Tryby parametrów podprogramów
rodowisko
Bazy danych (studia dzienne)
Argument IN
Argument OUT
Argument IN OUT
EXECUTE nazwa_procedury[(parametry)]
[deklaracje]
EXECUTE zmienna:= nazwa_funkcji[(parametry)]
BEGIN
[EXCEPTION
obsługa wyj tków]
END;
Bazy danych (studia dzienne)
31
Bazy danych (studia dzienne)
32
Wywoływanie procedur/funkcji - przykład
Specyfikacja pakietu
CREATE [OR REPLACE]
PACKAGE nazwa_pakietu AS
deklaracje publiczne
specyfikacje podprogramów
END;
EXECUTE mod_cene(1, 5);
VARIABLE g_vat NUMBER
EXECUTE :g_vat := wyznacz_VAT(1);
PRINT g_vat
Bazy danych (studia dzienne)
33
Tworzenie ciała pakietu
CREATE [ OR REPLACE ]
PACKAGE BODY nazwa_pakietu AS
deklaracje prywatne
definicje podprogramów
[ BEGIN
instrukcje inicjalizuj ce pakietu]
END;
Bazy danych (studia dzienne)
35
Bazy danych (studia dzienne)
34

Podobne dokumenty