agh wyklad z sql wxikirrv6t2obt Nieznany (2)

background image

Robert Chwastek

Bazy danych

background image

Bazy danych

Robert Chwastek

2

                     

    !"    # $    %  &"' 
w Krakowie.

(            #      

)      *

Copyright (c) Robert Chwastek, Kraków 1996.

background image

Bazy danych

Robert Chwastek

3

+ #,

1.

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

1.1.

D

EFINICJA BAZY DANYCH

............................................................................................................................................... 5

1.2.

S

       

........................................................................................................................... 6

1.3.

T

RANSAKCJE

.................................................................................................................................................................. 6

1.4.

J

      

........................................................................................................................ 7

2.

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

2.1.

S

PIS TYPÓW DANYCH

...................................................................................................................................................... 8

2.2.

T

YP NUMERYCZNY

......................................................................................................................................................... 8

2.3.

K

ONWERSJE TYPÓW

..................................................................................................................................................... 10

2.4.

W

  

......................................................................................................................................................... 10

3.

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

3.1.

S

TRUKTURY DANYCH W MODELU RELACYJNYM

........................................................................................................... 12

3.2.

R

 

SQL ................................................................................................................................................ 13

3.3.

S

  

SQL ......................................................................................................................................... 14

3.3.1. Definicje podstawowe ............................................................................................................................................ 14
3.3.2. Rozkaz CREATE TABLE........................................................................................................................................ 15
3.3.3. Rozkaz DROP ........................................................................................................................................................ 16
3.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......................................................................................................................................... 28

3.3.16.

Rozkaz SET TRANSACTION ............................................................................................................................ 29

3.4.

O

PERACJE RELACYJNE

.................................................................................................................................................. 30

3.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.

P

ODZAPYTANIA

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

3.6.

W

IDOKI

(

PERSPEKTYWY

).............................................................................................................................................. 37

3.7.

T

RANSAKCJE

................................................................................................................................................................ 38

3.8.

N

ORMALIZACJA RELACJI

.............................................................................................................................................. 38

3.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.

O

PERATORY

................................................................................................................................................................. 50

4.1.1. Operatory arytmetyczne......................................................................................................................................... 50
4.1.2. Operatory znakowe ................................................................................................................................................ 50
4.1.3. Operatory porównania .......................................................................................................................................... 51
4.1.4. Operatory logiczne ................................................................................................................................................ 52
4.1.5.

  !   ........................................................................................................................................53

background image

Bazy danych

Robert Chwastek

4

4.2.

W

  

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

4.3.

W

ARUNKI

..................................................................................................................................................................... 55

5.

STANDARDOWE FUNKC

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

5.1.

F

UNKCJE NUMERYCZNE

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

5.2.

F

UNKCJE ZNAKOWE

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

5.3.

F

UNKCJE GRUPOWE

...................................................................................................................................................... 59

5.4.

F

UNKCJE KONWERSJI

.................................................................................................................................................... 60

5.5.

F

UNKCJE OPERACJI NA DATACH

................................................................................................................................... 61

5.6.

I

NNE FUNKCJE

.............................................................................................................................................................. 63

5.7.

F

ORMATY ZAPISU DANYCH

........................................................................................................................................... 64

5.7.1. Formaty numeryczne ............................................................................................................................................. 64
5.7.2. Formaty dat ........................................................................................................................................................... 64

6.

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

6.1.

W

PROWADZENIE

.......................................................................................................................................................... 66

6.2.

S

TRUKTURA BLOKU

...................................................................................................................................................... 67

6.3.

P

ROCEDURY I FUNKCJE

................................................................................................................................................ 67

6.4.

K

URSORY

..................................................................................................................................................................... 68

6.5.

R

EKORDY

..................................................................................................................................................................... 70

6.6.

O

  

....................................................................................................................................................... 71

6.6.1. Informacje podstawowe ......................................................................................................................................... 71
6.6.2.

"! #$    ......................................................................................................................................... 73

6.6.3.

% !&.................................................................................................................................................. 73

6.6.4.

"! #$     '!  ............................................................................................................... 74

6.7.

R

 

PL/SQL .......................................................................................................................................... 75

6.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

background image

Bazy danych

Robert Chwastek

5

1.

    

1.1. Definicja bazy danych

W pewnym uproszczeniu przez

      -

danych, a przez system bazy danych

" -         

)       *          # 

  * .  -    )  / ) -   

 -       -       # 0 

    # -    #  1*

2    # ) -/ rozumiany jako:



  #/  "           



  #/    "    # - 3   -4

      # ) -/          

    - 3    *

.  0      1    -    )  

 #             * (      
jest opis semantyki (znaczenia) danych, przechowywanych w bazie. System bazy danych

)        # 0  1* (    -   

  #/     modelu danych. Przez model danych rozumiemy

- -   / )       #   # 

#  * 5- / )     #       # 
rzeczywistego, istotnych z punktu widzenia danego zastosowania tworzy schemat bazy
danych
. Baza danych jest modelem logicznie spójnym

)  #  celowi. W

     -     ) 0   1 /      

       #*

5 -       ##   #   )    *

+  )       -          

   -     aplikacjami*       

      * & -       -     -/

*        -    )  #   
tym celu aplikacje.

6)   / ) ) -      ,



3  



)   



         #

         *  -   *     0  #1

   -  *    )      - )  *
Schemat jest opisem struktury (formatu) przechowywanych danych oraz wzajemnych

  7  *

background image

Bazy danych

Robert Chwastek

6

1.2.

   

    danych (SZBD) jest to zestaw programów

)          -   * +     -   
jest oprogramowaniem ogólnego przeznaczenia. System bazy danych

     - 

       -              

        )    *

1.3. Transakcje

$               -     

     #/ 0#/       #1* $   

    *      -    )   /  

          - ) * (   #  

   -                   
przypadku niepowodzenia którejkolwiek z nich wycofuje instrukcje uprzednio wykonane.

.    #     -     

    ,

  

    

      



   

  

 

 









background image

Bazy danych

Robert Chwastek

7

1.4.

     

8             -    )

 /    ) ,



     0   9   " 91  )  
definiowanie struktury danych przechowywanych w bazie, czyli tworzenie schematu
implementacyjnego



       0 6   9   " 691  )  

           -   *



      0 :  9   " :91  )     
transakcjami (np. zatwierdzanie lub wycofywanie)



   7 0; 9  1  )   -   -   
zgodnych z podanymi warunkami

background image

Bazy danych

Robert Chwastek

8

2. Typy

danych

2.1. Spis typów danych

Typ

Opis

char(size)

:     #    )    * 

       ) / <==* (    

    #      #/ >

character

Synonim do char

varchar(size)

W aktualnej wersji ORACLE’a jest to synonim do char, konieczne jest

    * (        )  

-       #    ?    *

date

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

#      @ "6A"BB *, CD>"8%"EFG

long

:     #    ) H==!=   *

6)  /         - *

long varchar

synonim do long

raw(size)

: -      #* +      *

I         <==* (  #     

             *

long raw

: -     #* .   #    *

(  #               
szesnastkowej.

rowid

J   #/    * .     

*      ) -/   -     
przechowywana, ale obliczana na podstawie informacji o fizycznym

)         * (  #/    ) -/

             
ROWIDTOCHAR.

number

$ * 8  #    /    >*D K
10

-129

do 9.99 * 10

124

* 6)         

       -   )*

2.2. Typ

numeryczny

$   )      -      

   *      )   /   
trzech sposobów:


number



number (precyzja)



number (precyzja, skala)

background image

Bazy danych

Robert Chwastek

9

.  #      -     )   /  >  !E* +

 # -            )   /   
-84 do 127.

W momencie definiowania kolumny numerycznej dobrym zwyczajem jest

           )        

    #           # -   *

8#   #/            -* 8#   #/

           * 8#        #/     

   -          4 *   0>D "<1

         * :       )     )

* A    )    -  /    

 -    )    4 , -0L =1 -

        *

9- )  )   /     * +   

       -#        M 

     - >D    - )/    *      
9.87E-2 oznacza 9.87 * 10

-2

.

N   -        )   

AI%:9MG        -* 6)           *

      -       -   - ,

background image

Bazy danych

Robert Chwastek

10

Specyfikacja

Typ

Precyzja

Skala

number

number

38

null

number(*)

number

38

null

number(*, s)

number

38

s

number(p)

number

p

0

number(p,s)

number

p

s

decimal

number

38

0

decimal(*)

number

38

0

decimal(*, s)

number

38

s

decimal(p)

number

p

0

decimal(p, s)

number

p

s

integer

number

38

0

smallint

number

38

0

float

number

38

null

float(*)

number

38

null

float(b)

number

b

null

real

number

63 binary (18 decimal)

null

double precision

number

38

null

2.3. Konwersje

typów

(      -    )         

    *      /     -   -

)   *      /     -        /

  * .) -     )      

       AI%:9M,

Z typu

Do typu

char

number

date

char

-

TO_NUMBER

TO_DATE

number

TO_CHAR

-

TO_DATE

date

TO_CHAR

) 

-

2.4.

   

. -    /  #      )    

 -    -   * (  #/  0J991      #

D    -      )      J99  

  )  #/   0J991*

2  O9    /    #   0   1 -

 #     # # *      O9      ,

background image

Bazy danych

Robert Chwastek

11

O90:A66 D1    #/ :A66       #/  - D #  :A66

  #/ J99*

( #/      #/ J99* *    

    -  #       #, >DDD J99 J99

J99  <DDD   >=DD  ) 0>DDD P <DDD1Q< R >=DD*

8        ) )/   #    N+ J99  N+

A$ J99* 8#    )              #

      # * . ) J99   -  #  

)  -/            #  )  J99*

AI%:9M              * $ 

 :A66 R J99           +M9M:$  

      )   * 8     AI%:9M 

      -*

background image

Bazy danych

Robert Chwastek

12

3. Model

relacyjny

5        -          

podstawowych elementów:


relacyjnych struktur danych



    )          
bazy danych



   #   -    #   #  

3.1. Struktury danych w modelu relacyjnym

.           - -  nu

  7    -  -      #* (
bazach danych relacja przedstawiana jest w postaci tabeli. Relacja jest zbiorem krotek

          )  #* S )     

  - * S )        -    

   - * S )   0 -  1       #,



  0 1   



-  0  1   



 #/   0 1    



 #/ -  0  1    



 # -  0 1   

.    -            ,

!  "

#

$ %

&  

'()*)+)*,-'

. 

/"

&

01)-2))(,-'



3  

4

++2)2()()*+





!

'))2)2)2(*2

!

 5

&

