bazy danych - robert chwastek

Upload: steven-suryajaya

Post on 18-Oct-2015

66 views

Category:

Documents


0 download

DESCRIPTION

Bazy Danych - Robert Chwastek

TRANSCRIPT

  • 5/28/2018 Bazy Danych - Robert Chwastek

    1/81

    Robert Chwastek

    Bazy danych

  • 5/28/2018 Bazy Danych - Robert Chwastek

    2/81

    Bazy danych Robert Chwastek

    2

    w Krakowie.

    Copyright (c) Robert Chwastek, Krakw 1996.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    3/81

    Bazy danych Robert Chwastek

    3

    1.

    E ......................................................... ........................................................... ........................ 5

    1.1. DEFINICJA BAZY DANYCH...............................................................................................................................................51.2. S ...........................................................................................................................61.3. TRANSAKCJE ..................................................................................................................................................................61.4. J ........................................................................................................................7

    2. TYPY DANYCH ...............................................................................................................................................................8

    2.1. SPIS TYPW DANYCH......................................................................................................................................................82.2. TYP NUMERYCZNY .........................................................................................................................................................82.3. KONWERSJE TYPW .....................................................................................................................................................102.4. W .........................................................................................................................................................10

    3. MODEL RELACYJNY..................................................................................................................................................12

    3.1. STRUKTURY DANYCH W MODELU RELACYJNYM...........................................................................................................123.2. R SQL ......................................................... ............................................................ ........................... 133.3. S SQL ............................................................ ............................................................ ................. 14

    3.3.1. Definicje podstawowe.......................................................... ................................................. ................................. 14

    3.3.2. Rozkaz CREATE TABLE....................................................... .......................................................... ....................... 15

    3.3.3. Rozkaz DROP .......................................................... .................................................... .......................................... 163.3.4. Rozkaz INSERT..................................................... ....................................................... .......................................... 17

    3.3.5. Rozkaz DELETE ........................................................... ........................................................ ................................. 18

    3.3.6. Rozkaz CREATE SEQUENCE .................................................... .................................................... ....................... 19

    3.3.7. Rozkaz SELECT ......................................................... ................................................... ......................................... 21

    3.3.8. Rozkaz UPDATE............................................................. ...................................................... ................................. 22

    3.3.9. Rozkaz RENAME ..................................................... ....................................................... ....................................... 23

    3.3.10. Rozkaz ALTER TABLE ................................................... ........................................................... ....................... 24

    3.3.11. Rozkaz CREATE INDEX ..................................................................................................................................25

    3.3.12. Rozkaz CREATE VIEW .................................................... .................................................. .............................. 27

    3.3.13. Rozkaz COMMIT........................................................ ..................................................... ................................. 28

    3.3.14. Rozkaz ROLLBACK............................... ............................................................ ............................................... 28

    3.3.15. Rozkaz SAVEPOINT........... ........................................................... ............................................ ....................... 283.3.16. Rozkaz SET TRANSACTION.................................................... ................................................. ....................... 29

    3.4. OPERACJE RELACYJNE..................................................................................................................................................303.4.1. Selekcja ........................................................... ............................................................ ........................................... 30

    3.4.2. Projekcja.................. ............................................................ ........................................................... ....................... 31

    3.4.3. Produkt ..................................................... ............................................................ .............................................. ...32

    3.4.4.

    ..............................................................................................................................................................32

    3.4.5.

    ........................................................ ............................................................ ...................... 33

    3.4.6. Grupowanie ........................................................... .................................................... ............................................ 34

    3.4.7.

    ..................................................................................................................35

    3.5. PODZAPYTANIA ............................................................................................................................................................353.6. WIDOKI (PERSPEKTYWY)..............................................................................................................................................373.7. TRANSAKCJE ................................................................................................................................................................38

    3.8. NORMALIZACJA RELACJI ..............................................................................................................................................383.8.1. Cele normalizacji..... ........................................................... ............................................................ ....................... 38

    3.8.2. Pierwsz

    ............................................................ ............................................................ ............. 39

    3.8.3. Definicje pomocnicze... ............................................................ ................................................................ .............. 40

    3.8.4.

    ...................................................... ............................................................ ....................... 44

    3.8.5. .................................................... ............................................................ ....................... 46

    3.8.6. Czwarta pos

    ................................................... ............................................................ ....................... 47

    3.8.7.

    ...........................................................................................................................................48

    3.8.8. Podsumowanie.... ........................................................... .............................................. .......................................... 48

    4.

    IA..........................................................................................................................................50

    4.1. OPERATORY .................................................................................................................................................................504.1.1. Operatory arytmetyczne............................................ ............................................................ ................................. 50

    4.1.2. Operatory znakowe...................................................... .................................................. ........................................ 50

    4.1.3. Operatory porwnania .......................................................... ........................................... ..................................... 51

    4.1.4. Operatory logiczne .......................................................... ..................................................... ................................. 52

    4.1.5.

    ...................................................... ............................................................ ...................... 53

  • 5/28/2018 Bazy Danych - Robert Chwastek

    4/81

    Bazy danych Robert Chwastek

    4

    4.2. W ........................................................ ............................................................ ............................................. 534.3. WARUNKI.................................................. ............................................................ ....................................................... 55

    5. STANDARDOWE FUNKC

    ...................................................... ....................................................... 57

    5.1. FUNKCJE NUMERYCZNE .......................................................... ............................................................ ......................... 575.2. FUNKCJE ZNAKOWE....................................................... ............................................................ ................................... 575.3. FUNKCJE GRUPOWE....................................................... ............................................................ ................................... 595.4. FUNKCJE KONWERSJI..................................................... ............................................................ ................................... 605.5. FUNKCJE OPERACJI NA DATACH ........................................................ ............................................................ ............... 615.6. INNE FUNKCJE ..................................................... ............................................................ ............................................. 635.7. FORMATY ZAPISU DANYCH...................................................... ............................................................ ......................... 64

    5.7.1. Formaty numeryczne ....................................................... .................................................. .................................... 64

    5.7.2. Formaty dat .................................................... .......................................................... ............................................. 64

    6. PROGRAMOWANIE PROCEDURALNE - PL/SQL.................................................................................................66

    6.1. WPROWADZENIE ........................................................... ............................................................ ................................... 666.2. STRUKTURA BLOKU....................................................... ............................................................ ................................... 676.3. PROCEDURY I FUNKCJE ........................................................... ............................................................ ......................... 676.4. KURSORY.................................................. ............................................................ ....................................................... 686.5. REKORDY.................................................. ............................................................ ....................................................... 70

    6.6. O

    ........................................................ ............................................................ ................................... 716.6.1. Informacje podstawowe......... ............................................................ .......................................... .......................... 716.6.2.

    .................................................... ............................................................ ......................... 73

    6.6.3.

    ................................................... ............................................................ ................................... 73

    6.6.4. ........................................................ ....................................................... 74

    6.7. R PL/SQL ....................................................... ............................................................ ....................... 756.7.1. Rozkaz OPEN ......................................................... ..................................................... .......................................... 75

    6.7.2. Rozkaz CLOSE................................................ ............................................................ ........................................... 76

    6.7.3. Rozkaz FETCH ..................................................... ........................................................ ......................................... 76

    6.7.4. Rozkaz SELECT ... INTO......................................................... .................................................... .......................... 77

    6.7.5. Rozkaz IF ........................................................ ........................................................ ............................................... 77

    6.7.6. Rozkaz LOOP ................................................... ........................................................... .......................................... 78

    6.7.7. Rozkaz EXIT .................................................... .......................................................... ............................................ 80

    6.7.8. Rozkaz GOTO................................................... ........................................................... .......................................... 80

    7. LITERATURA................................................................................................................................................................ 81

  • 5/28/2018 Bazy Danych - Robert Chwastek

    5/81

    Bazy danych Robert Chwastek

    5

    1.

    1.1. Definicja bazy danychW pewnym uproszczeniu przez

    danych, a przez system bazy danych

    rozumiany jako:

    jest opis semantyki (znaczenia) danych, przechowywanych w bazie. System bazy danych modelu danych. Przez model danych rozumiemy rzeczywistego, istotnych z punktu widzenia danego zastosowania tworzy schemat bazydanych. Baza danych jest modelem logicznie spjnym celowi. W

    aplikacjami tym celu aplikacje.

    Schemat jest opisem struktury (formatu) przechowywanych danych oraz wzajemnych

  • 5/28/2018 Bazy Danych - Robert Chwastek

    6/81

    Bazy danych Robert Chwastek

    6

    1.2. danych (SZBD) jest to zestaw programw

    jest oprogramowaniem oglnego przeznaczenia. System bazy danych

    1.3. Transakcje

    przypadku niepowodzenia ktrejkolwiek z nich wycofuje instrukcje uprzednio wykonane.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    7/81

    Bazy danych Robert Chwastek

    7

    1.4.

    definiowanie struktury danych przechowywanych w bazie, czyli tworzenie schematuimplementacyjnego

    transakcjami (np. zatwierdzanie lub wycofywanie)

    zgodnych z podanymi warunkami

  • 5/28/2018 Bazy Danych - Robert Chwastek

    8/81

    Bazy danych Robert Chwastek

    8

    2. Typy danych

    2.1. Spis typw danych

    Typ Opis

    char(size)

    character Synonim do charvarchar(size) W aktualnej wersji ORACLEa jest to synonim do char, konieczne jest

    date Poprawne daty z zakresu 1 stycznia 4712 p.n.e. do 31 grudnia 4712 n.e.

    long

    long varchar synonim do longraw(size)

    long raw szesnastkowej.

    rowid przechowywana, ale obliczana na podstawie informacji o fizycznym

    ROWIDTOCHAR.

    number 10-129 do 9.99 * 10124

    2.2. Typ numeryczny

    trzech sposobw:

    number number (precyzja) number (precyzja, skala)

  • 5/28/2018 Bazy Danych - Robert Chwastek

    9/81

    Bazy danych Robert Chwastek

    9

    -84 do 127.

    W momencie definiowania kolumny numerycznej dobrym zwyczajem jest

    9.87E-2 oznacza 9.87 * 10-2.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    10/81

    Bazy danych Robert Chwastek

    10

    Specyfikacja Typ Precyzja Skala

    number number 38 nullnumber(*) number 38 nullnumber(*, s) number 38 s

    number(p) number p 0number(p,s) number p sdecimal number 38 0decimal(*) number 38 0decimal(*, s) number 38 sdecimal(p) number p 0decimal(p, s) number p sinteger number 38 0smallint number 38 0

    float number 38 nullfloat(*) number 38 nullfloat(b) number b nullreal number 63 binary (18 decimal) nulldouble precision number 38 null

    2.3. Konwersje typw

    Z typu Do typu

    char number datechar TO_NUMBER TO_DATE

    number TO_CHAR TO_DATEdate TO_CHAR

    2.4.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    11/81

    Bazy danych Robert Chwastek

    11

  • 5/28/2018 Bazy Danych - Robert Chwastek

    12/81

    Bazy danych Robert Chwastek

    12

    3. Model relacyjny

    podstawowych elementw: relacyjnych struktur danych

    bazy danych 3.1. Struktury danych w modelu relacyjnym

    nu

    bazach danych relacja przedstawiana jest w postaci tabeli. Relacja jest zbiorem krotek

  • 5/28/2018 Bazy Danych - Robert Chwastek

    13/81

    Bazy danych Robert Chwastek

    13

    jedna jak i druga terminologia.

    zbir encji wraz z atrybutami

    zabezpieczenie przed tym powtrzeniem jest realizowane poprzez pola kluczowe. Wiersze

    tabeli.

    Unikaj powtarzania informacji w bazie danych (normalizacja).3.2. QL

    Rozkaz Typ Opis

    ALTER TABLE DDL

    CREATE INDEX DDL Tworzy indeks dla tabeliCREATESEQUENCE

    DDL

    unikalnych identyfikatorw w tabelachCREATE TABLE DDL

    przestrzeni dla danych

  • 5/28/2018 Bazy Danych - Robert Chwastek

    14/81

    Bazy danych Robert Chwastek

    14

    CREATE VIEW DDL innych widokw

    DELETE DML DROP obiekt DDL INSERT DML Dodaje nowy wiersz (lub wiersze) do tabeli lub widoku

    RENAME DDL SELECT DML Wykonuje zapytanie. Wybiera wiersze i kolumny z jednejlub kilku tabel

    UPDATE DML Zmienia dane w tabeliCOMMIT DML ROLLBACK DML

    punktu.SAVEPOINT DML Zaznacza punkt, do ktrego mozliwe jest wykonanie

    rozkazu ROLLBACK

    SETTRANSACTION DDL odczytu).

    3.3.

    3.3.1. Definicje podstawowe

    napisanych w ten sposb aplikacji.

    ORACLEa przedstawia tabela:

    access add all alter and any

    as asc audit between by charcheck cluster column comment compress connectcreate current date dba decimal defaultdelete desc distinct drop else exclusiveexists file float for from grantgraphic group having identified if immediatein increment index install initial insertinteger intersect into is level likelock long maxextents minus mode modify

    noaudit nocompress not nowait null numberof offline on online option ororder pctfree prior privileges public raw

  • 5/28/2018 Bazy Danych - Robert Chwastek

    15/81

    Bazy danych Robert Chwastek

    15

    rename resource revoke row rowid rownumrows select session set share sizesmallint start successful synonym sysdate tablethen to trigger uid union uniqueupdate user validate values varchar vargraphic

    view whenever where with

    7E2 = 7 * 10225e-03 = 25 * 10-3

    256K = 256 * 10241M = 1 * 1048576 3.3.2. Rozkaz CREATE TABLE

    CREATE TABLE [user.]table

    ( {column_element | table_constraint}

    [, {column_element | table_constraint} ] ... )

    [ PCTFREE n ] [ PCTUSED n ][ INITTRANS n ] [ MAXTRANS n ]

    [ TABLESPACE tablespace ][ STORAGE storage ]

    [ CLUSTER cluster (column [, column] ...) ]

    [ AS query ]

    Parametry:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    16/81

    Bazy danych Robert Chwastek

    16

    query - jest poprawnym zapytaniem takim samym jak zdefiniowane w rozkazie

    sama jak liczba kolumn w zapytaniu.

    CREATE TABLE pracownicy( nr_pracownika NUMBER NOT NULL PRIMARY KEY,

    imie CHAR(15) NOT NULL CHECK (imie = UPPER(imie)),

    nazwisko CHAR(25) NOT NULL CHECK (nazwisko = UPPER(nazwisko)),

    nr_wydzialu NUMBER (3) NOT NULL

    );

    3.3.3. Rozkaz DROP

    DROP object_type [user.]object

    poszczeglnych typw obiektw: DROP CLUSTER [user.]cluster [INCLUDING TABLES]- kasowanie

    DROP [PUBLIC] DATABASE LINK link

    DROP INDEX [user.]index- kasowanie indeksu. DROP [PUBLIC] ROLLBACK SEGMENT segment- kasowanie segmentu

    tylko administrator bazy danych.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    17/81

    Bazy danych Robert Chwastek

    17

    DROP SEQUENCE [user.]sequence- kasowanie sekwencji. DROP [PUBLIC] SYNONYM [user.]synonym- usuwanie synonimu. Synonim

    DROP TABLE [user.]table

    DROP TABLESPACE tablespace [INCLUDING CONTENTS]- usuwanie przypadku podania klauzuli INCLUDING CONTENTS obszar danych zostanie

    DROP VIEW [user.]view

    3.3.4. Rozkaz INSERT

    INSERT INTO [user.]table [ (column [, column] ...) ] { VALUES (value [, value] ...) | query }

    Parametry:

    UPDATE.

    Opis:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    18/81

    Bazy danych Robert Chwastek

    18

    INSERT INTO pracownicy VALUES

    (50, JAN, KOWALSKI, 3);

    INSERT INTO ksiazki (tytul, autor, miejsce)

    SELECT 'Pan Tadeusz', autor_nr, miejsce_nr

    FROM autorzy, miejsca

    WHERE nazwisko = 'Mickiewicz' AND miejsce = 'lewa polka'

    ;

    3.3.5. Rozkaz DELETE

    DELETE [FROM] [user.]table [alias] [WHERE condition]

    Parametry:

    Opis:

    Skasowanie wszystkich wierszy w tabeli pracownicy:DELETE FROM pracownicy ;

    numerem 2:DELETE FROM ksiazki WHERE autor = 2 ;

  • 5/28/2018 Bazy Danych - Robert Chwastek

    19/81

    Bazy danych Robert Chwastek

    19

    3.3.6. Rozkaz CREATE SEQUENCE

    przynajmniej uprawnienia RESOURCE w conajmniej jednej przestrzeni tabel.

    CREATE SEQUENCE [user.]sequence [INCREMENT BY n]

    [START WITH n] [MAXVALUE n | NOMAXVALUE]

    [MINVALUE n | NOMINVALUE]

    [CYCLE | NOCYCLE]

    [CACHE n | NOCACHE] [ORDER | NOORDER]

    Parametry:

    cykl generacji numerw.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    20/81

    Bazy danych Robert Chwastek

    20

    MAXVALUE - MINVALUE.

    do generacji kluczy pierwotnych.

    Opis:

    sequence.NEXTVAL

    sequence.CURRVAL

    podzapytaniach z klauzulami ORDER BY, GROUP BY i HAVING w rozkazie SELECT z operatorem ustawienia (UNION, INTERSECT, MINUS)

  • 5/28/2018 Bazy Danych - Robert Chwastek

    21/81

    Bazy danych Robert Chwastek

    21

    CREATE SEQUENCE eseq INCREMENT BY 10 ;

    INSERT INTO pracownicy

    VALUES (eseq.NEXTVAL, Jan, Kowalski, 3) ;

    3.3.7. Rozkaz SELECT

    (DBA).

    SELECT [ALL | DISTINCT] {* | table.* | expr [c_alias] }

    [, { table.* | expr [c_alias] } ] ... FROM [user.]table [t_alias] [, [user.]table [t_alias]] ...

    [ WHERE condition ]

    [ CONNECT BY condition [START WITH condition] ] [ GROUP BY expr [. Expr] ... [HAVING condition] ]

    [ {UNION | INTERSECT | MINUS} SELECT ...]

    [ ORDER BY {expr | position} [ASC | DESC]

    [, {expr | position} [ASC | DESC]] ] ... [ FOR UPDATE OF column [, column] ... [NOWAIT] ]

    Parametry:

    pokazane.

    miejscu zapytania.

    SELECT).

  • 5/28/2018 Bazy Danych - Robert Chwastek

    22/81

    Bazy danych Robert Chwastek

    22

    SELECT, a nie na nazwie.

    Opis:

    SELECT imie, nazwisko FROM pracownicy ;

    SELECT tytul, autorzy.imie, autorzy.nazwisko, miejsca.miejsce

    FROM ksiazki, autorzy, miejsca

    WHERE ksiazki.autor = autorzy.autor_nr AND ksiazki.miejsce = miejsca.miejsce_nr

    ;

    3.3.8. Rozkaz UPDATE

    UPDATE [user.]table [alias]

    SET column = expr [, column = expr] ... [ WHERE condition ]

  • 5/28/2018 Bazy Danych - Robert Chwastek

    23/81

    Bazy danych Robert Chwastek

    23

    lubUPDATE [user.]table [alias]

    SET (column [, column] ...) = (query)

    [, column [, column] ...) = (query) ] ... [ WHERE condition ]

    Parametry:

    rozkazu.

    Opis:

    UPDATE pracownicy

    ;

    3.3.9. Rozkaz RENAME

  • 5/28/2018 Bazy Danych - Robert Chwastek

    24/81

    Bazy danych Robert Chwastek

    24

    RENAME old TO new

    Parametry:old - aktualna nazwa tabeli, widoku lub synonimu

    Opis:

    CREATE TABLE temporary (new_column_name)

    AS SELECT old_column_name FROM table ;

    DROP TABLE table ;

    RENAME temporary TO table ;

    RENAME wydzialy TO jednostki ;

    3.3.10. Rozkaz ALTER TABLE

    dodaje kolumny i warunki modyfikuje definicje kolumn jak typy i warunki usuwa warunki

    ALTER TABLE [user.]table

    [ADD ( {column_element | table_constraint}

    [, {column_element | table_constraint}] ...) ] [MODIFY (column_element [,column_element] ...)]

    [DROP CONSTRAINT constraint] ... [PCTFREE integer] [PCTUSED integer]

    [INITTRANS integer] [MAXTRANS integer]

    [STORAGE storage] [BACKUP]

    Parametry:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    25/81

    Bazy danych Robert Chwastek

    25

    wykonywania rozkazu ALTER TABLE.

    Opis:

    wierszy.

    rozmiar typ danych NOT NULL

    lko wtedy, gdy wszystkie

    jest rozmiar kolumny zadeklarowanej jako NOT NULL i w klauzuli MODIFY nie poda

    ALTER TABLE pracownicy ADD (placa NUMBER(7, 2))

    ;

    ALTER TABLE pracownicy

    MODIFY (placa NUMBER(9, 2));

    3.3.11. Rozkaz CREATE INDEX

    danej tabeli lub administrator (DBA).

    CREATE [UNIQUE] INDEX index ON

    {table(column [ASC|DESC][, column [ASC|DESC]]...) |

  • 5/28/2018 Bazy Danych - Robert Chwastek

    26/81

    Bazy danych Robert Chwastek

    26

    CLUSTER cluster} [INITTRANS n] [MAXTRANS n]

    [TABLESPACE tablespace]

    [STORAGE storage] [PCTFREE n]

    [NOSORT]

    Parametry:

    column - nazwa kolumny w tabeli.

    indeksu.

    Opis:

    Jeden element

    do wyszukiwania konkatenacji kolumn A, B, C, kolumn A i B lub tylko kolumny A. Nie

    pojedynczej kolumny B lub C.

    CREATE INDEX i_prac_imie ON pracownicy (imie) ;

  • 5/28/2018 Bazy Danych - Robert Chwastek

    27/81

    Bazy danych Robert Chwastek

    27

    3.3.12. Rozkaz CREATE VIEW

    co najmniej uprawnienia SELECT lub administrator.

    CREATE VIEW [user.]view [(alias [, alias] ...)]

    AS query [ WITH CHECK OPTION [CONSTRAINT constraint] ]

    Parametry: view - nazwa tworzonego widoku

    ani FOR UPDATE.

    Opis:

    Widok jest logicznym oknem dla jednej lub kilku tabel. W widok nie przechowuje danych - jest on przeznaczony do pokazywania danych

    zawartych w innych tabelach.

    gdy zapytanie na ktrym bazuje widok zawiera:klauzule GROUP BY, CONNECT BY lub START WITH

    try posiada pseudokolumny

  • 5/28/2018 Bazy Danych - Robert Chwastek

    28/81

    Bazy danych Robert Chwastek

    28

    zmiany nazwy kolumny bez zmiany rzeczywistych danych zapisanych w tabeli.

    CREATE VIEW bibl AS SELECT ksiazki.tytul, autorzy.imie,

    autorzy.nazwisko, miejsca.miejsce FROM ksiazki, autorzy, miejsca

    WHERE ksiazki.autor = autorzy.autor_nr

    AND ksiazki.miejsce = miejsca.miejsce_nr WITH CHECK OPTION CONSTRAINT chkopt

    ;

    3.3.13. Rozkaz COMMIT

    COMMIT [WORK]

    Opis: a

    bazie danych.

    3.3.14. Rozkaz ROLLBACKROLLBACK [ WORK ] [TO [ SAVEPOINT ] savepoint ]

    Parametry: savepoint - nazwa punktu zaznaczonego podczas wykonywania aktualnej transakcji.Opis: klauzuli TO) lub poczatku transakcji (bez klauzuli TO).

    ROLLBACK ;

    ROLLBACK TO SAVEPOINT SP5 ;

    3.3.15. Rozkaz SAVEPOINTSAVEPOINT savepoint

  • 5/28/2018 Bazy Danych - Robert Chwastek

    29/81

    Bazy danych Robert Chwastek

    29

    Parametry: savepoint - nazwa punktu w aktualnej transakcji zaznaczanego przez wykonywany

    rozkaz

    Opis:

    UPDATE pracownicy

    SET placa_podstawowa = 2000

    WHERE nazwisko = Kowalski;

    SAVEPOINT Kow_plac;

    UPDATE pracownicy

    SET placa_podstawowa = 1500

    WHERE nazwisko = Nowak;

    SAVEPOINT Now_plac;

    SELECT SUM(placa_podstawowa) FROM pracownicy;ROLLBACK TO SAVEPOINT Kow_plac;

    UPDATE pracownicy SET placa_podstawowa = 1300

    WHERE nazwisko = Nowak

    ;

    COMMIT;

    3.3.16. Rozkaz SET TRANSACTIONSET TRANSACTION { READ ONLY }

    Parametry: Opis:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    30/81

    Bazy danych Robert Chwastek

    30

    3.4. Operacje relacyjne

    warunki; 3.4.1. Selekcja

    Operacja podzbiorem poziomym.

    SELECT * FROM osoby;

    spowoduje wybranie wszystkich krotek (wierszy) z relacji (tabeli) ludzie. SELECT * FROM osoby

    ;

    SELECT * FROM osoby ;

  • 5/28/2018 Bazy Danych - Robert Chwastek

    31/81

    Bazy danych Robert Chwastek

    31

    3.4.2. Projekcja

    podzbiorem pionowym.

    SELECT Pesel, Nazwisko FROM osoby

  • 5/28/2018 Bazy Danych - Robert Chwastek

    32/81

    Bazy danych Robert Chwastek

    32

    ;

    3.4.3. Produkt

    SELECT * FROM R1, R2;

    Operacja znajd

    3.4.4.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    33/81

    Bazy danych Robert Chwastek

    33

    SELECT.SELECT imie, nazwisko, tytul FROM autorzy, ksiazki

    WHERE autorzy.nazwisko = Mickiewicz and

    autorzy.nr = ksiazki.autor;

    3.4.5.

    3.4.5.1. Unia

    SELECT imie, nazwisko FROM pracownicy

    UNION

    SELECT imie, nazwisko FROM wlasciciele ;

    3.4.5.2. PrzekrjPrze

    bazowych.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    34/81

    Bazy danych Robert Chwastek

    34

    SELECT nazwisko FROM pracownicyINTERSECT

    SELECT nazwisko FROM wlasciciele ;

    3.4.5.3. Operacj

    niej zatrudnieni:SELECT imie, nazwisko FROM wlasciciele

    MINUSSELECT imie, nazwisko FROM pracownicy ;

    3.4.6. Grupowanie

    Klauzu SELECT stanowisko, avg(placa_podstawowa)

    FROM pracownicy

    GROUP BY stanowisko ;

    a grupy. SELECT stanowisko, avg(placa_podstawowa)

    FROM pracownicy WHERE stanowisko != KIEROWCA

    GROUP BY stanowisko ;

    stanowiska:SELECT wydzial, stanowisko, avg(placa_podstawowa) FROM pracownicy

    GROUP BY nr_wydzialu, stanowisko ;

    SELECT stanowisko, max(placa_podstawowa)

    FROM pracownicy

  • 5/28/2018 Bazy Danych - Robert Chwastek

    35/81

    Bazy danych Robert Chwastek

    35

    GROUP BY stanowisko HAVING max(placa_podstawowa) > 3000 ;

    3.4.7.

    1.SELECT i WHERE2.GROUP BY3.HAVING4.ORDER BY3.5. Podzapytania

    dwa rodzaje: podzapytania proste (nazywane po prostu podzapytaniem) - podzapytanie jest

    wykonywane przed

    SELECT nazwisko FROM pracownicy

    WHERE placa_podstawowa =

    (SELECT min(placa_podstawowa) FROM pracownicy)

    ;

    SELECT nazwisko, nr_wydzialu

    FROM pracownicy

    WHERE placa_podstawowa IN (SELECT min(placa_podstawowa)

    FROM pracownicy

    GROUP BY nr_wydzialu);

  • 5/28/2018 Bazy Danych - Robert Chwastek

    36/81

    Bazy danych Robert Chwastek

    36

    operatora IN.

    SELECT nr_wydzialu, avg(placa_podstawowa)

    FROM pracownicy

    GROUP BY nr_wydzialu HAVING avg(placa_podstawowa) >

    (SELECT avg(placa_podstawowa)

    FROM pracownicy

    WHERE nr_wydzialu = 30);

    Podzapytanie skorelowane jest zapytaniem zagnie dla

    SELECT imie, nazwisko, placa_podstawowa, nr_wydzialu

    FROM pracownicy pracownik

    WHERE placa_podstawowa > (SELECT avg(placa_podstawowa)

    FROM pracownicy

    WHERE nr_wydzialu = pracownik.nr_wydzialu);

  • 5/28/2018 Bazy Danych - Robert Chwastek

    37/81

    Bazy danych Robert Chwastek

    37

    3.6. Widoki (perspektywy)

    proste

    danych zawartych w widoku.Widok

    wszystkich systemach).

    CREATE VIEW personaliaAS

    SELECT imie, nazwisko

    FROM pracownicy;

    opisie rozkau CREATE VIEW:

    CREATE VIEW bibl

    AS SELECT ksiazki.tytul, autorzy.imie,

    autorzy.nazwisko, miejsca.miejsce FROM ksiazki, autorzy, miejsca

    WHERE ksiazki.autor = autorzy.autor_nr

    AND ksiazki.miejsce = miejsca.miejsce_nr;

  • 5/28/2018 Bazy Danych - Robert Chwastek

    38/81

    Bazy danych Robert Chwastek

    38

    3.7. Transakcje

    racji.

    rozkazu COMMIT lub ROLLBACK.

    Rozkaz SAVEPOINT pozwala na zaznaczenie i nazwanie pewnego punktu

    COMMIT powoduje skasowanie wszystkich uprzednio zaznaczonych punktw.

    skrypt.

    3.8. Normalizacja relacji

    3.8.1. Cele normalizacji

  • 5/28/2018 Bazy Danych - Robert Chwastek

    39/81

    Bazy danych Robert Chwastek

    39

    nazwa przedmiotu, imie, nazwisko,

    ul. Krlewska 30/3 Krakw)

    redundancja danych;

    ulica, nr_domu, nr_mieszkania

    3.8.2.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    40/81

    Bazy danych Robert Chwastek

    40

    postaci normalnej ilustruje rysunek:

    3.8.3. Definicje pomocnicze

    postaci normalnej. Przed omwieniem procesu normalizacji konieczne jest jednak

  • 5/28/2018 Bazy Danych - Robert Chwastek

    41/81

    Bazy danych Robert Chwastek

    41

    Uniwersalny schemat relacjiR = {A1, A2, ..., An

    R = {A1, A2, ..., An} nazywamy zbir atrybutw S R, ktry jednoznacznie identyfikuje wszystkie krotki relacji o schemacie R. Inaczej 1 i t2

    t1[S] = t2[S]. Kluczem

    nie istnieje K

    Klucz nazywamy kluczem prostym jest zbiorem jednoelementowym; w przeciwnym wypadku mamy do czynienia z nazywamy kluczami potencjalnymi potencjalnych nazywamy

    Atrybut relacji nazywamy podstawowym

    relacji. Atrybutrelacji nazywamy wtrnym Atrybut B relacji R jest

    identyfikuje B i oznacza A

  • 5/28/2018 Bazy Danych - Robert Chwastek

    42/81

    Bazy danych Robert Chwastek

    42

    Atrybut B jest zbioru atrybutw X w schemacie R,

    Y i nie istnieje podzbir X Y.

    Zbir atrybutw Y jest zbioru atrybutw X w

    Y i istnieje podzbir X Y.

    atrybutw Z jest

    dla dowolnej pary krotek t1 i t2 1[X] = t2[X], istnieje taka parakrotek s1i s2

    s1[X] = s2[X] = t1[X] = t2[X] orazs1[Y] = t1[Y] i s1[R-X-Y] = t2[R-X-Y] orazs2[Y] = t2[Y] i s2[R-X-Y] = t1[R-X-Y].

  • 5/28/2018 Bazy Danych - Robert Chwastek

    43/81

    Bazy danych Robert Chwastek

    43

    1i t2 1[x] = t2[X]), sposb krotki s1i s2

    -X-Y =

    t1 t2= (Kowalski, Magda, Systemy operacyjne)odpowiada para kroteks1= (Kowalski, Agnieszka, Systemy operacyjne)s2

    wypadku jednoelementowego zbioru atrybutw (Dziecko) od jednoelementowego

    zbioru atrybutw X

  • 5/28/2018 Bazy Danych - Robert Chwastek

    44/81

    Bazy danych Robert Chwastek

    44

    funkcjonalnymi. 1, A2, ..., An

    1, R2, ..., Rm

    schemat Riz tego zbioru stanowi podzbir zbioru atrybutw (A1, ..., An) i

    1, ..., An 1, ..., Rn dekompozycja relacji r (o schemacie R) na relacje r1, ..., rn 1, ..., rm.

    1, ..., Rm atrybutw schematu R od klucza wtedy i tylko wtedy, gdy w dowolnej sekwencji

    3.8.4.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    45/81

    Bazy danych Robert Chwastek

    45

    kluczami prostymi.

    relacji Zamwienia do drugiej postaci normalnej otrzymujemy

    Dostawca na zamwieniu

  • 5/28/2018 Bazy Danych - Robert Chwastek

    46/81

    Bazy danych Robert Chwastek

    46

    Zamwione dostawy

    3.8.5.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    47/81

    Bazy danych Robert Chwastek

    47

    3.8.6.

    Y Z = R i podzbir Y jest nietrywialnie

    Dana relacja R jest w czwartej postaci normalnej wtedy i tylko wtedy, gdy jest w

    funkcjonalnej jest w trzeciej postaci normalnej, ale nie jest w czwartej postaci normalnej,

    atrybutami.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    48/81

    Bazy danych Robert Chwastek

    48

    3.8.7.

    wtedy i tylko wtedy, 1, ..., Rm klucza.

    3.8.8. Podsumowanie

  • 5/28/2018 Bazy Danych - Robert Chwastek

    49/81

    Bazy danych Robert Chwastek

    49

  • 5/28/2018 Bazy Danych - Robert Chwastek

    50/81

    Bazy danych Robert Chwastek

    50

    4.

    4.1. Operatory

    4.1.1. Operatory arytmetyczne

    nego. Jednak

    Operator Opis

    ( )

    SELECT (X+Y)/(Y+Z) ...

    +, - Operatory jednoargumentowe zachowania izmiany znaku.

    ... WHERE NR = -1

    ... WHERE -PLACA < 0*, / SELECT 2*X+1

    ... WHERE X > Y/2+, - Dodawanie, odejmowanie SELECT 2*X+1

    ... WHERE X > Y-Z

    4.1.2. Operatory znakowe

    nkatenacji.

    operatora konkatenacji.

    Operator Opis

    || SELECT Nazwa: || ENAME ...

  • 5/28/2018 Bazy Danych - Robert Chwastek

    51/81

    Bazy danych Robert Chwastek

    51

    4.1.3. Operatory porwnania

    Operator Opis ( )

    ... NOT (A=1 OR B=1)

    = rwne

    ... WHERE PLACA = 1000

    !=, ^=,

    ... WHERE PLACA != 1000

    > ... WHERE PLACA > 1000< ... WHERE PLACA < 1000>= ... WHERE PLACA >= 1000

  • 5/28/2018 Bazy Danych - Robert Chwastek

    52/81

    Bazy danych Robert Chwastek

    52

    x AND y[NOT]EXISTS

    zwraca przynajmniej jeden wiersz.

    ... WHERE EXISTS (SELECT PLACAFROM PRAC WHERE WYDZIAL =30)

    [NOT]

    LIKE

    jest rwny NULL. Litera _

    ... WHERE STAN LIKE T%

    IS [NOT]NULL

    [Nie] jest rwne NULL. ... WHERE ZAWOD IS NULL

    NULL. Np. rozkaz:

    SELECT TRUE FROM prac

    WHERE wydzial NOT IN (5, 15, NULL) ;

    wydzial NOT IN (5, 15, NULL)

    wydzial != 5 AND wydzial != 15 AND wydzial != NULL

    4.1.4. Operatory logiczne

    Operator Opis

    ( )

    SELECT ... WHERE x = y AND (a = bOR p = q)

    NOT gicznego

    ... WHERE NOT (zawod IS NULL)

    WHERE NOT (A=1)AND Logiczne i. Wynik jest rwny

    ... WHERE A = 1 AND B = 2

    OR Logiczne lub. Wynike jest rwny

    ... WHERE A = 1 OR B = 3

  • 5/28/2018 Bazy Danych - Robert Chwastek

    53/81

    Bazy danych Robert Chwastek

    53

    jednego operandu jest rwnaTRUE

    AND true false nulltrue true false nullfalse false false falsenull null false null

    OR true false nulltrue true true truefalse true false null

    null true null null

    4.1.5.

    Operatory zbiorowe

    Operator Opis

    UNION

    ... SELECT ... UNION SELECT ...

    INTERSECT tylko raz

    ... SELECT ... INTERSECT SELECT ...

    MINUS tylko raz

    ... SELECT ... MINUS SELECT ...

    4.2.

    operandw.

    numeryczny: 2 * 2 znakowy: TO_CHAR(TRUNC(SYSDATE + 7))

  • 5/28/2018 Bazy Danych - Robert Chwastek

    54/81

    Bazy danych Robert Chwastek

    54

    SET Nazwisko = LOWER(Nazwisko)

    [table.] { column | ROWID }textnumbersequence.CURRVALsequence.NEXTVALNULLROWNUMLEVELSYSDATEUIDUSER

    pracownicy.nazwisko 10SYSDATE

    : { n | variable } [ :ind_variable ]:nazwisko_pracownika:nazwisko_pracownika_indykator function_name( [DISTINCT | ALL] expr [, expr] ... )LENGTH(Kowalski)ROUND(1234.567*82) (expr)+expr, -expr, PRIOR exprexpr * expr, expr / exprexpr + expr, expr - expr, expr || expr(Kowalski: || Nauczyciel)LENGTH(Nowak) * 57SQRT(144) + 72 (expr [, expr], ...)

  • 5/28/2018 Bazy Danych - Robert Chwastek

    55/81

    Bazy danych Robert Chwastek

    55

    (Kowalski, Nowak, Burzynski)(10, 20, 40)(LENGTH(Kowalski) * 5, -SQRT(144) + 77, 59)

    jako warunek w klauzulach WHERE i HAVING w klauzulach CONNECT BY, START WITH, ORDER BY klauzuli VALUE w rozkazie INSERT w klauzuli SET rozkazu UPDATE4.3. Warunki

    porwnanie z dowolnym lub ze wszystkimi elementami listy lub zapytania { ANY | ALL }( [,

  • 5/28/2018 Bazy Danych - Robert Chwastek

    56/81

    Bazy danych Robert Chwastek

    56

    EXISTS kombinacja innych warunkw (podana zgodnie z priorytetami)( )NOT AND OR

    Nazwisko = Kowalski

    pracownicy.Wydzial = Wydzialy.Wydzial

    Data_urodzenia > 01-JAN-67Zawod IN (Dyrektor, Urzednik, Informatyk)

    Placa BETWEEN 500 AND 1500

  • 5/28/2018 Bazy Danych - Robert Chwastek

    57/81

    Bazy danych Robert Chwastek

    57

    5.

    5.1. Funkcje numeryczne

    Przeznaczenie

    ABS(n) ABS(-15)Wynik: 15

    CEIL(n)

    CEIL(15.7)Wynik: 16

    FLOOR(n)

    FLOOR(15.7)Wynik: 15

    MOD(m, n) MOD(7, 5)Wynik: 2

    POWER(m, n)

    POWER(2, 3)Wynik: 8

    ROUND(n[, m]) odpowiedniej liczby cyfr przedprzecinkiem)

    ROUND(16.167, 1)Wynik: 16.2

    ROUND(16, 167, -1)Wynik: 20

    SIGN(n) od 0

    SIGN(-15)Wynik: -1

    SQRT(n) Zwraca pierwiastek kwadratowy liczby n.

    SQRT(25)Wynik: 5

    TRUNC(m[, n])

    TRUNC(15.79, 1)Wynik: 15.7

    TRUNC(15.79, -1)Wynik: 10

    5.2. Funkcje znakowe

    Przeznaczenie

    CHR(n) Zwraca znak o podanym kodzie CHR(65)Wynik: A

  • 5/28/2018 Bazy Danych - Robert Chwastek

    58/81

    Bazy danych Robert Chwastek

    58

    INITCAP(string)

    INITCAP(PAN JANNOWAK)Wynik: Pan JanNowak

    LOWER(string) Zamienia wszystkie litery w podanym

    LOWER(PAN JAN

    NOWAK)Wynik: pan jannowak

    LPAD(string1, n[, string2])

    zwracane jest n pierwszych znakw z

    tekstu string1.

    LPAD(Ala ma , kota*,17)Wynik:kota*kota*Ala ma

    LTRIM(string[, zbir])

    Usuwa litery z tekstu string od lewej

    pusty.

    LTRIM(xxxXxxOstatn Wynik:

    REPLACE(string,search [, replace])

    replace.

    REPLACE(Jack &Jue, J, Bl)Wynik:

    Black & BlueRPAD(string1, n[, string2])

    zwracane jest n pierwszych znakw ztekstu string1.

    RPAD(Ala ma , 17,kota*)Wynik:Ala ma kota*kota*

    RTRIM(string

    [, zbir])

    RTRIM(Ostatnie

    Wynik:

    SOUNDEX(string) wymawianych tak samo.

    SELECT nazwiskoFROM bibl WHERESOUNDEX (nazwisko)= SOUNDEX('Mickiewicz');

    SUBSTR(string, m[, n])

    SUBSTR(ABCDE,2,3)Wynik:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    59/81

    Bazy danych Robert Chwastek

    59

    1.

    BCD

    TRANSLATE(string, from, to)

    wszystkich znakw from na znak to.

    TRANSLATE(HELLO! THERE!, !,

    -)Wynik:HELLO- THERE-

    UPPER(string)

    UPPER(Jan Nowak)Wynik:JAN NOWAK

    ASCII(string) Zwraca kod ASCII pierwszej litery w

    ASCII(A)Wynik: 65

    INSTR(string1,string2 [, n [, m]])

    INSTR(MISSISSIPPI, S, 5,2)Wynik: 7

    LENGTH(string) LENGTH(Nowak)Wynik: 5

    5.3. Funkcje grupowe

    pomijane). Klauzula ALL powoduje wybranie wszystkich wierszy wynikowych do

    Przeznaczenie

    AVG( [DISTINCT | ALL]num)

    SELECT AVG(placa)Srednia FROM pracownicy

    COUNT( [DISTINCT |ALL] expr)

    ktrych expr nie jest rwneNULL

    SELECT COUNT(nazwisko)Liczba FROM pracownicy

    COUNT(*)

    SELECT COUNT(*)Wszystko FROMpracownicy

  • 5/28/2018 Bazy Danych - Robert Chwastek

    60/81

    Bazy danych Robert Chwastek

    60

    NULLMAX( [DISTINCT | ALL]expr)

    SELECT MAX(Placa) MaxFROM pracownicy

    MIN( [DISTINCT | ALL]expr)

    SELECT MIN(Placa) MinFROM pracownicy

    STDDEV( [DISTINCT |ALL] num) Zwraca odchylenie

    SELECT STDDEV(Placa)Odchylenie FROMpracownicy

    SUM( [DISTINCT | ALL]num)

    SELECT SUM(Placa)Koszty osobowe FROMpracownicy

    VARIANCE( [DISTINCT |ALL] num)

    NULL

    SELECT VARIANCE(Placa)Wariancja FROMpracownicy

    5.4. Funkcje konwersji

    typTOtyp.Pierwszy typ jest typem, z ktrego wykonywana jest konwersja, drugi jest typemwynikowym.

    Przeznaczenie CHARTOROWID(string)

    znakw na ROWID

    SELECT nazwisko FROMpracownicy WHERE ROWID =CHARTOROWID(0000000F.0003.0002)

    CONVERT(string[,dest_char_set[,source_char_set ] ])

    implementacjami zestawuznakw. Zestawem

    SELECT CONVERT (NewWORD, US7ASCII, WE8HP)Conversion FROM DUAL

    HEXTORAW (string)

    INSERT INTO GRAPHICS(RAW_COLUMN) SELECTHEXTORAW (7D) FROMDUAL

    ROWTOHEX(raw) cyfry szesnastkowe

    liczbie.

    SELECT RAWTOHEX(RAW_COLUMN) GraphicsFROM GRAPHICS

    ROWIDTOCHAR SELECT ROWID FROM

  • 5/28/2018 Bazy Danych - Robert Chwastek

    61/81

    Bazy danych Robert Chwastek

    61

    wiersza na tekst. Wynik 18 znakw.

    GRAPHICS WHEREROWIDTOCHAR(ROWID)LIKE %F38%

    TO_CHAR(n [, fmt])(konwersja

    numeryczna)

    SELECT TO_CHAR(17145,$099,999) Char FROM

    DUAL

    TO_CHAR(d [, fmt])(konwersja daty)

    SELECTTO_CHAR(HIREDATE, MonthDD, YYYY) New date format

    FROM EMP WHERE ENAME =SMITHTO_DATE(string [,fmt])

    podanego tekstu. Do

    DD-MON-YY

    INSERT INTO BONUS(BONUS_DATE) SELECTTO_DATE (January 15, 1989,Month dd, YYYY)FROM DUAL

    TO_NUMBER (string)

    UPDATE EMP SET SAL = SAL + TO_NUMBER( SUBSTR($100 raise', 2, 3)) WHERE ENAME = 'BLAKE

    5.5. Funkcje operacji na datach Przeznaczenie

    ADD_MONTHS(date, n)

    ujemna

    SELECT ADD_MONTHS(HIREDATE, 12)Next yearFROM EMP WHERE ENAME =

    SMITHLAST_DAY(date)

    SELECT LAST_DAY(SYSDATE) Last

  • 5/28/2018 Bazy Danych - Robert Chwastek

    62/81

    Bazy danych Robert Chwastek

    62

    podanej dacie. FROM DUALMONTHS_BETWEEN (date1, date2)

    31 dni.

    SELECT MONTHS_BETWEEN(02-feb-86, 01-jan-86))MonthsFROM DUAL

    NEW_TIME(date, a,b)

    z:AST, ADT - Atlantic Standard

    or Daylight TimeBST, BDT - Bering Standardor Daylight TimeCST, CDT - Central Standardor Daylight TimeEST, EDT - Eastern Standardor Daylight TimeGMT - Greenwich Mean TimeHST, HDT- Alaska-Hawaii

    Standard or Daylight TimeMST, MDT - MountainStandard or Daylight TimeNST - Newfoundland StandardTimePST, PDT - Pacific Standard orDaylight TimeYST, YDT - Yukon Standardor Daylight Time

    SELECT TO_CHAR(NEW_TIME(TO_DATE(17:47, hh24:mi), PST,GMT),hh24:mi) GREENWICHTIMEFROM DUAL

    NEXT_DAY(date,string) tygodnia podanego w string,

    SELECT NEXT_DAY(17-MAR-89, TUESDAY)NEXT DAYFROM DUAL

    ROUND(date [, fmt])

    SELECT ROUND ( TO_DATE(27-OCT-88), YEAR)FIRST OF THE YEARFROM DUAL

    SYSDATE Nie wymaga podaniaargumentw.

    SELECT SYSDATE FROMDUAL

  • 5/28/2018 Bazy Danych - Robert Chwastek

    63/81

    Bazy danych Robert Chwastek

    63

    TRUNC(date [, fmt]) jednostki podanej w fmt. usuwana jest informacja oczasie.

    SELECT TRUNC(TO_DATE(28-OCT-88, YEAR)First Of The YearFROM DUAL

    CC, SCC wiekSYYY, YYYY, YEAR,SYEAR, YYY, YY, Y

    Q MONTH, MON, MM

    WW W DDD, DD, J DAY, DY, D HH, HH12, HH24 godzinaMI minuta

    5.6. Inne funkcje

    Przeznaczenie

    GREATEST(expr [,expr] ...)

    konwertowane do typu

    wykonaniem porwnania.

    SELECT GREATEST (Harry,Harriot, Harold)GREATEST FROM DUAL

    LEAST(expr [,expr] ...) konwertowane do typu

    wykonaniem porwnania.

    SELECT LEAST (Harry,Harriot, Harold)LEAST FROM DUAL

    NVL (expr1, expr2) zwraca expr2, w przeciwnymwypadku zwraca expr1.

    SELECT ENAMENVL(TO_CHAR(COMM),NOT APPLICABLE)

    COMMISIONFROM EMP WHERE DEPTNO = 30

  • 5/28/2018 Bazy Danych - Robert Chwastek

    64/81

    Bazy danych Robert Chwastek

    64

    UID Zwraca unikalny identyfikator

    SELECT USER, UID FROMDUAL

    USER SELECT USER, UIDFROM DUAL

    5.7. Formaty zapisu danych

    5.7.1. Formaty numeryczne

    numerycznego:

    Element Opis9 9999 0 0999 $ $9999 B B9999 MI 9999MI PR 9999PR

    >, (przecinek) 9,999

    . (kropka) 99.99 V 999V99 n

    po VE 9.999EEEE

    DATE DATE Dla dat przechowywanych w postaci numerycznej.

    5.7.2. Formaty dat

    Format standardowy, to DD-MON-YY.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    65/81

    Bazy danych Robert Chwastek

    65

    Elementy formatu dat przedstawia tabela:

    Element Opis

    SCC lub CC YYYY lub SYYYY

    -YYY, YY lub Y Ostatnie 3, 2 lub 1 cyfra rokuY,YYY Rok z przecinkiem na podanej pozycjiSYEAR lub YEAR Rok przeliterowany. S powoduje poprzedzenie daty przed

    BC lub AD B.C. lub A.D Znak BC/AD z kropkamiQ MM

    MONTH MON WW

    i trwa 7 dni)W

    DDD DD D

    DAY DY Trzyliterowy skrt nazwy dniaAM lub PM A.M. lub P.M. HH lub HH12 Godzina (1-12)HH24 Godzina (1-24)MI Minuta (0-59)SS Sekunda (0-59)SSSS

    / ., Znaki przestankowe umieszczane w wyniku...

    liczb zerami; TH dla

    liczby 4;

  • 5/28/2018 Bazy Danych - Robert Chwastek

    66/81

    Bazy danych Robert Chwastek

    66

    6. Programowanie proceduralne - PL/SQL

    6.1. Wprowadzenie

    PL/SQL pozwala wykorz

    niektre rozkazy kontroli danych jak CONNECT, GRANT i REVOKE.

    z

    PL/SQL pozwala na definiowa premia NUMBER(7, 2);

    podatek := cena * stopa;

    SELECT placa INTO placa_aktualna FROM pracownicy

    WHERE nazwisko = Nowak ;

    pola.

    stopa_premii CONSTANT NUMBER(3, 2) := 0.10;

    tytul books.tytul%TYPE

  • 5/28/2018 Bazy Danych - Robert Chwastek

    67/81

    Bazy danych Robert Chwastek

    67

    6.2. Struktura bloku

    DECLARE

    deklaracjeBEGIN

    rozkazy wykonywalneEXCEPTION

    END;

    6.3. Procedury i funkcje

    PL/SQL w wersji 2.0 pozwala na definiowanie funkcji i procedur. PROCEDURE name [ (parameter [, parameter] ... ) ] IS

    [local declarations]

    BEGIN executable statements

    [EXCEPTION

    exception handlers]END [name];

    var_name [IN | OUT | IN OUT] datatype [{ := | DEFAULT } value]

  • 5/28/2018 Bazy Danych - Robert Chwastek

    68/81

    Bazy danych Robert Chwastek

    68

    PROCEDURE zwieksz (prac_id INTEGER, kwota REAL) IS

    placa_aktualna REAL;

    BEGIN UPDATE pracownicy SET placa_podstawowa =

    placa_podstawowa + kwota WHERE prac_id = id_pracownika;

    END zwieksz;

    FUNCTION name [ (argument [, argument] ... ) ] RETURN datatype IS

    [local declarations]BEGIN executable statements

    [EXCEPTION

    exception handlers]END [name];

    6.4. KursoryW celu wykonania rozkazu SQL system tworzy pewien obszar roboczy nazywany

    dwch typw kursorw:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    69/81

    Bazy danych Robert Chwastek

    69

    operacji.

    DECLARE

    FROM pracownicy

    ...

    BEGIN ...

    sposb:OPEN prac_kursor;

    FETCH prac_kursor INTO prac_nazw, prac_wydz;

    CLOSE prac_kursor;

    powodu braku wierszy

    %ROWCOUNT - liczba wierszy w kursorze (po otwarciu kursora)

    rsora:

    LOOP FETCH prac_kursor INTO prac_nazw, prac_wydz;

    IF prac_kursor%ROWCOUNT > 10 THEN

    ... EXIT WHEN prac_kursor%NOTFOUND;

    ...

    END LOOP;

  • 5/28/2018 Bazy Danych - Robert Chwastek

    70/81

    Bazy danych Robert Chwastek

    70

    6.5. Rekordy

    wierszom w tabeli, widoku lub kursorze, nie pozwala jednak na definiowanie typwposzczeglnych pl.

    %ROWTYPE:DECLARE CURSOR prac_kursor IS

    SELECT nazwisko, wydzial, data_zatrudnienia

    FROM pracownicy; prac_rek prac_kursor%ROWTYPE

    ...

    FETCH prac_kursor INTO prac_rek;

    Rekor nazwa_rekordu nazwa_tabeli%ROWTYPE;

    DECLARE

    prac_rek pracownicy%ROWTYPE; ...

    BEGIN

    ...END;

    nazwa_rekordu.nazwa_pola;

    suma := suma + prac_rek.placa;

    prac_rek.nazwisko := UPPER(prac_rek.nazwisko);

    e jest na dwa sposoby:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    71/81

    Bazy danych Robert Chwastek

    71

    DECLARE prac_rek1 pracownicy%ROWTYPE;

    prac_rek2 pracownicy%ROWTYPE;

    BEGIN SELECT nazwisko, imie, wydzial, placa_podstawowa

    INTO prac_rek1 FROM pracownicy

    WHERE wydzial = 30; prac_rek2 := prac_rek1;

    ...

    END;

    DECLARE CURSOR prac_kursor IS

    SELECT nazwisko, imie, wydzial, placa_podstawowa FROM pracownicy;

    BEGIN

    FOR pracownik IN prac_kursor LOOP suma := suma + pracownik.placa_podstawowa;

    ...END LOOP;

    Niejawnie deklarowanym rekordem jest tu zmienna o nazwie pracownik. Zmienna ta jest nazwa_kursora%ROWTYPE.

    6.6.

    6.6.1. Informacje podstawowe

  • 5/28/2018 Bazy Danych - Robert Chwastek

    72/81

    Bazy danych Robert Chwastek

    72

    DECLARE cz_wsk NUMBER(3,1);

    BEGIN

    ... SELECT cena / zysk FROM akcje

    -- ZERO_DIVIDE

    INSERT INTO informacje (nazwa, c_z)

    VALUES (ABC, cz_wsk); COMMIT

    EXCEPTION WHEN ZERO_DIVIDE THEN INSERT INTO informacje (nazwa, c_z)

    VALUES (ABC, NULL);

    COMMIT; ...

    WHEN OTHERS THEN

    ROLLBACK;

    END;

    BEGIN SELECT ...

    SELECT ...

    SELECT ...

    END;

  • 5/28/2018 Bazy Danych - Robert Chwastek

    73/81

    Bazy danych Robert Chwastek

    73

    BEGIN

    SELECT ...

    SELECT ... SELECT ...

    EXCEPTION

    WHEN NO_DATA_FOUND THEN

    END;

    6.6.2.

    otwartego;

    w indeksie zadeklarowanym jako UNIQUE;

    kursora (np. nie otwartego);

    numerycznego z tekstu, ktry nie reprezentuje liczby;

    lub pola;

    ZERO_DIVIDE - prba dzielenia przez zero;6.6.3.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    74/81

    Bazy danych Robert Chwastek

    74

    EXCEPTION WHEN ... THEN

    WHEN ... THEN

    WHEN ... THEN

    WHEN OTHERS THEN END;

    WHEN over_limit OR under_limit OR VALUE_ERROR THEN

    ...

    6.6.4.

    DECLARE overflow EXCEPTION;

    result NUMBER(5);

    BEGIN ...

    END;

    rozkazach SQL.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    75/81

    Bazy danych Robert Chwastek

    75

    Jak podano w

    DECLARE brak_czesci EXCEPTION; liczba_czesci NUMBER(4);

    BEGIN ...

    IF liczba_czesci < 1 THEN

    RAISE brak_czesci; END IF;

    ...

    EXCEPTION

    WHEN brak_czesci THEN END;

    RAISE INVALID_NUMBER;

    6.7.

    6.7.1. Rozkaz OPEN

    Rozkaz OPEN wykonuje zapytanie skojarzone z jawnie zadeklarowanym kursorem OPEN cursor_name

    [(input_parameter [, input_parameter] ... )] ;

    Parametry: cursor_name - nazwa kursora uprzednio zadeklarowanego, ktry nie jest aktualnie

    otwarty.

    klauzuli WHERE).

  • 5/28/2018 Bazy Danych - Robert Chwastek

    76/81

    Bazy danych Robert Chwastek

    76

    celu pobrania ich z kursora.

    DECLARE CURSOR prac_kur(nazw CHAR, wydz NUMBER) IS ...BEGIN OPEN prac_kur(Kowalski, 10); ... OPEN prac_kur(wydz => 15, nazw => Nowak);END;

    6.7.2. Rozkaz CLOSE

    CLOSE cursor_name ;

    Parametry: cursor_name - nazwa aktualnie otwartego kursora.6.7.3. Rozkaz FETCH

    kolumn w aktualnym wierszu.FETCH cursor_name INTO

    { record_name | variable_name [, variable_name] ... } ;

    Parametry:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    77/81

    Bazy danych Robert Chwastek

    77

    cursor_name - nazwa aktualnie otwartego kursora.

    %ROWTYPE)....

    OPEN prac_kursor;

    ...LOOP

    FETCH prac_kursor INTO prac_rek;

    EXIT WHEN prac_kursor%NOTFOUND; ...

    END LOOP;

    6.7.4. Rozkaz SELECT ... INTO

    Rozkaz SELECT ... INTO odczytuje informacje z bazy danych i zapisuje je do

    SELECT select_list_item [, select_list_item] ... INTO { record_name |

    variable_name [, variable_name] ... } rest_of_select_statement ;

    Parametry:Zobacz opis rozkazu FETCH.SELECT nazwisko, placa*12 INTO pnazw, plac_sum FROM pracownicy

    WHERE pracownik_nr = 12345;

    6.7.5. Rozkaz IF

    Rozkaz IF pozwala na warunkowe wykonywanie rozkazw.IF plsql_condition THEN seq_of_statements

    [ELSEIF plsql_condition THEN seq_of_statements] ...

    [ELSE seq_of_statements]

    END IF;

    Parametry:

  • 5/28/2018 Bazy Danych - Robert Chwastek

    78/81

    Bazy danych Robert Chwastek

    78

    Opis:

    IF liczba_czesci < 20 THEN ilosc_zamawianych := 50;

    ELSEIF liczba_czesci < 30 THEN ilosc_zamawianych := 20;

    ELSE

    ilosc_zamawianych := 5;END IF;

    INSERT INTO zamowienia VALUES(typ_czesci, ilosc_zamawianych);

    6.7.6. Rozkaz LOOP

    [][ { WHILE plsql_condition } |

    { FOR {numeric_loop_param | cursor_loop_param } } ]LOOP seq_of_statements END LOOP [ label_name ] ;

    index IN [REVERSE] integer_expr .. integer_expr

    record_name IN

    { cursor_name [(parameter [, parameter] ...)] | ( select_statement ) }

  • 5/28/2018 Bazy Danych - Robert Chwastek

    79/81

    Bazy danych Robert Chwastek

    79

    Parametry:

    label_name.index

    parametrami).

    Opis:

    LOOP

    ...

    IF (x > 10) THEN EXIT loop1; ...

    END LOOP loop1;

    WHILE x < 10 LOOP

    ...

    x := x - y; ...

    END LOOP;

    FOR i IN 1 .. n LOOP silnia := silnia * n;

  • 5/28/2018 Bazy Danych - Robert Chwastek

    80/81

    Bazy danych Robert Chwastek

    80

    END LOOP;

    DECLARE

    CURSOR prac_kursor IS select * FROM pracownicy; prac_rek prac_kursor%ROWTYPE;

    BEGIN ...

    FOR prac_rek IN prac_kursor LOOP

    suma := suma + prac_rek.placa_podstawowa; END LOOP;

    ...

    END;

    6.7.7. Rozkaz EXIT

    EXIT [label_name] [WHEN plsql_condition] ;

    Parametry:

    wykonywanej.

    6.7.8. Rozkaz GOTO

    hmiastowego przekazania sterowania od rozkazu

    > GOTO label_name ;

    Opis:

    automatycznie.

  • 5/28/2018 Bazy Danych - Robert Chwastek

    81/81

    Bazy danych Robert Chwastek

    81

    7. Literatura1. Wojciech Cellary, Zbyszko Krlikowski Wprowadzenie do projektowania baz danych

    dBase III, Wydawnictwa Naukowo -Techniczne, Warszawa 1988

    2. ORACLE SQL Language Reference Manual3. ORACLE PL/SQL Users Guide and Reference4. ORACLE SQL*Plus Users Guide and Reference