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