112(2()2((*

 





/ "

6 %  

!"

&78

        -        #

  -           * (    )

background image

Bazy danych

Robert Chwastek

13

                 -  

     #        )   *   

   -             # 

-   * (   #     - -      
jedna jak i druga terminologia.

$ - )   /,



zbiór encji wraz z atrybutami



-   7        - 



-     -           0    - 1

S )  -         -    

   * ( -       /      "
zabezpieczenie przed tym powtórzeniem jest realizowane poprzez pola kluczowe. Wiersze

)       "    -        

     * (     -       - 

  "  ) )         #/   

  #*

(       -  -     )   /  

      ,



J)            - * S     /

        /   -  0) 

 #/1*



3       -  -     
tabeli.



$         -        -

   " -     #      )*



J        ) - *



Unikaj powtarzania informacji w bazie danych (normalizacja).

3.2.



QL

.) -          +;9     

* A    -  #      #   *

Rozkaz

Typ

Opis

ALTER TABLE

DDL

     -    

  -  -   #/ 

      

CREATE INDEX

DDL

Tworzy indeks dla tabeli

CREATE
SEQUENCE

DDL

$  - )      - "

 * +  ) )/   
unikalnych identyfikatorów w tabelach

CREATE TABLE

DDL

$  -          
przestrzeni dla danych

background image

Bazy danych

Robert Chwastek

14

CREATE VIEW

DDL

    -    # - -
innych widoków

DELETE

DML

J   - )   - 

DROP obiekt

DDL

J     -   -  -

INSERT

DML

Dodaje nowy wiersz (lub wiersze) do tabeli lub widoku

RENAME

DDL

5    -    -  - 

SELECT

DML

Wykonuje zapytanie. Wybiera wiersze i kolumny z jednej
lub kilku tabel

UPDATE

DML

Zmienia dane w tabeli

COMMIT

DML

S7           

ROLLBACK

DML

(         -   
punktu.

SAVEPOINT

DML

Zaznacza punkt, do którego mozliwe jest wykonanie
rozkazu ROLLBACK

SET
TRANSACTION

DDL

5           "  0   
odczytu).

3.3.

   !

3.3.1.

Definicje podstawowe



N   0  1 "         #      

-    #  * I)   -    )       

        0*  CTG - CUG1* +      

         3 -      ##
napisanych w ten sposób aplikacji.



+     "      )       

  +;9* +          +;9  
ORACLE’a przedstawia tabela:

access

add

all

alter

and

any

as

asc

audit

between

by

char

check

cluster

column

comment

compress

connect

create

current

date

dba

decimal

default

delete

desc

distinct

drop

else

exclusive

exists

file

float

for

from

grant

graphic

group

having

identified

if

immediate

in

increment

index

install

initial

insert

integer

intersect

into

is

level

like

lock

long

maxextents

minus

mode

modify

noaudit

nocompress

not

nowait

null

number

of

offline

on

online

option

or

order

pctfree

prior

privileges

public

raw

background image

Bazy danych

Robert Chwastek

15

rename

resource

revoke

row

rowid

rownum

rows

select

session

set

share

size

smallint

start

successful

synonym

sysdate

table

then

to

trigger

uid

union

unique

update

user

validate

values

varchar

vargraphic

view

whenever

where

with



9- "  -/      -   * 9-        

 * (   AI%:9M - )   /      -

  * 2         -      - >D

   ) )/  -     CG - CMG* .  ,

7E2 = 7 * 10

2

25e-03 = 25 * 10

-3

     AI%:9M -      )  7/   CSG -  

C6G* 9  CSG    )   -  -/ )  >D<L 0> S1

     C6G ) -  ) )/  >DLE=VH 0> 61* .  ,

256K = 256 * 1024

1M = 1 * 1048576


I   +;9 7  # 

3.3.2.

Rozkaz CREATE TABLE

I  :IM%$M $%9M )      -  0-  1 

      )   ,



 #  -          



 #    - 



  -    #   



      -          - 

I  :IM%$M $%9M        ,

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:


 "  # -  #         #     -

 - * $ -    )    ) /     

     -    0%1

background image

Bazy danych

Robert Chwastek

16



-  "   -    -/      * (  - 

  )     /     



 W  "           # 

 * $ -    /       0     1



- W    "  #       /   -



-   "  # -    ) #/ - 



   "  #  -    



   "  #   0   #   -/  # - 1  

 )  / - 



query - jest poprawnym zapytaniem takim samym jak zdefiniowane w rozkazie

+M9M:$* 8#         )  /        "  

           #    * 6)  

  )                  

-     * 9-       -/
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

I   )    -  )  * A   / 

      ,

DROP object_type [user.]object

.)    )      )   

poszczególnych typów obiektów:


DROP CLUSTER [user.]cluster [INCLUDING TABLES]

- kasowanie

  * (        N:9JN& $%9M+     

  -          * 8#  

N:9JN& $%9M+               -/

      )   - * 8   - 

           -     -*



DROP [PUBLIC] DATABASE LINK link

"    * 8#  

 -     /  )      0%1*



DROP INDEX [user.]index

- kasowanie indeksu.



DROP [PUBLIC] ROLLBACK SEGMENT segment

- kasowanie segmentu

  0 -  1* 6) /           

)    * S       )   /
tylko administrator bazy danych.

background image

Bazy danych

Robert Chwastek

17



DROP SEQUENCE [user.]sequence

- kasowanie sekwencji.



DROP [PUBLIC] SYNONYM [user.]synonym

- usuwanie synonimu. Synonim

-  )  /         0%1* . 

)     /         # *



DROP TABLE [user.]table

"   - * (   - 

                  

 # -      )    * (      

-               *



DROP TABLESPACE tablespace [INCLUDING CONTENTS]

- usuwanie

-   * I   ) -/          0%1* (
przypadku podania klauzuli INCLUDING CONTENTS obszar danych zostanie

          * 8#   N:9JN& :A$M$+

      -            *



DROP VIEW [user.]view

"    * .      

-                  

      *

3.3.4.

Rozkaz INSERT

I         -  -  -  ) 

 * %-  /   -   ) -/  #  -    

0%1 -   /       - *

+    ,

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

Parametry:


 "    # - 



-  "   -       



  "        -  -  



?  "   #/         #  *

(  #/ ) -/     )* 8#      #/    

J99   -/     #         *



X "      +M9M:$       #/  #   

#  #   * 5    ) /   AIMI 2AI  2AI
UPDATE.

Opis:

I  N+MI$ )     O%9JM+         *

     #   0 -     1    

   #* S       #     #

  J99 0        -/        A$ J991*

8#  )    +M9M:$      O%9JM+  )   

     #  0        1* .   

background image

Bazy danych

Robert Chwastek

18

     -              

   #   0 -      #      1*

5   )   /   )  -       *

(               #      

            * .   

-/      #/     - *

Y        #        )  *

.  ,

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

I  M9M$M )      - *

+   ,

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

Parametry:

 "   )  

-  "   -  -      ) / 

  "        -    )    M9M$M 

      

  "      /    ) /* (   )

  /   -            /     

   * S    -    )     -  -

-     # $IJM - 2%9+M*

Opis:

:   7               

     -    *

.  ,
Skasowanie wszystkich wierszy w tabeli pracownicy:

DELETE FROM pracownicy ;

+         )       
numerem 2:

DELETE FROM ksiazki WHERE autor = 2 ;

background image

Bazy danych

Robert Chwastek

19

3.3.6.

Rozkaz CREATE SEQUENCE

$  - 0    1      )   

)  /   -     * +   -/ )    

    -   *       
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:


 "   )  



X "       -/       -/

  --   )   *



N:IM6M$ B "  # )      - * 8# 

-      -   -    

     "   * #      #/ >*

    ) - )  D*



+$%I$ (N$' "   -     -/     *

#   #  6NO%9JM      6%ZO%9JM 

   * J            

 #/             MZ$O%9*



6NO%9JM "  #    #/   )  /   *

#        >        #/

 ">D<V P >* .  A6NO%9JM   )    -

  /  #  *



6%ZO%9JM "  #      #   )  /   *

(  #  #   ">  >D<V " >        

* (   A6%ZO%9JM   )    -

  /  #   *



:B:9M A:B:9M " #   #  A:B:9M    ) ) 

           7  * ( 

   ) -         -* (

       :B:9M    #     

    #   0   1 -    #

        0    1    
cykl generacji numerów.

background image

Bazy danych

Robert Chwastek

20



:%:'M A:%:'M "  :%:'M     "   

                - #

    -* S  A:%:'M   )  #/* # 

   :%:'M <D* (  #/   :%:'M  -/  )
MAXVALUE - MINVALUE.



AIMI AAIMI "  AIMI     )   - -

                  *

S  AAIMI    #/* S #/     

 )      )   #/ 0  1   

 * 5      )            
do generacji kluczy pierwotnych.

Opis:

+   -/ )           - 

-   -    )    * %- /        # 

  )     ) /   +M9M:$    * + 

)   / *

        )  -     -/

)    -      ) -  )    * 8 

)   )            )   

   )             *    

)   )   / -   )  )        

  0  )        )   1*

             , MZ$O%9  :JIIO%9*

.   MZ$O%9  )         #   

 * +       ,

sequence.NEXTVAL

 X      *

.   :JIIO%9        #  *

%- )   - ) :JIIO%9   # ) MZ$O%9

       * +          ,

sequence.CURRVAL

 X      *

.   MZ$O%9  :JIIO%9  -/ )  ,



  +M9M:$    +M9M:$ 0     1



#  #   N+MI$



 ) +M$   J.%$M

.   MZ$O%9  :JIIO%9  ) ) / ,

podzapytaniach

#     



     N+$N:$



z klauzulami ORDER BY, GROUP BY i HAVING w rozkazie SELECT



z operatorem ustawienia (UNION, INTERSECT, MINUS)

background image

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

I  +M9M:$ )  #         -   - *

6) -/ )    -   - 0     1     

-       * %-  /     #  -  - -/

  #  /   +M9M:$   -  - -/    - 
(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:


%99 "    #     )        

  +M9M:$    /   *



N+$N:$ "  #  )         /   

      *          #   

 #  )          +M9M:$  -  *



K "    )         -    /
pokazane.



- *K "    )        -     /   



[ "  )       #   



W   "         0  1    )     )

         #   * ( )  -    

     * %       -/ )    
miejscu zapytania.



\*] -  "  #  -      )   /* 8#  )    

   #     )     0    
SELECT).

background image

Bazy danych

Robert Chwastek

22



W   "   # /      -    -     *

 #  )        * (        

 -          /      *



  "       /  -     

  * (            #   *



  "      -       )  
SELECT, a nie na nazwie.



%+: M+: "  #  )        -/     #

 -   0 1*



  "      )    -     2IA6*



A(%N$ "  #  ) AI%:9M    /     )   

    /  )  #/  -         

 -      )   *

