ORACLE aragorn.pb.bialystok.pl/~aonisko Typy rozproszonych baz

advertisement
ORACLE
(Wykład 1)
aragorn.pb.bialystok.pl/~aonisko
Typy rozproszonych baz
danych
• Systemy typu klient-serwer (jeden serwer)
• Jednorodna rozproszona baza danych
(kilka serwerow, jeden system
zarzadzania baza danych)
• Niejednorodna rozproszona baza danych
(rozne oprogramowanie)
• Federacyjny system baz danych
Klient-serwer: Przykład
Serwer
Baza
danych
Wynik T1: tak lub nie
Wynik T2: tak lub nie
Klient
T1: sprawdz podany identyfikator
T2: aktualizuj stan konta
Systemy klient-serwer
Serwer
Baza
danych
Klient
Zarz dzanie danymi
Logika aplikacji
Zarz dzanie regułami
Logika prezentacji
ą
ą
Komunikacja
Komunikacja
Relacyjny SZBD - ORACLE
• Pierwszy komercyjny SZBD (1977)
• Etapy rozwoju ORACLE
–
–
–
–
faza pocz tkowa (1977-1984)
faza informacji dla zarz dzania MIS (1984-1988)
faza przetwarzania transakcji OLTP (1988-1992)
wersja 8.x - relacyjno-obiektowa
ą
ą
1
rodowisko ORACLE
U ytkownicy bazy danych
Administratorzy baz danych
ORACLE Forms
ORACLE Reports
Pro*SQL
SQL*Plus
PL/SQL
J dro SZBD
ą
Baza danych
SQL*DBA
Programi ci
U ytkownicy ko cowi
Ŝ
ś
ORACLE Graphics
ń
ORACLE TextRetrieval
Interakcja u ytkownika z baz
danych
Serwer
Sesja klienta
Słownik danych
• Struktura bazy danych
• Obiekty bazy danych
• Konta u ytkowników i ich uprawnienia
Ŝ
Baza
danych
Klient
Transakcje
USER_
SQL
ALL_
DBA_
PL/SQL
SELECT * FROM dictionary;
Java
SQL
PL/SQL
(Structured Query Language)
(Procedural Language/
Structured Query Language)
• Definiowanie danych (DDL:Data Definition
Language)
• Definiowanie zapyta (DQL: Data Query
Language)
• Modyfikowanie danych (DML: Data
Modification Language)
• Sterowanie danymi (DCL: Data Control
Language)
ń
• PL/SQL - j zyk o strukturze blokowej
ę
– bloki nazwane
– bloki anonimowe
– bloki podrz dne
ę
2
Struktura bloku w PL/SQL
[DECLARE
deklaracje]
Wykonanie bloku w PL/SQL
[DECLARE
deklaracje]
BEGIN
[EXCEPTION
obsługa wyj tków]
BEGIN
ą
END;
[EXCEPTION
obsługa wyj tków]
RUN
/
ą
START
@
END;
Struktura bloku w PL/SQL
Obsługa SQL w PL/SQL
SELECT
INSERT
UPDATE
DELETE
zmienne, stałe, kursory,
wyj tki zdefiniowane przez u ytkownika
ą
Ŝ
instrukcje j zyka SQL
instrukcje steruj ce PL/SQL
COMMIT
ROLLBACK
SAVEPOINT
ę
ą
Funkcje, operatory i pseudokolumny
dost pne w SQL
ę
działania, które maj by podj te w razie
wyst pienia bł dów
ą
ą
ć
ę
ę
Zmienne i stałe
ZMIENNA:
identyfikator typ_danych [NOT NULL] [:=wart_pocz | DEFAULT wart_pocz];
STAŁA:
Typy danych
• zmienna%TYPE
• tabela.kolumna%TYPE
• tabela%ROWTYPE
identyfikator CONSTANT typ_danych [:=wart_pocz | DEFAULT wart_pocz];
DECLARE
v_zmienna NUMBER(5);
v_nr NUMBER(3) NOT NULL := 10;
c_stala CONSTANT NUMBER(2) DEFAULT 13;
v_sprawdz BOOLEAN NOT NULL := TRUE;
v_imie VARCHAR2(15);
v_moje_imie v_imie%TYPE;
v_cena ksiazka.cena%TYPE;
ksiazki_record ksiazka%ROWTYPE;
3
Blok pl/sql - przykład
Reguły składniowe w PL/SQL
• instrukcje mog si ci gn przez
kilka linii (słowa kluczowe!)
• jednostki leksykalne mog by
separowane spacjami
• literały znakowe i datowe musz
by uj te w pojedynczy cudzysłów
• liczby mog by reprezentowane
przez warto ci proste lub notacj
wykładnicz (np. 2E5 = 200000)
ą
DECLARE
v_data DATE NOT NULL := SYSDATE;
v_data_str VARCHAR2(10);
BEGIN
v_data_str := v_data;
-- konwersja niejawna
v_data_str := TO_CHAR(v_data); -- konwersja jawna
END;
/* komentarz
dwuliniowy */
ę
ą
ą
ć
ą
ć
ą
ć
ę
ą
ć
ś
ę
ą
Instrukcja warunkowa
IF warunek THEN
instrukcja-1;
END IF;
Instrukcja warunkowa - przykład
IF warunek THEN
instrukcja-1;
ELSE
instrukcja-2;
END IF;
……...
IF v_cena > 100 THEN
RETURN (v_cena*1.1);
ELSIF v_cena >= 50 THEN
RETURN (v_cena*1.2);
ELSE
RETURN (v_cena*1.25);
END IF;
……….
IF warunek-1 THEN
instrukcja-1;
ELSIF warunek-2 THEN
instrukcja-2;
ELSE
instrukcja-3;
END IF;
Instrukcja iteracyjna LOOP
LOOP
WHILE warunek LOOP
instrukcje;
instrukcje;
EXIT [WHEN warunek];
END LOOP;
END LOOP;
Instrukcja FOR - przykład
DECLARE
v_licznik NUMBER(1) :=0;
v_ostatni NUMBER(1);
v_min NUMBER(1) := 1;
v_max NUMBER(1) := 5;
BEGIN
FOR i IN v_min..v_max LOOP
v_licznik := v_licznik + 1;
v_ostatni := i;
FOR licznik IN [REVERSE] min..max LOOP
instrukcje;
END LOOP;
END LOOP;
dbms_output.put_line(‘Ostatni indeks:’
|| TO_CHAR(v_ostatni) || ‘. Liczba petli:’
|| TO_CHAR(v_licznik));
END;
4
Instrukcja sekwencyjna NULL
NULL - brak akcji
DECLARE
i NUMBER(2) :=0;
BEGIN
……..
IF i > 10 THEN
dbms_output.put_line(‘i jest wi ksze od 10’);
ELSE
NULL;
END IF;
END;
ę
Manipulowanie danymi w
PL/SQL
BEGIN
UPDATE ksiazka
SET cena = 1.1*cena
WHERE isbn = ∥
END;
Przetwarzanie wyników
zapyta
SELECT lista
INTO nazwa_zmiennej | nazwa_rekordu
FROM tabela
WHERE warunek;
………….
BEGIN
SELECT MAX(cena)
INTO v_max
FROM ksiazka;
END;
Manipulowanie danymi w
PL/SQL
BEGIN
DELETE
FROM zamowiona_ksiazka
WHERE id_zamowienia = ∥
END;
5
Download