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