Opis:

J)    -            )      

-    #     -        

         ,



#    -                    -/

)   +M9M:$



AI%:9M      - 7 #           - 

 /*

.          +M9M:$       #

  *

.  ,

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

I  J.%$M )         - * (  

       -  #  -     0%1 -

    7 J.%$M   - *

+   ,

UPDATE [user.]table [alias]
SET column = expr [, column = expr] ...
[ WHERE condition ]

background image

Bazy danych

Robert Chwastek

23

lub

UPDATE [user.]table [alias]
SET (column [, column] ...) = (query)
[, column [, column] ...) = (query) ] ...
[ WHERE condition ]

Parametry:


 "    # - *



-  "     - *



  "     )      -     
rozkazu.



  "      - *       - #      

    *



[ "  ) "       #   



X "   +M9M:$ -  AIMI B  2AI J.%$M      

   - *



  "    * (      /  #/ $IJM - 2%9+M*

(   -     #   

Opis:

S  +M$  #              #

  -/    * S  ('MIM  #       /

   ) /  #   #  * 8#  

('MIM             - *

I  J.%$M  )         ('MIM

-   #  )7           CRG   

 #    #            *

8#   +M$          /    

  )    * S )  #/     

 #  #  * 8#     0        +M$ ?  R

X1              J99*

5   )   /     - * 8  -    

 )          J.%$M*

.  ,

UPDATE pracownicy

 

 

;

3.3.9.

Rozkaz RENAME

I  IM%6M     -    - * 5  )

  /  # -    - *

background image

Bazy danych

Robert Chwastek

24

+   ,

RENAME old TO new

Parametry:
old - aktualna nazwa tabeli, widoku lub synonimu

 " )    -    - 

Opis:

(          -         -

     * 5      )  /    * 5 

     ) -/         , :IM%$M $%9M

IA. $%9M  IM%6M    -,

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

I  )    - * (      ,



dodaje kolumny i warunki



modyfikuje definicje kolumn jak typy i warunki



usuwa warunki



   -    



  )   %:SJ.        - *

%-   /    - -/  #  -  /   %9$MI 

-  - -/    0%1*

+   ,

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:


\*] -  "  #  -   - /* 8#    )    

    #     )         *

background image

Bazy danych

Robert Chwastek

25



%Q6AN2B  W  "   -     

    -  # #   #   *



% - W   "       # - *



IA.    "      -  *



%:SJ. "    #/     0   1  )  

         -  G -       
wykonywania rozkazu ALTER TABLE.

Opis:

8#  )    %           

-    #/ )     -   J99* (     

)           A$ J99         
wierszy.

S  6AN2B )  / )       -   ,



rozmiar



typ danych



NOT NULL

5   -    )    lko wtedy, gdy wszystkie

 #      J99* 6)     )   A$ J99

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

 A$ J99           A$ J99*

(          -      - 

0+M9M:$ K 2IA6 ***1  )    /   #   -    

          *

.  ,

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

ALTER TABLE pracownicy
MODIFY (placa NUMBER(9, 2))
;

3.3.11.

Rozkaz CREATE INDEX

I        -  -   * N     -#

    -             * N 

     )  #          *

N  )  /  # -  )        NMZ 
danej tabeli lub administrator (DBA).

+   ,

CREATE [UNIQUE] INDEX index ON
{table(column [ASC|DESC][, column [ASC|DESC]]...) |

background image

Bazy danych

Robert Chwastek

26

CLUSTER cluster}
[INITTRANS n] [MAXTRANS n]
[TABLESPACE tablespace]
[STORAGE storage]
[PCTFREE n]
[NOSORT]

Parametry:


JN;JM "     ) -            

 #         * (    AI%:9MG

#     JN;JM       -   - )   /

    *



  "     *    -/   ) 

-  -      )   *



-  "     -       *



column - nazwa kolumny w tabeli.



%+: M+: "       AI%:9M     

 - #    <        *



:9J+$MI    "  #        



A+AI$ "   AI%:9MG  )     -   )

                
indeksu.

Opis:

N        ,



             



              *

 )   /   )            

 #        )    #/     

     # - *

      ) -/    ) >H  * Jeden element

       #       * (

    ) -/ )        -    #/

  *    #/      ) * 8#      

        %  :   #     ) 
do wyszukiwania konkatenacji kolumn A, B, C, kolumn A i B lub tylko kolumny A. Nie

-    )             : -
pojedynczej kolumny B lub C.

6)          #     -   - *

 )    / )         -   

   ) #/ )  #/    *

.  ,

CREATE INDEX i_prac_imie ON pracownicy (imie) ;

background image

Bazy danych

Robert Chwastek

27

3.3.12.

Rozkaz CREATE VIEW

I  )        -  -    -

  - * J /  )  # -  )       
co najmniej uprawnienia SELECT lub administrator.

+   ,

CREATE VIEW [user.]view [(alias [, alias] ...)]
AS query
[ WITH CHECK OPTION [CONSTRAINT constraint] ]

Parametry:


 "  #   



view - nazwa tworzonego widoku



X "        -    -   * 5   )

-/        +M9M:$      AIMI B
ani FOR UPDATE.



(N$' :'M:S A.$NA "  )         

      #        -

    * S  (N$' :'M:S A.$NA ) -/ )  

-     *



:A+$I%N$ "       (N$' :'M:S A.$NA*

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.



 ) -/ )    +;9      )   

) -     ) ) )   /         
gdy zapytanie na którym bazuje widok zawiera:






klauzule GROUP BY, CONNECT BY lub START WITH



  N+$N:$    -  )  #  

6)            tóry posiada pseudokolumny

-  )       J.%$M         -

 ) *

(   )  ,



       - -      

  #    -  -  -  



  )#   "      ) -/ )       

-   -    )         - *

background image

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:

I  :A66N$  :A66N$ (AIS           a

 7                  
bazie danych.

3.3.14.

Rozkaz ROLLBACK

+   ,

ROLLBACK [ WORK ] [TO [ SAVEPOINT ] savepoint ]

Parametry:


(AIS "         - #     %+N



+%OM.AN$ "          IA99%:S



savepoint - nazwa punktu zaznaczonego podczas wykonywania aktualnej transakcji.

Opis:

I  IA99%:S      )      0   
klauzuli TO) lub poczatku transakcji (bez klauzuli TO).

.  ,

ROLLBACK ;

ROLLBACK TO SAVEPOINT SP5 ;

3.3.15.

Rozkaz SAVEPOINT

+   ,

SAVEPOINT savepoint

background image

Bazy danych

Robert Chwastek

29

Parametry:


savepoint - nazwa punktu w aktualnej transakcji zaznaczanego przez wykonywany
rozkaz

Opis:

I  +%OM.AN$  )    IA99%:S   

        *       -/   

  * +     -         #   

-     )   /    *

.  ,

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 TRANSACTION

+   ,

SET TRANSACTION { READ ONLY }

Parametry:


IM% A9B "      /

Opis:

I     )       -    /    

  7*   )   )        N+MI$ J.%$M -

M9M$M* I  +M$ $I%+%:$NA   /       

       -*

background image

Bazy danych

Robert Chwastek

30

3.4. Operacje relacyjne

A  -        -         

  * ()        ,



   " )    -   0 1      # 
warunki;



  " )         -  -  0  1



 " )       0 1    



   #   #     7   *

3.4.1.

Selekcja

Operacja

   )   -    0 1    # 

 * A       ) podzbiorem poziomym.

!  "

#

$ %

&  

'()*)+)*,-'

. 

/"

&

01)-2))(,-'



3  

4

++2)2()()*+





!

'))2)2)2(*2

!

 5

4

112(2()2((*

 





(   +;9       )     +M9M:$    ('MIM*

.     ,

SELECT * FROM osoby;

spowoduje wybranie wszystkich krotek (wierszy) z relacji (tabeli) ludzie.

(   -         C(  G    C+AG

0#  1  )   /,

SELECT * FROM osoby

    

;

(       -/ )* .    - - /   -

      # 0#  " +$ - #   " +A1

)     /    AI     /

   -,

SELECT * FROM osoby

        

;

background image

Bazy danych

Robert Chwastek

31

  )7             #   *

3.4.2.

Projekcja

.  )   -   # -  -    

    +M9M:$       * A      )
podzbiorem pionowym.

!  "

#

$ %

&  

'()*)+)*,-'

. 

/"

&

01)-2))(,-'



3  

4

++2)2()()*+





!

'))2)2)2(*2

!

 5

4

112(2()2((*

 





&9   :

'()*)+)*,-'

&

01)-2))(,-'

4

++2)2()()*+

!

'))2)2)2(*2

4

112(2()2((*



.              )   /  

     +M9M:$,

 !"    #$%%& '

A         -/     +M9M:$* N

   /      .      -   #

    )   /,

SELECT Pesel, Nazwisko FROM osoby

        

background image

Bazy danych

Robert Chwastek

32

;

3.4.3.

Produkt

. 0    7 1     - * A  )  

   -     - ) )      

  )     * (       #    

                     

   )        * .        

  7     *

/















/

/

/













;2

;(

5       7      0 - 1   )

      +M9M:$* .       )   /

      ,

SELECT * FROM R1, R2;

Operacja znajd

      7  ) -/     

       )   - -  #*

3.4.4.

 

A          -        

 #     * (    -    *

background image

Bazy danych

Robert Chwastek

33

/ 

69

(

2

*

!  



3  <==

2

(

/





 %

!  

/

 %



/

 %

2

(

2

A        )   /     

SELECT.

SELECT imie, nazwisko, tytul
FROM autorzy, ksiazki
WHERE autorzy.nazwisko = ‘Mickiewicz’ and
autorzy.nr = ksiazki.autor
;

3.4.5.

  

A  #       - * (   +;9   

)   /    0 - 1          )

-         *
3.4.5.1.

Unia

J     -     -    0-

 7 "    #1* (    #    

#/ -   -  0  1    * .  

  )  -       #      

   0   1           

    ,

SELECT imie, nazwisko FROM pracownicy
UNION
SELECT imie, nazwisko FROM wlasciciele ;

3.4.5.2.

Przekrój

Prze

   3/     -  -   * 

           * .-     

   #     #/ -   -   
bazowych.

.)           0*       

1                 # *

background image

Bazy danych

Robert Chwastek

34

SELECT nazwisko FROM pracownicy
INTERSECT
SELECT nazwisko FROM wlasciciele ;

3.4.5.3.



Operacj

-   )              

           *

.       -     #      

niej zatrudnieni:

SELECT imie, nazwisko FROM wlasciciele
MINUS
SELECT imie, nazwisko FROM pracownicy ;

3.4.6.

Grupowanie

S   &IAJ. B  '%ON&     +M9M:$  

 /        - /        )   

-   /   0     1  * A      

        *    7       

-    -    0       

    1*

Klauzu

&IAJ. B )          * +-

        ,

SELECT stanowisko, avg(placa_podstawowa)
FROM pracownicy
GROUP BY stanowisko ;

N  )  #/         a grupy.

        ('MIM,

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 ;

S  '%ON&   #          # 

 * : #  /           

       ) ! DDD  )    /      ,

SELECT stanowisko, max(placa_podstawowa)
FROM pracownicy

background image

Bazy danych

Robert Chwastek

35

GROUP BY stanowisko
HAVING max(placa_podstawowa) > 3000 ;

3.4.7.

   !"!#$

S            +M9M:$     

    #,
1.

SELECT i WHERE

2.

GROUP BY

3.

HAVING

4.

ORDER BY

3.5. Podzapytania

5    +;9  -/  ))  *      )

-/ )  *           * .   )  / 
dwa rodzaje:


podzapytania proste (nazywane po prostu podzapytaniem) - podzapytanie jest
wykonywane

przed

       4



       "         )  

    *

 #    )     ('MIM   +M9M:$* 8# 

  )      -   #/   #/  )

)/ -#     ('MIM    -,

SELECT nazwisko
FROM pracownicy
WHERE placa_podstawowa =
(SELECT min(placa_podstawowa)
FROM pracownicy)
;

. )               -   *

8#        -   #   

)   N     *            

  -         ) )/      ,

SELECT nazwisko, nr_wydzialu
FROM pracownicy
WHERE placa_podstawowa IN
(SELECT min(placa_podstawowa)
FROM pracownicy
GROUP BY nr_wydzialu)
;

background image

Bazy danych

Robert Chwastek

36

9-  #     -/            

operatora IN.

(       / )  )   %B  %99* A  %B

  /   )           * A 

%99 )                *

+     %B  %99      )       #

  *

.   )  /  )   '%ON&* .)   

#    #  -     )   !D,

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)
;

5    -/  ))       #/  * .  ) 

  7  )    / ,



     )   /  AIMI B 0)   /

          14



    ))      #   -   ))

      -  )            *

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)
;

(          7     7  

      -            

  * 8#                  

 )          -          

  0              ^   @1*

background image

Bazy danych

Robert Chwastek

37

3.6. Widoki (perspektywy)

(            -    -  - 

* *        )      * ( 

      * (           

    -   -  0 -  1* (      ,



     - -   



   7     



    )#        

5     #/ -            )

 /  ,



proste



)

(       +M9M:$       

              )    
danych zawartych w widoku.

Widok

          -        

 7  +;9  )   *

( )          -   )   /  

      * :    )  #/    

)   # - )  #        0   
wszystkich systemach).

    )   #   :IM%$M ONM(* .)

         -  -         

         0- )  #         1,

CREATE VIEW personalia
AS
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
;

background image

Bazy danych

Robert Chwastek

38

3.7. Transakcje

$             , :A66N$  IA99%:S*

.       )      -      

          * .     

         -   * A   

       J.%$M "     -    

            -       * 5

          )  -/    -   - ) *

8#  -     -        - - ^ @ - 

^)@*

I  :A66N$ )            racji.

.       )    -       

 )    * (            

  J.%$M  )   / :A66N$          

 * A        -    )    *

I  IA99%:S    # :A66N$* 8   )   7

            -   
rozkazu COMMIT lub ROLLBACK.

Rozkaz SAVEPOINT pozwala na zaznaczenie i nazwanie pewnego punktu

     * (  -     IA99%:S $A )   

#       0 *          

     1* (     IA99%:S $A   #   

         7 )* (   IA99%:S -
COMMIT powoduje skasowanie wszystkich uprzednio zaznaczonych punktów.

8 -    - )    7/   :A66N$ -

IA99%:S* 8#     - 7    - -       

          /   /* 6)   

    /       -     - 
skrypt.

3.8. Normalizacja relacji

3.8.1.

Cele normalizacji

              -      

) * 8     )  /  )  

0   1  * 8#    -           

     0*         1        3 

    0      /       - /  

     - - 1* N  )      

)  #     -    0*          1*

(3          -      

 * I  )   /    - ,

background image

Bazy danych

Robert Chwastek

39



nazwa przedmiotu,



imie,



nazwisko,



(% )*%

.        - /  /,

+,-  * ! "  ".% "

ul. Królewska 30/3 Kraków)

8               - ,



         #            

)       -  S      -   4



   ) /               
redundancja danych;



         0* 1   #/  

                 #4



  )            

    )   /4



   )   /  )      

-     *

J     #  -      * 8    

)  /       -     ,



  . ,

 /  %" 0 -"   %" %  (% % " 0 ,%%12"

ulica, nr_domu, nr_mieszkania



  5 

  " (% )*%

S )    ^5  @          ^. @ 

  -     ^W @* $        

  #  )   ),



      #          )   

     *   #     4



       0* 1    #  

    ^5  @* 5  -     4



)         -     /  

   -/ ) -        4



          -     *

8        -    #

     *   -     -    

    -   -       *

3.8.2.

  

I         #   # -     

*     #  #    -  #*

.   /     - -  ) -   /  *

( #/   -      )  # -  -  -

background image

Bazy danych

Robert Chwastek

40

     * .            
postaci normalnej ilustruje rysunek:

$

>% 

#

%

))2

))(

))*

 .



 .

)2)

)()

)2)

$ %

%

#

 7

$ %  7

#"78

)1+

)11

)')

)1+

)')

 %

 % #?4

$  <

 %

$  <

/  %

  -

&"  *

  -

*)

1)

2)

+)

21

>% 

$

>% 

#

%

))2

))2

))(

))*

))*

 .

 .



 .

 .

)2)

)2)

)()

)2)

)2)

$ %

%

#

 7

$ %  7

#"78

)1+

)11

)')

)1+

)')

 %

 % #?4

$  <

 %

$  <

/  %

  -

  -

&"  *

  -

  -

*)

1)

2)

+)

21

>% 

3.8.3.

Definicje pomocnicze

%-  /               

postaci normalnej. Przed omówieniem procesu normalizacji konieczne jest jednak

    /,

background image

Bazy danych

Robert Chwastek

41



Uniwersalny schemat relacji R = {A

1

, A

2

, ..., A

n

_  - -  

 *



& '    R = {A

1

, A

2

, ..., A

n

} nazywamy zbiór atrybutów S



R, który jednoznacznie identyfikuje wszystkie krotki relacji o schemacie R. Inaczej

  )       I    /    

1

i t

2

 )

t

1

[S] = t

2

[S].



Kluczem

S     I      -    *  )

nie istnieje K’

 S - -      I* S     

    )*



Klucz nazywamy kluczem prostym

 )  - -      

jest zbiorem jednoelementowym; w przeciwnym wypadku mamy do czynienia z
  %*  #   ) )/    
nazywamy kluczami potencjalnymi

* 8 0 - 1  # 

potencjalnych nazywamy

  ( 0  1     

   0  1*

      ^5   @        

-  0     N #1*  )   )/ )       

   )     )  /   #*



Atrybut relacji nazywamy podstawowym

 )   )       

relacji.



Atrybut relacji nazywamy wtórnym

 )    )  )      *



Atrybut B relacji R jest

'  %  -  %    0  # 

 )   ) % identyfikuje B i oznacza A  1 #      #

-  %      )   #/ - -  *

5 )#/       -  %        

         #        )#  

-       #*

N  ) - %     0 * )       )  %1

           -  %  * (  - 

 )#           ^5   @ )   /

  ,

background image

Bazy danych

Robert Chwastek

42

# %

$ % %

#  7

/  %

$ %  7

$ >% 

#"78



Atrybut B jest

'  % zbioru atrybutów X w schemacie R,

)  Z  Y i nie istnieje podzbiór X’  Z  ) ZG  Y.

 )  /   )    )#     

       )#    *



Zbiór atrybutów Y jest

  '   %  zbioru atrybutów X w

  I )  Z  Y i istnieje podzbiór X’  Z  ) ZG  Y.



 Z B  5 -   -  -     * .-
atrybutów Z jest

 '  %  - -  Z # 

- -  5      )  - -  B  -

-  B      )  - -  Z    -

-  Z       )  B  - -  B  

    )  5*

.      ^5   @ -  ^   @  ^%  @ 

     )  -  ^    @  ) - ^N

 @      )  -  ^    @  -  ^ 

 @   ^%  @      )  ^N  @*

I # )   )/ ) ^N  @       ) 

^    @ 0 -/         1   ^%  @

0 )     ) /    *



6  ) - -  B     #      ) 

- -  Z   I )           I 
dla dowolnej pary krotek t

1

i t

2

     )

1

[X] = t

2

[X], istnieje taka para

krotek s

1

i s

2

   )

s

1

[X] = s

2

[X] = t

1

[X] = t

2

[X] oraz

s

1

[Y] = t

1

[Y] i s

1

[R-X-Y] = t

2

[R-X-Y] oraz

s

2

[Y] = t

2

[Y] i s

2

[R-X-Y] = t

1

[R-X-Y].

background image

Bazy danych

Robert Chwastek

43

6    )         

1

i t

2

     )  # 

   -   - Z  -   0  

1

[x] = t

2

[X]),

      # -   - B     
sposób krotki s

1

i s

2

 )  )    *

.       / ) ^S  @      ^% @  ^6  @

  )     @8 :@  ^+   @    ^ @ 

 ^8  @ ^8 @  ^%   @        ^   @ 

^$   @ )  /    - ,

 

&

$ %

3  <

/.  

6%"

   

/.  

6%"

3  <

.

6%"

   

.

6%"

  

3%

$%

!%

   ">%

3

$%

   ">%

3%

$%

  

3

$%

   ">%

/"  

$%

  

/"  

$%

A #  - Z R 0   1  B R 0 1   ) I-X-Y =

0(  1* .    ,

t

1

R 0S   %  8 :1

t

2

= (Kowalski, Magda, Systemy operacyjne)

odpowiada para krotek

s

1

= (Kowalski, Agnieszka, Systemy operacyjne)

s

2

R 0S   6   8 :1

 )  /   )        )  

)   #   )#  - -    0 
wypadku jednoelementowego zbioru atrybutów (Dziecko) od jednoelementowego

- -  0(  11*



5     #   )#      ),



-         #      )    
zbioru atrybutów X

background image

Bazy danych

Robert Chwastek

44



#  ZBRI  Z     #      )  B     *

5 )#       % 

funkcjonalnymi.



    I R 0%

1

, A

2

, ..., A

n

1        -

0  1     0I

1

, R

2

, ..., R

m

1  ) )

schemat R

i

z tego zbioru stanowi podzbiór zbioru atrybutów (A

1

, ..., A

n

) i















  @ @









6  )     I R 0%

1

, ..., A

n

1     )#/

   0   , KI\I

1

, ..., R

n

]1       )  

dekompozycja relacji r (o schemacie R) na relacje r

1

, ..., r

n

 )      

)    /            

1

, ..., r

m

.

6)   / )    #  )#/        

     )#      R <*



6  )   )#/    KI\I

1

, ..., R

m

]    )#

atrybutów schematu R od klucza wtedy i tylko wtedy, gdy w dowolnej sekwencji

7                   )

         -      I*

3.8.4.

)  

I        )  ) -  0 * 

    )     1        

 )          *

6)   )/ )   ^5   @       

 ) -  ^N  @ ^   @ ^%  @  ^ 

#@        )       "   0^

   @ ^N #@1*

(              )  /  

      -  -      )  * (

         ^5   @  )  /    , ^ 

   @ ^5    @ ^:#@    -,

$

>% 

#

%

))2

 .

)2)

$ %

%

/  %

  -

))(



)()

&"  *

))*

 .

)2)

  -

%  >% 

background image

Bazy danych

Robert Chwastek

45

$

>% 

))2

))2

))(

))*

))*

#

 7

#"78

)1+

)11

)')

)1+

)')

*)

1)

2)

+)

21

>% %

#

 7

$ %  7

)1+

)11

)')

 %

 % #?4

$  <

< 7

8  /              ) 

  ^     @   ^:#@         -

^N #/@   ^5    @       )  

) 0^    @ ^N #@1*

 )   )/ )   -       

       #         
kluczami prostymi.

.    relacji „Zamówienia” do drugiej postaci normalnej otrzymujemy

    )#   ,



Dostawca na zamówieniu

background image

Bazy danych

Robert Chwastek

46

# %

$ % %

/  %

$ >% 



Zamówione dostawy

#  7

$ >% 

#"78



:#

#  7

$ %  7

3.8.5.

$  

          #      

   )  -      )      

      )  )        *

%-  /    -      )#

    )  /           )#/   *

.        ,



<

/



/

<



(        )#/     

 -  ^   @  ^%  @ -  ^

background image

Bazy danych

Robert Chwastek

47

   @   ^     @* (       

       ^     @     , ^5   @ 

^ @    -,

$

>% 

#

%

))2

)2)

))(

)()

))*

)2)

>% 

#

%

 .

)2)

$ %

%

/  %

  -



)()

&"  *



)*)

! 21

%

3.8.6.

#  

        I           - Z

B 5 -   I  ) Z  Y  Z = R i podzbiór Y jest nietrywialnie

   #   )  Z*

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

         #  )#/ - B  Z   -

    )#/   -      Z*

`    )/ ) - ^.  @      #   )#

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

 ) -  ^ @  ^(  @       )  - 

^   @ *       )      )#/ 
atrybutami.

8                #   )#/

          * +    )     

       #   )#/     )  /    

 -   /    )#   *

background image

Bazy danych

Robert Chwastek

48

(        ^.  @ )  /     ,

^@  ^(  @  -   /         #   )#/

  ,

 

$ %

/.  

6%"

.

6%"

3%

$%

 

3

$%

/"  

$%

&

$ %

3  <

6%"

   

6%"

  

$%

&

   ">%

$%

3.8.7.

  

        I        wtedy i tylko wtedy,

                  

 )#    KI\I

1

, ..., R

m

]  )#/    )# -  

klucza.

   ) #        )       

   -     - - )  -  / 0  

-/  1                 

      -   )   / -  - )   

            *

(   )               

           / -   )  *

3.8.8.

Podsumowanie

.            )   # 

  #    -     *

background image

Bazy danych

Robert Chwastek

49

.              -  / -  

 * J   7           -

   -   * 6       -    

   / )#/    -   )      /   

-        #/  *

background image

Bazy danych

Robert Chwastek

50

4.

 "

(     )                 

  *

4.1. Operatory

+          +;9     

           *

4.1.1.

Operatory arytmetyczne

A               nego. Jednak

       -/ )      %$M* +  

           - ,

Operator

Opis



( )

5    #/   

  7* (       

  



  



        *

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

+, -

Operatory jednoargumentowe zachowania i
zmiany znaku.

... WHERE NR = -1
... WHERE -PLACA < 0

*, /

6)  

SELECT 2*X+1
... WHERE X > Y/2

+, -

Dodawanie, odejmowanie

SELECT 2*X+1
... WHERE X > Y-Z

4.1.2.

Operatory znakowe

8              nkatenacji.

I            -    *

 )   / )     :'%I   -/ ) ) <==   *

A      )     -     
operatora konkatenacji.

Operator

Opis



||

S     

SELECT ‘Nazwa: ‘ || ENAME ...

background image

Bazy danych

Robert Chwastek

51

4.1.3.

Operatory porównania

A           )     

      )7* (            

 #/  0$IJM - 2%9+M1*

Operator

Opis



( )

5

 

 #/

     7

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

=

+      ) 
równe

... WHERE PLACA = 1000

!=, ^=, <>

+      ) 

)

... WHERE PLACA != 1000

>

(  )

... WHERE PLACA > 1000

<

6 )

... WHERE PLACA < 1000

>=

(  -   )

... WHERE PLACA >= 1000

<=

6 -   )

... WHERE PLACA <= 1000

IN

Równy dowolnemu elementowi.
Synonim do „ = ANY”

... WHERE ZAWOD IN
(‘URZEDNIK’, ‘INFORMATYK’)

... WHERE PLACA IN (SELECT
PLACA FROM PRAC WHERE
WYDZIAL=30)

NOT IN

I)  )     *

(   2%9+M # 
dowolny element zbioru jest równy
NULL
Synonim do „!= ALL”

... WHERE PLACA NOT IN (SELECT
PLACA FROM PRAC WHERE
WYDZIAL=30)

ANY

.   #/  )

 #  -   

 * 6 -/ 
jednym z operatorów: =, !=, >, <,

aR bR* 5   $IJM # 
przynajmniej jeden z elementów

    *

... WHERE PLACA = ANY (SELECT
PLACA FROM PRAC WHERE
WYDZIAL =30)

ALL

.   #/  )

 #  -   

 * 6 -/ 
jednym z operatorów: =, !=, >, <,

aR bR* 5   $IJM #  )

      
warunek.

... WHERE (PLACA, PREMIA) >=
ALL ((14900, 300), (3000, 0))

[NOT]
BETWEEN

\]   -   [ 
mniejszy lub równy y.

... WHERE A BETWEEN 1 AND 9

background image

Bazy danych

Robert Chwastek

52

x AND y
[NOT]
EXISTS

5   $IJM #     \]
zwraca przynajmniej jeden wiersz.

... WHERE EXISTS (SELECT PLACA
FROM PRAC WHERE WYDZIAL =
30)

[NOT]
LIKE

\]    *

9  CcG  )  

      

  0D - 1  
jest równy NULL. Litera ‘_’

      

 *

... WHERE STAN LIKE ‘T%’

IS [NOT]
NULL

[Nie] jest równe NULL.

... WHERE ZAWOD IS NULL

A  A$ N   2%9+M 0      ('MIM   )

)       1 #  /          
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

(              # J99   #/

J99*   )         -  #/ J99*

4.1.4.

Operatory logiczne

A   )     - 7   #   

0  # -   -     1*

Operator

Opis



( )

5

 

 #/

     7

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

NOT

5 

 )

"

gicznego

... WHERE NOT (zawod IS NULL)

WHERE NOT (A=1)

AND

Logiczne ‘i’. Wynik jest równy

$IJM

# 

 #

-

     $IJM

... WHERE A = 1 AND B = 2

OR

Logiczne ‘lub’. Wynike jest równy

$IJM    #/  

... WHERE A = 1 OR B = 3

background image

Bazy danych

Robert Chwastek

53

jednego operandu jest równa
TRUE

.) -           %  AI  )

 #,

AND

true

false

null

true

true

false

null

false

false

false

false

null

null

false

null

OR

true

false

null

true

true

true

true

false

true

false

null

null

true

null

null

4.1.5.

  

Operatory zbiorowe

        7 -    #*

Operator

Opis



UNION

J   - * ` 

-       

     *

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

INTERSECT

:#/     - *

.        
tylko raz

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

MINUS

A-  )   - * (

       

       

-     *

M        
tylko raz

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

4.2.

"

( )    -   #   -  * (

-    )  -/  #* (  #     )  
operandów.

         ) )  ,



numeryczny:

2 * 2



znakowy:

TO_CHAR(TRUNC(SYSDATE + 7))

background image

Bazy danych

Robert Chwastek

54

( ) ) -/ )     )    )  #   *,

SET Nazwisko = LOWER(Nazwisko)

N  /   )7,



     -  #/  

+   ,

[table.] { column | ROWID }

text

number

sequence.CURRVAL

sequence.NEXTVAL

NULL

ROWNUM

LEVEL

SYSDATE

UID

USER

.  ,

pracownicy.nazwisko

%, )*  3

10

SYSDATE



        

+   ,

: { n | variable } [ :ind_variable ]

.  ,

:nazwisko_pracownika:nazwisko_pracownika_indykator

4(%%5  



    

+   ,

function_name( [DISTINCT | ALL] expr [, expr] ... )

.  ,

LENGTH(‘Kowalski’)

ROUND(1234.567*82)



-   )7    

+   ,

(expr)

+expr, -expr, PRIOR expr

expr * expr, expr / expr

expr + expr, expr - expr, expr || expr

.  ,

(‘Kowalski: ‘ || ‘Nauczyciel’)

LENGTH(‘Nowak’) * 57

SQRT(144) + 72



  )7    

+   ,

(expr [, expr], ...)

background image

Bazy danych

Robert Chwastek

55

.  ,

(‘Kowalski’, ‘Nowak’, ‘Burzynski’)

(10, 20, 40)

(LENGTH(‘Kowalski’) * 5, -SQRT(144) + 77, 59)

( )  )  ,



#     +M9M:$



jako warunek w klauzulach WHERE i HAVING



w klauzulach CONNECT BY, START WITH, ORDER BY



klauzuli VALUE w rozkazie INSERT



w klauzuli SET rozkazu UPDATE

4.3. Warunki

(        -   )7    *

(     -     # $IJM - 2%9+M* (    /

 )  ,



     ) -     

<expr> <comparison operator> <expr>

<expr> <comparison operator> <query>

<expr-list> <equal-or-not> <expr-list>

<expr-list> <equal-or-not> <query>



porównanie z dowolnym lub ze wszystkimi elementami listy lub zapytania

<expr> <comparison> { ANY | ALL }

( <expr> [, <expr] ...)

<expr> <comparison> { ANY | ALL } <query>

<expr-list> <equal-or-not> { ANY | ALL }

( <expr-list> [, <expr_list>] ...)

<expr-list> <equal-or-not> { ANY | ALL } <query>



   )#    -   

<expr> [NOT] IN ( <expr> [, <expr>] ... )

<expr> [NOT] IN <query>

<expr-list> [NOT] IN

( <expr-list> [, <expr-list>] ... )

<expr-list> [NOT] IN <query>



   )#     #

<expr> [NOT] BETWEEN <expr> AND <expr>



    #/    J99

<expr> IS [NOT] NULL



            

background image

Bazy danych

Robert Chwastek

56

EXISTS <query>



kombinacja innych warunków (podana zgodnie z priorytetami)

( <condition> )

NOT <condition>

<condition> AND <conditin>

<condition> OR <condition>

.  ,

Nazwisko = ‘Kowalski’
pracownicy.Wydzial = Wydzialy.Wydzial
Data_urodzenia > ‘01-JAN-67’
Zawod IN (‘Dyrektor’, ‘Urzednik’, ‘Informatyk’)
Placa BETWEEN 500 AND 1500

background image

Bazy danych

Robert Chwastek

57

5.

    # !

5.1. Funkcje

numeryczne



Przeznaczenie



ABS(n)

5    #/ -   - 

ABS(-15)
Wynik: 15

CEIL(n)

5     -     

  -   

CEIL(15.7)
Wynik: 16

FLOOR(n)

5       -     

 -   

FLOOR(15.7)
Wynik: 15

MOD(m, n)

5        -    MOD(7, 5)

Wynik: 2

POWER(m, n)

5   -      *

9-   -/     4

       -*

POWER(2, 3)
Wynik: 8

ROUND(n[, m])

5   -        

  * 8      

  D* 9-  ) -/

  -  0    
odpowiedniej liczby cyfr przed
przecinkiem)

ROUND(16.167, 1)
Wynik: 16.2

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

SIGN(n)

5   D #      D "> #  

   D > #     
od 0

SIGN(-15)
Wynik: -1

SQRT(n)

Zwraca pierwiastek kwadratowy liczby n.

8#  aD    -

SQRT(25)
Wynik: 5

TRUNC(m[, n])

5    -     

 * 8#       

  D* 8#     

-      *

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”

background image

Bazy danych

Robert Chwastek

58

INITCAP(string)

5      )   

)         *

INITCAP(‘PAN JAN
NOWAK’)
Wynik: „Pan Jan
Nowak”

LOWER(string)

Zamienia wszystkie litery w podanym

    *

LOWER(‘PAN JAN
NOWAK’)
Wynik: „pan jan
nowak”

LPAD(string1, n
[, string2])

5     >   #

        

  <* 8#   <     

     * 8#   

  #  > 
zwracane jest n pierwszych znaków z
tekstu string1.

LPAD(‘Ala ma ‘, kota*,
17)
Wynik:
„kota*kota*Ala ma ”

LTRIM(string
[, zbiór])

Usuwa litery z tekstu string od lewej

  )       

 )     -* 8#  - 

       
pusty.

LTRIM(‘xxxXxxOstatn

  G C[G1
Wynik:

^Z[[A   @

REPLACE(string,
search [, replace])

5        )

         
replace.

REPLACE(‘Jack &
Jue’, ‘J’, Bl’)
Wynik:
„Black & Blue”

RPAD(string1, n
[, string2])

5     > 

    #   

 <* 8#   <     

   * 8#   

  #  > 
zwracane jest n pierwszych znaków z
tekstu string1.

RPAD(‘Ala ma ‘, 17,
‘kota*’)
Wynik:
„Ala ma kota*kota*”

RTRIM(string
[, zbiór])

5    >     

        

-* 8#  -     

     

RTRIM(‘Ostatnie

 [[Z[[[G C[G1
Wynik:

^A   [[Z@

SOUNDEX(string)

5       

      

 >* 2  +AJMZ ) -/

)     

   ) - 
wymawianych tak samo.

SELECT nazwisko
FROM bibl WHERE
SOUNDEX (nazwisko)
= SOUNDEX
('Mickiewicz');

SUBSTR(string, m
[, n])

5         

          #

* 8#           

SUBSTR(‘ABCDE’,2,
3)
Wynik:

background image

Bazy danych

Robert Chwastek

59

        

 * .     
1.

„BCD”

TRANSLATE(
string, from, to)

5           
wszystkich znaków from na znak to.

TRANSLATE(
‘HELLO! THERE!’, ‘!’,
‘-‘)
Wynik:
„HELLO- THERE-”

UPPER(string)

5         

 )  *

UPPER(
‘Jan Nowak’)
Wynik:
„JAN NOWAK”

ASCII(string)

Zwraca kod ASCII pierwszej litery w

    

ASCII(‘A’)
Wynik: 65

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

5    "   

 <  > #   

    * 8)   

       #/

>* 8#       

  #/ >*

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

LENGTH(string)

5   #/      * LENGTH(‘Nowak’)

Wynik: 5

5.3. Funkcje

grupowe

2                 

  #* #             * S 

&IAJ. B    +M9M:$ )   /      *

S  N+$N:$ -       # 0     
pomijane). Klauzula ALL powoduje wybranie wszystkich wierszy wynikowych do

-   * (         

 # J99    :AJ$0K1* ( ) -     

-/  :'%I J6MI - %$M*



Przeznaczenie



AVG( [DISTINCT | ALL]
num)

5    #/ #

  #  

SELECT AVG(placa)
”Srednia” FROM pracownicy

COUNT( [DISTINCT |
ALL] expr)

5   - 
których expr nie jest równe
NULL

SELECT COUNT(nazwisko)
”Liczba” FROM pracownicy

COUNT(*)

5   - 

-   

      

SELECT COUNT(*)
”Wszystko” FROM
pracownicy

background image

Bazy danych

Robert Chwastek

60

NULL

MAX( [DISTINCT | ALL]
expr)

5     

 #/  )

SELECT MAX(Placa) ”Max”
FROM pracownicy

MIN( [DISTINCT | ALL]
expr)

5      #/

 )

SELECT MIN(Placa) ”Min”
FROM pracownicy

STDDEV( [DISTINCT |
ALL] num)

Zwraca odchylenie

     # 

  # J99*

SELECT STDDEV(Placa)
”Odchylenie” FROM
pracownicy

SUM( [DISTINCT | ALL]
num)

5     # * SELECT SUM(Placa)

”Koszty osobowe” FROM
pracownicy

VARIANCE( [DISTINCT |
ALL] num)

5      #

   #
NULL

SELECT VARIANCE(Placa)
”Wariancja” FROM
pracownicy

5.4. Funkcje

konwersji

2    )      #     #/  *

A                , typTOtyp.
Pierwszy typ jest typem, z którego wykonywana jest konwersja, drugi jest typem
wynikowym.



Przeznaczenie



CHARTOROWID
(string)

(    
znaków na ROWID

SELECT nazwisko FROM
pracownicy WHERE ROWID =
CHARTOROWID
(‘0000000F.0003.0002’)

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

(   

   )
implementacjami zestawu
znaków. Zestawem

#   J+V%+:NN*

SELECT CONVERT (‘New
WORD’, ‘US7ASCII’, ‘WE8HP’)
”Conversion” FROM DUAL

HEXTORAW (string)

S     

   

      #/

-   )

#/    I%(

INSERT INTO GRAPHICS
(RAW_COLUMN) SELECT
HEXTORAW (‘7D’) FROM
DUAL

ROWTOHEX(raw)

.    #/ 

      
cyfry szesnastkowe

     
liczbie.

SELECT RAWTOHEX
(RAW_COLUMN) ”Graphics”
FROM GRAPHICS

ROWIDTOCHAR

.     

SELECT ROWID FROM

background image

Bazy danych

Robert Chwastek

61

wiersza na tekst. Wynik

     #/
18 znaków.

GRAPHICS WHERE
ROWIDTOCHAR(ROWID)
LIKE ‘%F38%’

TO_CHAR(n [, fmt])
(konwersja
numeryczna)

S    #/

    

)    

 * 8#  

     

  #/     

 -  /  

  *

SELECT TO_CHAR(17145,
‘$099,999’) ”Char” FROM
DUAL

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

S        

)     *

SELECT
TO_CHAR(HIREDATE, ‘Month
DD, YYYY’) ”New date format”
FROM EMP WHERE ENAME =
‘SMITH’

TO_DATE(string [,
fmt])

.     

 * J)  

  #   

-/    
podanego tekstu. Do

  )  

     -

 #/ #   
„DD-MON-YY”

INSERT INTO BONUS
(BONUS_DATE) SELECT
TO_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)

5       

      -

 * 9- ) -/
ujemna

SELECT ADD_MONTHS
(HIREDATE, 12)
”Next year”
FROM EMP
WHERE ENAME =
‘SMITH’

LAST_DAY(date)

5     -  

    

SELECT LAST_DAY
(SYSDATE) ”Last”

background image

Bazy danych

Robert Chwastek

62

podanej dacie.

FROM DUAL

MONTHS_BETWEE
N (date1, date2)

5   - 

    >   <*

( ) -/   -

* :#/    

#    
31 dni.

SELECT MONTHS_BETWEEN
(‘02-feb-86’, ‘01-jan-86’))
„Months”
FROM DUAL

NEW_TIME(date, a,
b)

5         

   - #     

      *

.     -   ) 

     -/ 
z:
AST, ADT - Atlantic Standard
or Daylight Time
BST, BDT - Bering Standard
or Daylight Time
CST, CDT - Central Standard
or Daylight Time
EST, EDT - Eastern Standard
or Daylight Time
GMT - Greenwich Mean Time
HST, HDT- Alaska-Hawaii
Standard or Daylight Time
MST, MDT - Mountain
Standard or Daylight Time
NST - Newfoundland Standard
Time
PST, PDT - Pacific Standard or
Daylight Time
YST, YDT - Yukon Standard
or Daylight Time

SELECT TO_CHAR(
NEW_TIME(TO_DATE(
’17:47’, ‘hh24:mi’), ‘PST’,
‘GMT’),
‘hh24:mi’) ”GREENWICH
TIME”
FROM DUAL

NEXT_DAY(date,
string)

5       
tygodnia podanego w string,

  3 ) 

 * .       -/

      *

SELECT NEXT_DAY(
‘17-MAR-89’, ‘TUESDAY’)
”NEXT DAY”
FROM DUAL

ROUND(date [, fmt])

5         

       

 * #   

 - ) 7*

SELECT ROUND ( TO_DATE(
‘27-OCT-88’), ‘YEAR’)
”FIRST OF THE YEAR”
FROM DUAL

SYSDATE

5         *
Nie wymaga podania
argumentów.

SELECT SYSDATE FROM
DUAL

background image

Bazy danych

Robert Chwastek

63

TRUNC(date [, fmt])

5     -  
jednostki podanej w fmt.

#    7 *
usuwana jest informacja o
czasie.

SELECT TRUNC(
TO_DATE(
‘28-OCT-88’, ‘YEAR’)
”First Of The Year”
FROM DUAL

(    IAJ  $IJ: ) ) /          

      - - ,

CC, SCC

wiek

SYYY, YYYY, YEAR,
SYEAR, YYY, YY, Y

 0     )  >*DV1

Q

  0      >H"    1

MONTH, MON, MM

 0      >H1

WW

  7  

W

  7 

DDD, DD, J

7

DAY, DY, D

 - ) 

HH, HH12, HH24

godzina

MI

minuta

5.6. Inne funkcje



Przeznaczenie



GREATEST(expr [,
expr] ...)

5        

 #* (   )

    
konwertowane do typu

   ) 
wykonaniem porównania.

SELECT GREATEST (‘Harry’,
‘Harriot’, ‘Harold’)
”GREATEST” FROM DUAL

LEAST(expr [,
expr] ...)

5       

 #* (   )

    
konwertowane do typu

   ) 
wykonaniem porównania.

SELECT LEAST (‘Harry’,
‘Harriot’, ‘Harold’)
”LEAST” FROM DUAL

NVL (expr1, expr2)

8#  [>    J99 
zwraca expr2, w przeciwnym
wypadku zwraca expr1.

SELECT ENAME
NVL(TO_CHAR(COMM),
‘NOT APPLICABLE’)
”COMMISION”
FROM EMP
WHERE DEPTNO = 30

background image

Bazy danych

Robert Chwastek

64

UID

Zwraca unikalny identyfikator

)    

 *

SELECT USER, UID FROM
DUAL

USER

5      )  

SELECT USER, UID
FROM DUAL

5.7. Formaty zapisu danych

2      )         ,



  - #      4



          ) # *

2    )      $AW:'%I  $AW%$M*

5.7.1.

Formaty numeryczne

2    )      $AW:'%I 

    #    #/   *

J)              -

  *

8   #/          )      

  #/          CKG*

.) -       )   /    
numerycznego:

Element

 

Opis

9

9999

9- CFG  #  #/ #  

0

0999

.   

$

$9999

.  #/   CTG

B

B9999

(#       0    1

MI

9999MI

(#  C"C   # 

PR

9999PR

(#   #/         CaG
‘>’

, (przecinek)

9,999

(#      

. (kropka)

99.99

(#       

V

999V99

6)  #/  >D

n

    -   

po ‘V’

E

9.999EEEE

(#  -      0 

  /        M1

DATE

DATE

Dla dat przechowywanych w postaci numerycznej.

(#      C66QQBBG

5.7.2.

Formaty dat

2    )    $AW:'%I   #    * 6 -/

 ) )    $AW%$M        #   *
Format standardowy, to ‘DD-MON-YY’.

background image

Bazy danych

Robert Chwastek

65

Elementy formatu dat przedstawia tabela:

Element

Opis

SCC lub CC

( 4 C+G          C"C

YYYY lub SYYYY

:     C+G         
‘-‘

YYY, YY lub Y

Ostatnie 3, 2 lub 1 cyfra roku

Y,YYY

Rok z przecinkiem na podanej pozycji

SYEAR lub YEAR

Rok przeliterowany. ‘S’ powoduje poprzedzenie daty przed

     C"C

BC lub AD

5 :Q% 0   Q  1

B.C. lub A.D

Znak BC/AD z kropkami

Q

S     0> < ! - L1

MM

6 0D>"><1

MONTH

       F      

MON

$         

WW

$7   0>"=<1 0 7        
i trwa 7 dni)

W

$7  0>"=1 0 7      

   V 1

DDD

7   0>"!HH1

DD

7  0>"!>1

D

7  0>"V1

DAY

       F      

DY

Trzyliterowy skrót nazwy dnia

AM lub PM

( 3  

A.M. lub P.M.

( 3     

HH lub HH12

Godzina (1-12)

HH24

Godzina (1-24)

MI

Minuta (0-59)

SS

Sekunda (0-59)

SSSS

+    0D"EH!FF1

/ .,

Znaki przestankowe umieszczane w wyniku

”...”

:      

       #   ) )/,



26 " ^2 6@   Q           
liczb zerami;



$' "        #   -    * L

TH

dla

liczby 4;



+. "        )     



+.$' - $'+. "  +.  $'*

background image

Bazy danych

Robert Chwastek

66

6. Programowanie proceduralne - PL/SQL

6.1. Wprowadzenie

I   +;9             - 

   #         # -  

      *    A     

         +;9         .9Q+;9*

PL/SQL pozwala wykorz

  /           +;9*

(          0%9$MI :IM%$M  IM%6M1  
niektóre rozkazy kontroli danych jak CONNECT, GRANT i REVOKE.

S    .9Q+;9            +;9  z

7  * 6)              

+;9    +;9       0 *      1

 * S )   .9Q+;9 7  # *

PL/SQL pozwala na definiowa

 * 5 )    

    7  - 7    3    * 8  

  -/       )* S )    * $

          +;9G* 5    

         *,

premia NUMBER(7, 2);

(  #/           ^,R@ *,

podatek := cena * stopa;

 )  #/     #   )   +M9M:$ - 2M$:' 

   #  ,

SELECT placa INTO placa_aktualna FROM pracownicy
WHERE nazwisko = ‘Nowak’ ;

.9Q+;9                  

pola.

N  )  #/     *     - 

          )  :A+$%$ 

        #  *          

  ,

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

(  -     - * 8     0   

   1* 6)    )   c$B.M       *

   * 5       /       

  -   0 )     )/ )       -

  1,

tytul books.tytul%TYPE

6)     )             

- * (     ) )/    cIA($B.M*

background image

Bazy danych

Robert Chwastek

67

( .9Q+;9 )   /        7,

R UR a b bR aR* 6    /     )  ,    

    0         1*

6.2. Struktura

bloku

S  .9Q+;9     -  *         ,

DECLARE

deklaracje

BEGIN

rozkazy wykonywalne

EXCEPTION

-      

END;

S ) -  )   /  -   * -    -/  ))* (

.9Q+;9           -  0 *      

-  1*   )              

 -  * 6)     /         )

-  * A-  -   )            

  * 5  -       #   -   

 /      *         -      - *

N       -        -     -    

-       0-   1* N    -    /

  -      ) -     7  

 - *    -   -   )         

 )       -  *        - 

     -         ))   ) 

       -   -  *

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]

background image

Bazy danych

Robert Chwastek

68

A #           )   /  7 *  

)      * N$0=1*

.        # "      *     

  .IA:MJIM  7      - #     *   

       * . -        -    * : 

     N+ 7   M 0  )  

 /   1* :#/    0   N+  M&N1  

   -   * (      )   M:9%IM* :#/

   0 M&N MZ:M.$NA - M1     

.9Q+;9* (  #   /     *  

      -         ,

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;

5      -   #*       

     )       IM$JI*

FUNCTION name [ (argument [, argument] ... ) ]
RETURN datatype IS
[local declarations]
BEGIN
executable statements
[EXCEPTION
exception handlers]
END [name];

(       /       IM$JI* I 

IM$JI    7              

 * (        /      IM$JI

  -/  )* (   )  /     

  * 8#     7    IM$JI  .9Q+;9 

    * (       IM$JI  )   /

)   ) *

6.4. Kursory

W celu wykonania rozkazu SQL system tworzy pewien obszar roboczy nazywany

     * (           

    * .9Q+;9    /  7        /  

             * .9Q+;9 )
dwóch typów kursorów:

background image

Bazy danych

Robert Chwastek

69



  " )   ) -    /     7 

         /       0 # 

   2AI14



  " .9Q+;9          
operacji.

8#            )        

- )               * S 

 #    -   .9Q+;9            * +-

        ,

DECLARE

6( %7  %" 

FROM pracownicy

(  89:::'

...
BEGIN
...

+                 *  

       )   /    A.M   
sposób:

OPEN prac_kursor;

(              )

  2M$:'* S )     2M$:'        

   * I  2M$:' ) -/ )     -,

FETCH prac_kursor INTO prac_nazw, prac_wydz;

.  7            

      - *       :9A+M *,

CLOSE prac_kursor;

S )      -    #     *

   -      CcG    -#    

 * 5     -   ,



cA$2AJ " $IJM #      2M$:'  7    
powodu braku wierszy



c2AJ " $IJM #      2M$:'  7   



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



cN+A.M " $IJM #     

        - ) -  rsora:

LOOP
FETCH prac_kursor INTO prac_nazw, prac_wydz;
IF prac_kursor%ROWCOUNT > 10 THEN

;; , 5<:

...
EXIT WHEN prac_kursor%NOTFOUND;
...
END LOOP;

background image

Bazy danych

Robert Chwastek

70

6.5. Rekordy

(   .9Q+;9        )  - 

   * S )            *

I   )   #       #  

-   * .9Q+;9   /       
wierszom w tabeli, widoku lub kursorze, nie pozwala jednak na definiowanie typów
poszczególnych pól.

          #/    * 8#   

    -                 

    )              - 
%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;

I          ,

DECLARE
prac_rek pracownicy%ROWTYPE;
...
BEGIN
...
END;

      )             

      ,

nazwa_rekordu.nazwa_pola;

%-   /      0 )  

#    W 1 )   /,

suma := suma + prac_rek.placa;

6)       #     -      #*  )

   / )         #       

 #    -   *

.   #     )   /    

  C,RG    -,

  % =  (%! 4(!>!  5 '

J)          ,

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

.    #   )  e jest na dwa sposoby:



    #      0   -   

  /       - - 4

background image

Bazy danych

Robert Chwastek

71



   #      +M9M:$ *** N$A - 2M$:' *** N$A

J)           ,

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;

.9Q+;9         2AI   * +      

  ,

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

              )

 * (#  ) /   , -    -

         #     *   )    

  )   -  )     / -    * (

        -   ^.  @   

     7     * (    

0:PP 8 ?  .9Q+;91   #  - - * 8     

-       -       / 

      -      /     *

(          - * (    

   0   1     )   * .   

     -/, ^A  @ ^? - @* (  

.9Q+;9 )   )  /   #    -   .9Q+;9*

background image

Bazy danych

Robert Chwastek

72

.    )        ^.  )  @ -

  / )      -  * &   -    

   0 1 *              

                -

    0  -  1* (        

     * (  )    -/      

   I%N+M* (            -  

7          -        

           -     -     

  * 8#   -                *

.             ^   @

05MIAWNONM1    - -    3   :Q5,

DECLARE
cz_wsk NUMBER(3,1);
BEGIN
...
SELECT cena / zysk FROM akcje

  ?@';;0%5 % 2 ,)

-- 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;

.          * 5     

     - - -  )      

       * (  #   -/   

 #    )  ,

BEGIN
SELECT ...

;;%%! &- A&   BC

SELECT ...

;;%%! &- A&   BC

SELECT ...

;;%%! &- A&   BC

END;

background image

Bazy danych

Robert Chwastek

73

.    - -  -           

   #/       )        *

$   -  )   #      /  

  ,

BEGIN
SELECT ...
SELECT ...
SELECT ...
EXCEPTION
WHEN NO_DATA_FOUND THEN

===D;%&*   B&- 3A&   BC

END;

(           #/          *

5     ) )   -   -)* 8#     

    -           -     ) 

    - -      *

6.6.2.

* '

$   .9Q+;9            

   -      * (         

  #     * (-       ),



:JI+AIW%9IM%BWA.M "       -    )
otwartego;



J.WO%9WAWNMZ "       -     

N+MI$ - J.%$M    -        
w indeksie zadeklarowanym jako UNIQUE;



NO%9NW:JI+AI "       -      
kursora (np. nie otwartego);



NO%9NWJ6MI "       -       
numerycznego z tekstu, który nie reprezentuje liczby;



AW%$%W2AJ "        +M9M:$    /

      )  0* +M9M:$ *** N$A14



+$AI%&MWMIIAI "       -      -

    #  4



$AAW6%BWIA(+ "          +M9M:$    

)          0* +M9M:$ *** N$A14



O%9JMWMIIAI "           #  
lub pola;



ZERO_DIVIDE - próba dzielenia przez zero;

6.6.3.

   (

%- -)/ 0^  /@1            -

  *     # -   .9Q+;9     

  MZ:M.$NA       7 -  * S )  

background image

Bazy danych

Robert Chwastek

74

-         ('M            

 $'M              #

  -* 2  -   7    -       

  )         -  * A    A$'MI+

0       1   /   -    

  0 *   #1* A  #/ MZ:M.$NA  

  ,

EXCEPTION
WHEN ... THEN

;;%&*  ,)

WHEN ... THEN

;;%&*  ,)

WHEN ... THEN

;;%&*  ,)

WHEN OTHERS THEN

;;%&* (% %  B ,)3

END;

8#     -       )    )

       /   ('M     AI,

WHEN over_limit OR under_limit OR VALUE_ERROR THEN
...

 )  )/  A$'MI+  #* +  A$'MI+   

 /  *  )   /  ) )     ) -/

       -   -  *

(    -              

*       -  -  *

6.6.4.

* ' % 

8 .9Q+;9  )           

  *(    -/            #

              I%N+M*

(     -     ) )       

    MZ:M.$NA*              ,

DECLARE
overflow EXCEPTION;
result NUMBER(5);
BEGIN
...
END;

 )  /   )     .9Q+;9   -  0

 7   1         # 

  * (           )     )   # 

         * (   ) -/  ) ) 
rozkazach SQL.

background image

Bazy danych

Robert Chwastek

75

  )                -  *

6)     /      ) -  *

Jak podano w

#           

  * (     )     -/  

  * +)     I%N+M* J)         ,

DECLARE
brak_czesci EXCEPTION;
liczba_czesci NUMBER(4);
BEGIN
...
IF liczba_czesci < 1 THEN
RAISE brak_czesci;
END IF;
...
EXCEPTION
WHEN brak_czesci THEN

;;%&* &- A&  -1 C

END;

6)     )   0    I%N+M1   

    ,

RAISE INVALID_NUMBER;

:     #/            

-        -    * .   )  -/

     -    ))      - -  

 * (      )    )   I%N+M   -

 *  )   / )      -    

      -              

-         #* .-      #

        -            *

6.7.

!& !

6.7.1.

Rozkaz OPEN

Rozkaz OPEN wykonuje zapytanie skojarzone z jawnie zadeklarowanym kursorem

   -  -  -        * S

   )          *

+   ,

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

Parametry:


cursor_name - nazwa kursora uprzednio zadeklarowanego, który nie jest aktualnie
otwarty.



 W    "  )  .9Q+;9        * 8

  # )         0 #    
klauzuli WHERE).

background image

Bazy danych

Robert Chwastek

76

.      A.M  -/ )         #/

            * N #/        A.M

 -/    #         * .       A.M

)                -/   
celu pobrania ich z kursora.

.         0    A.M1     

  0     1 ) - /    -,



    



      

(       #/  )        A.M

                 

    * (          -/     

 #  )  )  -/           

  CRbG* +- ) - )  #      ,

DECLARE

CURSOR prac_kur(nazw CHAR, wydz NUMBER) IS ...

BEGIN

OPEN prac_kur(‘Kowalski’, 10);

...

OPEN prac_kur(wydz => 15, nazw => ‘Nowak’);

END;

6) ) /  #            )

    / )           

 /              *

6.7.2.

Rozkaz CLOSE

I  :9A+M )           * S ) 

        /    * I  :9A+M    

 -    -  *

+   ,

CLOSE cursor_name ;

Parametry:


cursor_name - nazwa aktualnie otwartego kursora.

6.7.3.

Rozkaz FETCH

I  2M$:'             - 0 

     +M9M:$ 1* A   

    * 5          #  
kolumn w aktualnym wierszu.

+   ,

FETCH cursor_name INTO
{ record_name |
variable_name [, variable_name] ... } ;

Parametry:

background image

Bazy danych

Robert Chwastek

77



cursor_name - nazwa aktualnie otwartego kursora.



?  - W  "            * (  

 #  -/     *  )    

 /       * (       -/   

        -      *



W  "    -   0    ) - 
%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

* (   .9Q+;9     0 +;91   +M9M:$   

   N$A* %-           - +M9M:$    

    0        )    /    

   /  1*

+     +M9M:$    N$A,

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 rozkazów.

+   ,

IF plsql_condition THEN seq_of_statements
[ELSEIF plsql_condition THEN seq_of_statements]
...
[ELSE seq_of_statements]
END IF;

Parametry:


 X W  "  0  ) -     # 1

background image

Bazy danych

Robert Chwastek

78



XWW   "        -/       0-3

  1    

Opis:

I  N2   )/         -  

  0 -   1* 8#              

      $'M )       M9+MN2 M9+M - M

N2             - )     

M N2* (              

  M9+MN2* 8#              

      $'M        N2  7* 8#   

  )             M9+MN2*

8#  )                    M9+M

0#   1* ( -       J99      

   *

.  ,

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

I  9AA. )        .9*Q+;9*   

     ,



    



  ('N9M



  2AI 



  2AI  

+   ,

[<<label_name>>]
[ { WHILE plsql_condition } |
{ FOR {numeric_loop_param | cursor_loop_param } } ]
LOOP seq_of_statements END LOOP [ label_name ] ;

+   W W  ,

index IN [REVERSE] integer_expr .. integer_expr

+   W W  ,

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

background image

Bazy danych

Robert Chwastek

79

Parametry:


- W  "              * 6)    

)        MZN$    #          /

#* .   )               

   #                 ,

label_name.index



XWW   "      -     



 X W  "   .9*Q+;9* (   ('N9M    -  

 )   * A            

    #/ $IJM* (          

       *



[ "      2AI*    #     *



 W[ "  )     -     * ( )  

-        #    2AI*



IMOMI+M "      / [ 0       1*



W  "         * (  # 

  2AI        *



   "          0#         
parametrami).



  W  "              

)   * .9*Q+;9        -     0

     1*

Opis:

N            -    )    *

$          7      MZN$* .  

    ,

<<loop1>> LOOP
...
IF (x > 10) THEN EXIT loop1;
...
END LOOP loop1;

. ('N9M    /            

  * (   -    )        *

(          )    /    * .  ,

WHILE x < 10 LOOP
...
x := x - y;
...
END LOOP;

. 2AI    /        #   #/  * 

            )   

    * N  ) -/     -  * .  ,

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

background image

Bazy danych

Robert Chwastek

80

END LOOP;

.  2AI )   /  )         

 0 -    1* :            )

 * .  ,

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

I  MZN$ )  #   * I      , -    

  *

+   ,

EXIT [label_name] [WHEN plsql_condition] ;

Parametry:


- W  "            / #* 8#     

      MZN$   #   -   ))    
wykonywanej.



 X W  " )     MZN$   * 6 -/  

   .9*Q+;9* (#          - 

    #/ $IJM*

6.7.8.

Rozkaz GOTO

I  &A$A )   hmiastowego przekazania sterowania od rozkazu

              *

+         ,

<< label_name >>

+     &A$A,

GOTO label_name ;

Opis:

I  &A$A )            

-   - -          -  * 5   -

  )       -        -    *  

)    )           * 8#    &A$A

)        2AI         
automatycznie.

background image

Bazy danych

Robert Chwastek

81

7. Literatura

1.

Wojciech Cellary, Zbyszko Królikowski “Wprowadzenie do projektowania baz danych
dBase III”, Wydawnictwa Naukowo -Techniczne, Warszawa 1988

2.

ORACLE SQL Language Reference Manual

3.

ORACLE PL/SQL User’s Guide and Reference

4.

ORACLE SQL*Plus User’s Guide and Reference


Wyszukiwarka

Podobne podstrony:
AGH Wyklad 4 id 52883 Nieznany (2)
AGH Wyklad 6 id 52884 Nieznany
AGH Wyklad 8 id 52885 Nieznany (2)
AGH Wyklad 9 id 52886 Nieznany (2)
AGH Wyklad 3 id 52882 Nieznany (2)
AGH Wyklad z SQL
AGH Wyklad z SQL
LOGIKA wyklad 5 id 272234 Nieznany
ciagi liczbowe, wyklad id 11661 Nieznany
0 konspekt wykladu PETid 1826 Nieznany
AF wyklad1 id 52504 Nieznany (2)
Neurologia wyklady id 317505 Nieznany
MATERIALY DO WYKLADU CZ VIII i Nieznany
MATERIALY DO WYKLADU CZ V id 2 Nieznany
ZP wyklad1 id 592604 Nieznany
GOGN Wyklad 6 scalenie i podzia Nieznany
CHEMIA SA,,DOWA WYKLAD 7 id 11 Nieznany
or wyklad 1 id 339025 Nieznany

więcej podobnych podstron