Robert Chwastek. Bazy danych

Wielkość: px
Rozpocząć pokaz od strony:

Download "Robert Chwastek. Bazy danych"

Transkrypt

1 Robert Chwastek Bazy danych

2 !" # $ % &"' w Krakowie. ( # ) * Copyright (c) Robert Chwastek, Kraków

3 + #, 1. E DEFINICJA BAZY DANYCH S TRANSAKCJE J TYPY DANYCH SPIS TYPÓW DANYCH TYP NUMERYCZNY KONWERSJE TYPÓW W MODEL RELACYJNY STRUKTURY DANYCH W MODELU RELACYJNYM R SQL S SQL Definicje podstawowe Rozkaz CREATE TABLE Rozkaz DROP Rozkaz INSERT Rozkaz DELETE Rozkaz CREATE SEQUENCE Rozkaz SELECT Rozkaz UPDATE Rozkaz RENAME Rozkaz ALTER TABLE Rozkaz CREATE INDEX Rozkaz CREATE VIEW Rozkaz COMMIT Rozkaz ROLLBACK Rozkaz SAVEPOINT Rozkaz SET TRANSACTION OPERACJE RELACYJNE Selekcja Projekcja Produkt Grupowanie PODZAPYTANIA WIDOKI (PERSPEKTYWY) TRANSAKCJE NORMALIZACJA RELACJI Cele normalizacji Pierwsz Definicje pomocnicze Czwarta pos Podsumowanie IA OPERATORY Operatory arytmetyczne Operatory znakowe Operatory porównania Operatory logiczne !

4 4.2. W WARUNKI STANDARDOWE FUNKC FUNKCJE NUMERYCZNE FUNKCJE ZNAKOWE FUNKCJE GRUPOWE FUNKCJE KONWERSJI FUNKCJE OPERACJI NA DATACH INNE FUNKCJE FORMATY ZAPISU DANYCH Formaty numeryczne Formaty dat PROGRAMOWANIE PROCEDURALNE - PL/SQL WPROWADZENIE STRUKTURA BLOKU PROCEDURY I FUNKCJE KURSORY REKORDY O Informacje podstawowe "! #$ %!& "! #$ '! R PL/SQL Rozkaz OPEN Rozkaz CLOSE Rozkaz FETCH Rozkaz SELECT... INTO Rozkaz IF Rozkaz LOOP Rozkaz EXIT Rozkaz GOTO LITERATURA

5 Definicja bazy danych W pewnym uproszczeniu przez - danych, a przez system bazy danych " - ) * # *. - ) / ) # 0 # - #1* 2 # ) -/ rozumiany jako: #/ " #/ " # -3-4 # ) -/ -3 * ) # * ( jest opis semantyki (znaczenia) danych, przechowywanych w bazie. System bazy danych ) # 01* ( - #/ 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 * 5

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

7 ) / ), 0 9 " 91 ) definiowanie struktury danych przechowywanych w bazie, czyli tworzenie schematu implementacyjnego " 691 ) - * 0 : 9 " :91 ) transakcjami (np. zatwierdzanie lub wycofywanie) 7 0; 91 ) - - zgodnych z podanymi warunkami 7

8 2. Typy danych 2.1. Spis typów danych Typ char(size) character varchar(size) date long long varchar raw(size) long raw rowid number Opis : # ) * ) / <==* ( # #/ > Synonim do char W aktualnej wersji ORACLE a jest to synonim do char, konieczne jest * ( ) - #? * Poprawne daty z zakresu 1 stycznia 4712 p.n.e. do 31 grudnia 4712 n.e. "6A"BB *, CD>"8%"EFG : # ) H==!= * 6) / - * synonim do long : - #* + * I <==* (# * : - #*. # * (# szesnastkowej. J #/ *. * ) -/ - przechowywana, ale obliczana na podstawie informacji o fizycznym ) * (#/ ) -/ ROWIDTOCHAR. $ * 8 # / >*D K do 9.99 * * 6) - )* 2.2. Typ numeryczny $ ) - * ) / trzech sposobów: number number (precyzja) number (precyzja, skala) 8

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 * N - ) AI%:9MG -* 6) * - - -, 9

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 ) / # ) - - * (#/ 0J991 # D - ) J99 ) #/ 0J991* 2 O9 / # # # # * O9, 10

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

12 3. Model relacyjny 5 - podstawowych elementów: 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 ) #* S) - * S) - - * S) 0-1 #, #/ 01 #/ # ,! " # $% & '()*)+)*,-'. /" & 01)-2))(,-' )2()()*+! '))2)2)2(*2! 5 & 112(2()2((* 6%!" /" &78 - # - * ( ) 12

13 - # )* - # - * ( # - - jedna jak i druga terminologia. $- ) /, zbiór encji wraz z atrybutami S) - - * ( - / " zabezpieczenie przed tym powtórzeniem jest realizowane poprzez pola kluczowe. Wiersze ) " - * ( - - " ) ) #/ #* ( - - ) /, J) - * S / / - 0) #/1* tabeli. $ - - " - # )* J ) - * Unikaj powtarzania informacji w bazie danych (normalizacja) 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 13

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 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.! Definicje podstawowe N 01 " # - # * I) - ) 0* CTG - CUG1* ## 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 14

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 - ) / - * >D ) )/ - CG - CMG*., 7E2 = 7 * e-03 = 25 * 10-3 AI%:9M - ) 7/ CSG - C6G* 9 CSG ) - -/ ) >D<L 0> S1 C6G ) - ) )/ >DLE=VH 0> 61*., 256K = 256 * M = 1 * I +;9 7 # Rozkaz CREATE TABLE I :IM%$M $%9M ) ), # - # - - # - - 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 15

16 - " - -/ * ( - ) / W " # * $- / 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 ); 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+ -/ ) - * * 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. 16

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 " *. - * 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*. 17

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

19 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: " ) 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 cykl generacji numerów. 19

20 :%:'M A:%:'M " :%:'M " -# -* S A:%:'M ) #/* # :%:'M <D* (#/ :%:'M -/ ) MAXVALUE - MINVALUE. AIMI AAIMI " AIMI ) - - * S AAIMI #/* S #/ ) ) #/ 01 * 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) 20

21 ., CREATE SEQUENCE eseq INCREMENT BY 10 ; INSERT INTO pracownicy VALUES (eseq.nextval, Jan, Kowalski, 3) ; Rozkaz SELECT I +M9M:$ ) # - - * 6) -/ ) * %- / # - - -/ # / +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). 21

22 W " # / - - * # ) * ( - / * " / - * ( # * " - ) SELECT, a nie na nazwie. %+: M+: " # ) -/ # - 01* " ) - 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 ; Rozkaz UPDATE I J.%$M ) - * ( - # - 0%1-7 J.%$M - * +, UPDATE [user.]table [alias] SET column = expr [, column = expr]... [ WHERE condition ] 22

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 ; Rozkaz RENAME I IM%6M - - * 5 ) / # - - * 23

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 ; 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# ) # ) * 24

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* ( M9M:$ K 2IA6 ***1 ) / # - *., ALTER TABLE pracownicy ADD (placa NUMBER(7, 2)) ; ALTER TABLE pracownicy MODIFY (placa NUMBER(9, 2)) ; 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]]...) 25

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

27 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 - )* ( ), - - # )# " ) -/ ) - - ) - * 27

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 ; Rozkaz COMMIT +, COMMIT [WORK] Opis: I :A66N$ :A66N$ (AIS a 7 bazie danych 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 ; Rozkaz SAVEPOINT +, SAVEPOINT savepoint 28

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; Rozkaz SET TRANSACTION +, SET TRANSACTION { READ ONLY } Parametry: IM% A9B " / Opis: I ) - / 7* ) ) N+MI$ J.%$M - M9M$M* I +M$ $I%+%:$NA / -* 29

30 3.4. Operacje relacyjne A - - * (), " ) - 01 # warunki; " ) " ) 01 # # 7 * Selekcja Operacja ) - 01 # * A ) podzbiorem poziomym.! " # $% & '()*)+)*,-'. /" & 01)-2))(,-' )2()()*+! '))2)2)2(*2! (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 ; 30

31 )7 # * Projekcja. ) - # - - +M9M:$ * A ) podzbiorem pionowym.! " # $% & '()*)+)*,-'. /" & 01)-2))(,-' )2()()*+! '))2)2)2(*2! (2()2((* &9 : '()*)+)*,-' 01)-2))(,-' & 4 ++2)2()()*+! '))2)2)2(* (2()2((*. ) / +M9M:$,!" #$%%& ' A -/ +M9M:$* N /. - # ) /, SELECT Pesel, Nazwisko FROM osoby 31

32 ; Bazy danych Robert Chwastek Produkt * A ) - - ) ) ) * ( # ) *. 7 * / ;2 ;( / / / ) +M9M:$*. ) /, SELECT * FROM R1, R2; Operacja znajd 7 ) -/ ) - - #* A - # * ( - * 32

33 / 69 2 / % 2! 2 ( ( 3<== ( * 2 / / % %! A ) / SELECT. SELECT imie, nazwisko, tytul FROM autorzy, ksiazki WHERE autorzy.nazwisko = Mickiewicz and autorzy.nr = ksiazki.autor ; A # -* ( +;9 ) / 0-1 ) - * Unia J " #1* ( # #/ *. ) - # 0 1, SELECT imie, nazwisko FROM pracownicy UNION SELECT imie, nazwisko FROM wlasciciele ; Przekrój Prze 3/ - - * *.- # #/ - - bazowych..) 0* 1 # * 33

34 SELECT nazwisko FROM pracownicy INTERSECT SELECT nazwisko FROM wlasciciele ; Operacj - ) *. - # niej zatrudnieni: SELECT imie, nazwisko FROM wlasciciele MINUS SELECT imie, nazwisko FROM pracownicy ; Grupowanie S &IAJ. B '%ON& +M9M:$ / -/ ) - / 0 1 * A * * 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 34

35 GROUP BY stanowisko HAVING max(placa_podstawowa) > 3000 ; !"!#$ 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) ; 35

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) ; ( * 8# ) - 0 ^@1* 36

37 3.6. Widoki (perspektywy) ( * * ) * ( * ( * (, )# 5 #/ - ) /, proste ) ( +M9M:$ ) danych zawartych w widoku. Widok - 7 +;9 ) * ( ) - ) / * : ) #/ ) # - ) # 0 wszystkich systemach). ) # :IM%$M ONM(*.) ) # 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 ; 37

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 ) 7/ :A66N$ - IA99%:S* 8# / /* 6) / - - skrypt Normalizacja relacji Cele normalizacji - )* 8 ) / ) 0 1 * 8# - 0* / -/ - - 1* N ) ) # - 0* 1* (3 - * I ) / -, 38

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 ) - / -/ ) * 8 - # * * I # # - * # # - #*. / - - ) - / * (#/ - ) #

40 *. postaci normalnej ilustruje rysunek: >% $ >% # % $% % / % # 7 $%7 #"78 ))2 )2). - )1+ % *) )11 %#?4 1) ))( )() &"* )') $< 2) ))* )2). - )1+ % +) )') $< 21 >% $ >% # % $% % / % # 7 $%7 #"78 ))2 )2). - )1+ % *) ))2 )2). - )11 %#?4 1) ))( )() &"* )') $< 2) ))* )2). - )1+ % +) ))* )2). - )') $< Definicje pomocnicze %- / postaci normalnej. Przed omówieniem procesu normalizacji konieczne jest jednak /, 40

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* # potencjalnych nazywamy ( * ^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@ ) /, 41

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 *.- atrybutów Z jest ' % - - Z # ) - - B - - B ) - - Z - - Z ) B - - B ) 5*. ^5@ - ) - ) - ) - - ) I# ) )/ ) ) 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]. 42

43 6 ) 1 i t 2 ) # - - Z [x] = t 2 [X]), # - - B sposób krotki s 1 i s 2 ) ) *. / ) ^%@ ^6@ :@ ^@ ^8@ ^8@ ) / -,!% $% 6%" 6%" 6%" 6%" $% $% $% $% $% $% /. /... 3% 3% 3 3 /" /" & 3< 3< ">% ">% ">% A# - Z R 01 B R 01 ) 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 ) / ) ) ) # )# wypadku jednoelementowego zbioru atrybutów (Dziecko) od jednoelementowego - - 0(11* 5 # )# ), - # ) zbioru atrybutów X 43

44 # ZBRI Z # ) B * 5 )# % funkcjonalnymi. I R 0% 1, A 2,..., A n I 1, R 2,..., R m 1 ) ) schemat R i z tego zbioru stanowi podzbiór zbioru atrybutów (A 1,..., A n 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* ) I ) ) - 0* ) 1 ) * 6) )/ ) ^5@ ) - ^ #@ ) " ^N #@1* ( ) / - - ) * ( ^5@ ) /, ^:#@ -, %>% $ >% # % $% % ))2 )2). / % - ))( )() &"* ))* )2). - 44

45 >% % $ >% ))2 ))2 ))( ))* ))* # 7 )1+ )11 )') )1+ )') #"78 *) 1) 2) +) 21 <7 # 7 )1+ )11 )') $%7 % %#?4 $< 8 / ) ^:#@ - ^N #/@ ) ) ^N #@1* ) )/ ) - # kluczami prostymi.. relacji Zamówienia do drugiej postaci normalnej otrzymujemy )#, Dostawca na zamówieniu 45

46 $>% #% $%% / % Zamówione dostawy $>% #7 #"78 :# #7 $% $ # ) - ) ) ) * %- / - )# ) / )#/ *., / < / < ( )#/ - - ^ 46

47 @ ( ^5@ ^@ -, >% $ >% # % ))2 )2) ))( )() ))* )2) % # % )2) $% %. / % - )() &"* )*)! # 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 # )#/ * + ) # )#/ ) / - / )# * 47

48 ( ) /, ^(@ - / # )#/, $% 6%" 6%" $% $% $% /.. 3% 3 /" & $% 6%" 6%" $% $% & 3< ">% I wtedy i tylko wtedy, )# KI\I 1,..., R m ] )#/ )# - klucza. ) # ) ) - / 0 -/ 1 - ) / - - ) * ( ) / - ) * Podsumowanie. ) # # - * 48

49 . - / - * J * 6 - / )#/ - ) / - #/ * 49

50 4. " ( ) * 4.1. Operatory + +;9 * Operatory arytmetyczne A nego. Jednak -/ ) %$M* + -, Operator Opis ( ) 5 #/ SELECT (X+Y)/(Y+Z)... 7* ( * +, - Operatory jednoargumentowe zachowania i zmiany znaku.... WHERE NR = WHERE -PLACA < 0 *, / 6) SELECT 2*X+1... WHERE X > Y/2 +, - Dodawanie, odejmowanie SELECT 2*X+1... WHERE X > Y-Z Operatory znakowe 8 nkatenacji. I - * ) / ) :'%I -/ ) ) <== * A ) - operatora konkatenacji. Operator Opis S SELECT Nazwa: ENAME... 50

51 Operatory porównania A ) )7* ( #/ 0$IJM - 2%9+M1* Operator Opis ( ) 5 #/... NOT (A=1 OR B=1) 7 = + )... WHERE PLACA = 1000 równe!=, ^=, <> + )... WHERE PLACA!= 1000 ) > ( )... WHERE PLACA > 1000 < 6 )... WHERE PLACA < 1000 >= ( - )... WHERE PLACA >= 1000 <= 6 - )... WHERE PLACA <= 1000 IN Równy dowolnemu elementowi.... WHERE ZAWOD IN Synonim do = ANY ( URZEDNIK, INFORMATYK ) NOT IN I) ) * ( 2%9+M # dowolny element zbioru jest równy NULL Synonim do!= ALL ANY. #/ ) # - * 6 -/ jednym z operatorów: =,!=, >, <, ar br* 5 $IJM # przynajmniej jeden z elementów * ALL. #/ ) # - * 6 -/ jednym z operatorów: =,!=, >, <, ar br* 5 $IJM # ) warunek. [NOT] BETWEEN... WHERE PLACA IN (SELECT PLACA FROM PRAC WHERE WYDZIAL=30)... WHERE PLACA NOT IN (SELECT PLACA FROM PRAC WHERE WYDZIAL=30)... WHERE PLACA = ANY (SELECT PLACA FROM PRAC WHERE WYDZIAL =30)... WHERE (PLACA, PREMIA) >= ALL ((14900, 300), (3000, 0)) \] - [... WHERE A BETWEEN 1 AND 9 mniejszy lub równy y. 51

52 x AND y [NOT] EXISTS [NOT] LIKE IS [NOT] NULL 5 $IJM # \] zwraca przynajmniej jeden wiersz. \] * 9 CcG ) 0D - 1 jest równy NULL. Litera _ * [Nie] jest równe NULL.... WHERE EXISTS (SELECT PLACA FROM PRAC WHERE WYDZIAL = 30)... WHERE STAN LIKE T%... 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* Operatory logiczne A ) - 7 # 0 # - - 1* Operator Opis ( ) 5 #/ SELECT... WHERE x = y AND (a = b 7 OR p = q) NOT 5 ) "... WHERE NOT (zawod IS NULL) gicznego WHERE NOT (A=1) AND Logiczne i. Wynik jest równy... WHERE A = 1 AND B = 2 $IJM # # - $IJM OR Logiczne lub. Wynike jest równy... WHERE A = 1 OR B = 3 $IJM #/ 52

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 Operatory zbiorowe 7 - #* Operator Opis UNION J -* `... SELECT... - UNION SELECT... * INTERSECT :#/ -*. tylko raz MINUS A- ) -* ( - * M tylko raz... SELECT... INTERSECT SELECT SELECT... MINUS SELECT " () - # - * ( - ) -/ #* ( # ) operandów. ) ), numeryczny: 2 * 2 znakowy: TO_CHAR(TRUNC(SYSDATE + 7)) 53

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( *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],...) 54

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 55

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

57 5. #! 5.1. Funkcje numeryczne Przeznaczenie ABS(n) 5 #/ - - ABS(-15) Wynik: 15 CEIL(n) CEIL(15.7) Wynik: 16 FLOOR(n) 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]) SIGN(n) 5 - * 8 D* 9- ) -/ - 0 odpowiedniej liczby cyfr przed przecinkiem) 5 D # D "> # D > # od 0 SQRT(n) Zwraca pierwiastek kwadratowy liczby n. 8# ad - TRUNC(m[, n]) 5 - * 8# D* 8# - * ROUND(16.167, 1) Wynik: 16.2 ROUND(16, 167, -1) Wynik: 20 SIGN(-15) Wynik: -1 SQRT(25) Wynik: 5 TRUNC(15.79, 1) Wynik: 15.7 TRUNC(15.79, -1) Wynik: Funkcje znakowe Przeznaczenie CHR(n) Zwraca znak o podanym kodzie CHR(65) Wynik: A 57

58 INITCAP(string) LOWER(string) LPAD(string1, n [, string2]) LTRIM(string [, zbiór]) REPLACE(string, search [, replace]) RPAD(string1, n [, string2]) RTRIM(string [, zbiór]) SOUNDEX(string) SUBSTR(string, m [, n]) 5 ) ) * Zamienia wszystkie litery w podanym * 5 > # <* 8# < * 8# # > zwracane jest n pierwszych znaków z tekstu string1. Usuwa litery z tekstu string od lewej ) ) -* 8# - pusty. 5 ) replace. 5 > # <* 8# < * 8# # > zwracane jest n pierwszych znaków z tekstu string1. 5 > -* 8# - 5 >* 2 +AJMZ ) -/ ) ) - wymawianych tak samo. 5 # * 8# 58 INITCAP( PAN JAN NOWAK ) Wynik: Pan Jan Nowak LOWER( PAN JAN NOWAK ) Wynik: pan jan nowak LPAD( Ala ma, kota*, 17) Wynik: kota*kota*ala ma LTRIM( xxxxxxostatn G C[G1 Wynik: REPLACE( Jack & Jue, J, Bl ) Wynik: Black & Blue RPAD( Ala ma, 17, kota* ) Wynik: Ala ma kota*kota* RTRIM( Ostatnie [[Z[[[G C[G1 Wynik: ^A [[Z@ SELECT nazwisko FROM bibl WHERE SOUNDEX (nazwisko) = SOUNDEX ('Mickiewicz'); SUBSTR( ABCDE,2, 3) Wynik:

59 TRANSLATE( string, from, to) UPPER(string) ASCII(string) INSTR(string1, string2 [, n [, m]]) LENGTH(string) * wszystkich znaków from na znak to. 5 ) * BCD TRANSLATE( HELLO! THERE!,!, - ) Wynik: HELLO- THERE- UPPER( Jan Nowak ) Wynik: JAN NOWAK ASCII( A ) Wynik: 65 INSTR( MISSISSIPPI, S, 5, 2) Wynik: 7 Zwraca kod ASCII pierwszej litery w 5 " < > # * 8) #/ >* 8# #/ >* 5 #/ * LENGTH( Nowak ) Wynik: 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 SELECT COUNT(nazwisko) Liczba FROM pracownicy COUNT(*) NULL SELECT COUNT(*) Wszystko FROM pracownicy

60 MAX( [DISTINCT ALL] expr) MIN( [DISTINCT ALL] expr) STDDEV( [DISTINCT ALL] num) SUM( [DISTINCT ALL] num) VARIANCE( [DISTINCT ALL] num) NULL 5 #/ ) 5 #/ ) Zwraca odchylenie # # J99* 5 # * 5 # # NULL SELECT MAX(Placa) Max FROM pracownicy SELECT MIN(Placa) Min FROM pracownicy SELECT STDDEV(Placa) Odchylenie FROM pracownicy SELECT SUM(Placa) Koszty osobowe FROM pracownicy 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 ( znaków na ROWID CHARTOROWID (string) CONVERT(string [,dest_char_set [,source_char_set ] ]) HEXTORAW (string) ROWTOHEX(raw) ( ) implementacjami zestawu znaków. Zestawem # J+V%+:NN* S #/ - ) #/ I%(. #/ cyfry szesnastkowe liczbie. 60 SELECT nazwisko FROM pracownicy WHERE ROWID = CHARTOROWID ( F ) SELECT CONVERT ( New WORD, US7ASCII, WE8HP ) Conversion FROM DUAL INSERT INTO GRAPHICS (RAW_COLUMN) SELECT HEXTORAW ( 7D ) FROM DUAL SELECT RAWTOHEX (RAW_COLUMN) Graphics FROM GRAPHICS ROWIDTOCHAR. SELECT ROWID FROM

61 TO_CHAR(n [, fmt]) (konwersja numeryczna) TO_CHAR(d [, fmt]) (konwersja daty) TO_DATE(string [, fmt]) wiersza na tekst. Wynik #/ 18 znaków. S #/ ) * 8# #/ - / * S ) *. * J) # -/ podanego tekstu. Do ) - #/ # DD-MON-YY TO_NUMBER (string). - - GRAPHICS WHERE ROWIDTOCHAR(ROWID) LIKE %F38% SELECT TO_CHAR(17145, $099,999 ) Char FROM DUAL SELECT TO_CHAR(HIREDATE, Month DD, YYYY ) New date format FROM EMP WHERE ENAME = SMITH INSERT INTO BONUS (BONUS_DATE) SELECT TO_DATE ( January 15, 1989, Month dd, YYYY ) FROM DUAL UPDATE EMP SET SAL = SAL + TO_NUMBER( SUBSTR( $100 raise', 2, 3)) WHERE ENAME = 'BLAKE 5.5. Funkcje operacji na datach Przeznaczenie 5 - * 9- ) -/ ujemna ADD_MONTHS (date, n) LAST_DAY(date) 5-61 SELECT ADD_MONTHS (HIREDATE, 12) Next year FROM EMP WHERE ENAME = SMITH SELECT LAST_DAY (SYSDATE) Last

62 MONTHS_BETWEE N (date1, date2) NEW_TIME(date, a, b) NEXT_DAY(date, string) ROUND(date [, fmt]) SYSDATE podanej dacie. FROM DUAL 5 - > <* ( ) -/ - * :#/ # 31 dni. 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 5 tygodnia podanego w string, 3 ) *. -/ * 5 * # - ) 7* 5 * Nie wymaga podania argumentów. SELECT MONTHS_BETWEEN ( 02-feb-86, 01-jan-86 )) Months FROM DUAL SELECT TO_CHAR( NEW_TIME(TO_DATE( 17:47, hh24:mi ), PST, GMT ), hh24:mi ) GREENWICH TIME FROM DUAL SELECT NEXT_DAY( 17-MAR-89, TUESDAY ) NEXT DAY FROM DUAL SELECT ROUND ( TO_DATE( 27-OCT-88 ), YEAR ) FIRST OF THE YEAR FROM DUAL SELECT SYSDATE FROM DUAL 62

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, 0 ) >*DV1 SYEAR, YYY, YY, Y 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 5 #* ( ) konwertowane do typu ) wykonaniem porównania. GREATEST(expr [, expr]...) LEAST(expr [, expr]...) NVL (expr1, expr2) 5 #* ( ) konwertowane do typu ) wykonaniem porównania. 8# [> J99 zwraca expr2, w przeciwnym wypadku zwraca expr1. SELECT GREATEST ( Harry, Harriot, Harold ) GREATEST FROM DUAL SELECT LEAST ( Harry, Harriot, Harold ) LEAST FROM DUAL SELECT ENAME NVL(TO_CHAR(COMM), NOT APPLICABLE ) COMMISION FROM EMP WHERE DEPTNO = 30 63

64 UID Zwraca unikalny identyfikator ) * 64 SELECT USER, UID FROM DUAL USER 5 ) SELECT USER, UID FROM DUAL 5.7. Formaty zapisu danych 2 ), - # 4 ) # * 2 ) $AW:'%I $AW%$M* Formaty numeryczne 2 ) $AW:'%I # #/ * J) - * 8 #/ ) #/ CKG*.) - ) / numerycznego: Element Opis CFG # #/ # $ $9999. #/ CTG B B9999 (# 0 1 MI 9999MI (# C"C # PR 9999PR (# #/ CaG >, (przecinek) 9,999 (#. (kropka) (# V 999V99 6) #/ >D n - po V E 9.999EEEE (# - 0 / M1 DATE DATE Dla dat przechowywanych w postaci numerycznej. (# C66QQBBG Formaty dat 2 ) $AW:'%I # * 6 -/ ) ) $AW%$M # * Format standardowy, to DD-MON-YY.

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 07 i trwa 7 dni) W $7 0>"=1 07 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; +. " ) +.$' - $'+. " +. $'* 65

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 ) * 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* 66

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 * N - / - ) * - - ) ) - * - - )) ) - - * 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] 67

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

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

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 ) # W1 ) /, suma := suma + prac_rek.placa; 6) # - #* ) / ) # # - *. # ) / C,RG -, %=(%!4(!>! 5' J), prac_rek.nazwisko := UPPER(prac_rek.nazwisko);. # ) e jest na dwa sposoby: # 0 - /

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 $% Informacje podstawowe ) * (# ) /, - - # * ) ) - ) / - * ( - 7 * ( 0:PP 8?.9Q+;91 # - -* / - / * ( -* ( 0 1 )*. -/, ^? (.9Q+;9 ) ) / # -.9Q+;9* 71

72 . ) ^. - / ) - * & - 01 * - 0-1* ( * ( ) -/ I%N+M* ( * 8# - *. 05MIAWNONM :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;. * ) * ( # -/ # ), BEGIN SELECT... ;;%%!&-A& BC SELECT... ;;%%!&-A& BC SELECT... ;;%%!&-A& BC END; 72

73 #/ ) * $ - ) # /, BEGIN SELECT... SELECT... SELECT... EXCEPTION WHEN NO_DATA_FOUND THEN ===D;%&* B&-3A& BC END; ( #/ * 5 ) ) - -)* 8# - - ) - - * *' $.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; ( %- -)/ 0^/@1 - * # -.9Q+;9 MZ:M.$NA 7 - * S) 73

74 - ('M $'M # -* ) - * 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+ / * ) / ) ) ) -/ - - * ( - * - - * *' % 8.9Q+;9 ) *( -/ # I%N+M* ( - ) ) MZ:M.$NA*, DECLARE overflow EXCEPTION; result NUMBER(5); BEGIN... END; ) / ).9Q+; # * ( ) ) # * ( ) -/ ) ) rozkazach SQL. 74

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&-1C END; 6) ) 0 I%N+M1, RAISE INVALID_NUMBER; : #/ - - *. ) -/ - )) - - * ( ) ) I%N+M - * ) / ) #*.- # - * 6.7.!&! 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). 75

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) )/ # ) / ) / * Rozkaz CLOSE I :9A+M ) * S) / * I :9A+M - - * +, CLOSE cursor_name ; Parametry: cursor_name - nazwa aktualnie otwartego kursora Rozkaz FETCH I 2M$:' - 0 +M9M:$ 1* A * 5 # kolumn w aktualnym wierszu. +, FETCH cursor_name INTO { record_name variable_name [, variable_name]... } ; Parametry: 76

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

78 XWW " -/ 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); 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 ) } 78

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

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; Rozkaz EXIT I MZN$ ) # * I, - * +, EXIT [label_name] [WHEN plsql_condition] ; Parametry: - W " / #* 8# MZN$ # - )) wykonywanej. X W " ) MZN$ * 6 -/.9*Q+;9* (# - #/ $IJM* 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. 80

81 7. Literatura 1. Wojciech Cellary, Zbyszko Królikowski Wprowadzenie do projektowania baz danych dbase III, Wydawnictwa Naukowo -Techniczne, Warszawa ORACLE SQL Language Reference Manual 3. ORACLE PL/SQL User s Guide and Reference 4. ORACLE SQL*Plus User s Guide and Reference 81

PL/SQL. Funkcje wbudowane

PL/SQL. Funkcje wbudowane Slajd 1 PL/SQL Opis funkcji SQL PL/SQL(funkcje SQL) M. Rakowski - WSISiZ 1 Slajd 2 Funkcje wbudowane Funkcje wbudowane mają za zadanie umożliwić bardziej zaawansowane operowanie danymi. Funkcje operacji

Bardziej szczegółowo

SQL (ang. Structured Query Language)

SQL (ang. Structured Query Language) SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze

Bardziej szczegółowo

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

PODSTAWY BAZ DANYCH 13. PL/SQL PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących

Bardziej szczegółowo

Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł!

Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł! Szkolenie Oracle SQL podstawy Terminy 15 17 lutego 2010 First Minute! 1100zł! Opis szkolenia Baza danych Oracle od dawna cieszy się zasłużona sławą wśród informatyków. Jej wydajność, szybkość działania

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 1 Wprowadzenie Dostęp do bazy danych Program SQL*Plus Podstawy PL/SQL - 2 - Wprowadzenie Dlaczego warto uczyć się o Oracle u? Oracle

Bardziej szczegółowo

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń PL/SQL Zaawansowane tematy PL/SQL Piotr Medoń Cele Omówienie transakcji bazodanowych Omówienie obsługi wyjątków Zarządzanie perspektywami Tworzenie i usuwanie sekwencji Budowa wyzwalaczy 2 Transakcje bazodanowe

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Podprogramy Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I Procedury do przeprowadzenia akcji Funkcje do obliczania wartości Pakiety do zbierania logicznie

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

Bardziej szczegółowo

Przestrzenne bazy danych Podstawy języka SQL

Przestrzenne bazy danych Podstawy języka SQL Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured

Bardziej szczegółowo

Technologie baz danych WYKŁAD 7: Wyjątki

Technologie baz danych WYKŁAD 7: Wyjątki Wydział Informatyki Politechnika Białostocka Obsługa wyjątków Technologie baz danych WYKŁAD 7: Wyjątki [] [] Agnieszka Oniśko, Małgorzata Krętowska TBD-wyjątki 1 TBD-wyjątki 2 Sposoby powstania sytuacji

Bardziej szczegółowo

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu Procedury składowane Kolejnym typem programu języka PL/SQL są procedury składowane. Procedury mogą posiadać parametry typu IN, OUT lub IN OUT. Umożliwiają wykonanie operacji na danych w bazie, mogą też

Bardziej szczegółowo

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ]; Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server

Bardziej szczegółowo

Język PL/SQL Procedury i funkcje składowane

Język PL/SQL Procedury i funkcje składowane Język PL/SQL Procedury i funkcje składowane Podprogramy, procedury i funkcje składowane, typy argumentów, wywoływanie procedur i funkcji, poziomy czystości funkcji 1 Podprogramy Procedury (wykonują określone

Bardziej szczegółowo

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie

Bardziej szczegółowo

Ref. 7 - Język SQL - polecenia DDL i DML

Ref. 7 - Język SQL - polecenia DDL i DML Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość

Bardziej szczegółowo

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli SPOOL moj_plik SPOOL OFF @ moj_ plik edit CREATE TABLE DESCRIBE ALTER TABLE RENAME DROP TABLE CONNECT CONNECT USER_NAME DISCONNECT EXIT zapisuje wszystkie wydane polecenia oraz ich wyniki do pliku moj_plik,

Bardziej szczegółowo

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678'); polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {

Bardziej szczegółowo

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL PL/SQL Zaawansowane tematy PL/SQL Cele Poznanie złożonych i referencyjnych typów danych Poznanie konstrukcji kursora Poznanie kodu składowanego Poznanie procedur i funkcji 2 Złożone typy danych RECORD

Bardziej szczegółowo

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Podstawy języka SQL. SQL Structured Query Languagestrukturalny Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność

Bardziej szczegółowo

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

Bardziej szczegółowo

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko Typy rozproszonych baz Systemy typu klient-serwer (jeden serwer) Jednorodna rozproszona baza (kilka serwerow, jeden system zarzadzania baza ) Niejednorodna

Bardziej szczegółowo

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL.

Bardziej szczegółowo

Widok Connections po utworzeniu połączenia. Obszar roboczy

Widok Connections po utworzeniu połączenia. Obszar roboczy Środowisko pracy 1. Baza danych: Oracle 12c - Serwer ELARA - Konta studenckie, dostęp także spoza uczelni - Konfiguracja: https://e.piotrowska.po.opole.pl/index.php?option=conf 2. Środowisko: SQL Developer

Bardziej szczegółowo

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE Instrukcje SQL dzielimy na następujące kategorie: 1) Instrukcje języka manipulowania danymi (DML) SELECT, INSERT, UPDATE, DELETE, SET TRANSACTION, EXPLAIN PLAN 2) Instrukcje języka definicji danych DDL

Bardziej szczegółowo

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne Materiały dostępne są na stronie: Materiały Technologie baz danych aragorn.pb.bialystok.pl/~gkret Wykład 5: Kursory jawne. Podprogramy. Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka

Bardziej szczegółowo

Język SQL, zajęcia nr 1

Język SQL, zajęcia nr 1 Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze

Bardziej szczegółowo

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane. 1 Perspektywa Perspektywa (ang. view) jest strukturą logiczną

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność

Bardziej szczegółowo

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych Plan wykładu Bazy danych Wykład 9: Przechodzenie od diagramów E/R do modelu relacyjnego. Definiowanie perspektyw. Diagramy E/R - powtórzenie Relacyjne bazy danych Od diagramów E/R do relacji SQL - perspektywy

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

Bardziej szczegółowo

Wykład 8. SQL praca z tabelami 5

Wykład 8. SQL praca z tabelami 5 Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu

Bardziej szczegółowo

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)

Bardziej szczegółowo

Język SQL. Rozdział 3. Funkcje wierszowe

Język SQL. Rozdział 3. Funkcje wierszowe Język SQL. Rozdział 3. Funkcje wierszowe Funkcje wierszowe (funkcje znakowe, funkcje liczbowe, funkcje operujące na datach, funkcje konwersji, funkcje polimorficzne). 1 Funkcje Przekształcają dane, pobrane

Bardziej szczegółowo

Wykład 2. SQL 1 Structured Query Lenguage

Wykład 2. SQL 1 Structured Query Lenguage Wykład 2 SQL 1 Structured Query Lenguage SQL (Structured Query Language) Język zapytań do bazy danych. IBM lata osiemdziesiąte. Stosowany w systemach zarządzania bazami danych (DBMS); Oracle, Paradox,Access,

Bardziej szczegółowo

Hurtownia Świętego Mikołaja projekt bazy danych

Hurtownia Świętego Mikołaja projekt bazy danych Aleksandra Kobusińska nr indeksu: 218366 Hurtownia Świętego Mikołaja projekt bazy danych Zaprezentowana poniżej baza jest częścią większego projektu bazy danych wykorzystywanej w krajowych oddziałach wiosek

Bardziej szczegółowo

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe Funkcje Rozdział 3a Funkcje wierszowe Funkcje wierszowe (funkcje znakowe, funkcje liczbowe, funkcje operujące na datach, funkcje konwersji, funkcje polimorficzne) Przekształcają dane, pobrane przez polecenie

Bardziej szczegółowo

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL Plan wykładu Uzupełnienie projektu fizycznego Czym jest PL/SQL Bloki w PL/SQL Zmienne i stałe Instrukcje sterujące Wykorzystanie SQL w PL/SQL Kursory Wyjątki Projekt fizyczny bazy danych Braki projektu

Bardziej szczegółowo

Aspekty aktywne baz danych

Aspekty aktywne baz danych Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać

Bardziej szczegółowo

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa) Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dwunasty PL/SQL, c.d. 1 / 37 SQL to za mało SQL brakuje możliwości dostępnych w językach proceduralnych.

Bardziej szczegółowo

Pakiety podprogramów Dynamiczny SQL

Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL 1 Pakiety Pakiet (ang. package)

Bardziej szczegółowo

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

Bardziej szczegółowo

Procedury i funkcje składowane

Procedury i funkcje składowane Procedury i funkcje składowane Zmienne podstawienia i zmienne wiązane, podprogramy, procedury składowane, typy argumentów, wywoływanie procedur, funkcje składowane, poziomy czystości funkcji, funkcje tablicowe

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykład 5. SQL praca z tabelami 2 Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,

Bardziej szczegółowo

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli. SQL W JĘZYKU PL/SQL Strukturalny język zapytań SQL określa sposób manipulowania danymi w bazie danych. Konstrukcje proceduralne języka PL/SQL stają się bardziej użyteczne w połączeniu z mocą przetwarzania

Bardziej szczegółowo

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12 Plan wykładu Spis treści 1 Projekt fizyczny 1 2 Transformacja ML do PF 2 2.1 Definiowanie tabel............................... 2 2.2 Więzy integralności............................... 4 2.3 Modyfikacja

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1 Kursory i wyjątki Kursory i praca z kursorami, kursory jawne i niejawne, otwieranie kursora, pobieranie z kursora, zamykanie kursora, wyjątki systemowe i użytkownika, zgłaszanie i obsługa wyjątków 1 Kursor

Bardziej szczegółowo

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH Plan wykładu 2 TWORZENIE APLIKACJI BAZODANOWYCH Wykład 2: Wprowadzenie do PL/SQL: bloki anonimowe, zmienne, kursory Wprowadzenie do PL/SQL Bloki Podstawowe składowe języka Zmienne i stałe Kursory Małgorzata

Bardziej szczegółowo

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń PL/SQL Część 1 Bloki PL/SQL Piotr Medoń Cele Zapoznanie się z podstawowymi typami PL/SQL Zapoznanie się z blokiem PL/SQL Zapoznanie się z instrukcjami sterującymi wykonaniem 2 Blok PL/SQL Struktura bloku

Bardziej szczegółowo

Październik 2015. Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

Październik 2015. Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż. 1/40 Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Październik 2015 2/40 Plan wykładu Uzupełnienie projektu fizycznego Czym jest PL/SQL Bloki w PL/SQL Wykorzystanie 3/40 Projekt

Bardziej szczegółowo

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne. Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne. 1 Perspektywa Perspektywa (ang. view) jest strukturą

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2 PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie

Bardziej szczegółowo

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy]; Widoki/Perspektywy Podstawy Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy]; Usuwanie widoku DROP VIEW [nazwa_widoku]; Przykład 1 Przykład najprostszego

Bardziej szczegółowo

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiety Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiet składa się ze: specyfikacji (interfejsu) i ciała (implementacji). W specyfikacji mieszczą

Bardziej szczegółowo

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach Modelowanie danych, projektowanie systemu informatycznego Modelowanie odwzorowanie rzeczywistych obiektów świata rzeczywistego w systemie informatycznym. Modele - konceptualne reprezentacja obiektów w

Bardziej szczegółowo

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska SQL TECHNOLOGIE BAZ DANYCH Wykład 5: Język DDL i DML. SQL (ang. StructuredQueryLanguage) strukturalny język zapytań używany do tworzenia, modyfikowania relacyjnych baz danych oraz do umieszczania i pobierania

Bardziej szczegółowo

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze Cechy bloków nazwanych: w postaci skompilowanej trwale przechowywane na serwerze wraz z danymi wykonywane na żądanie użytkownika lub w

Bardziej szczegółowo

Wykład 4. SQL praca z tabelami 1

Wykład 4. SQL praca z tabelami 1 Wykład 4 SQL praca z tabelami 1 Typy danych Typy liczbowe Typy całkowitoliczbowe Integer types - Typ INTEGER; 32-bitowa liczba ze znakiem z zakresu -2 31 do 2 31 1 - Typ SMALLINT; typ całkowity mniejszy

Bardziej szczegółowo

1. ELEMENTY JĘZYKA PL/SQL

1. ELEMENTY JĘZYKA PL/SQL 1. ELEMENTY JĘZYKA PL/SQL Aplikacje korzystające z PL/SQL będącego proceduralnym rozszerzeniem SQL mogą wykonywać procedury i funkcje języka PL/SQL składowane w bazie danych oraz wysyłać własne programy

Bardziej szczegółowo

Deklarowanie kursora

Deklarowanie kursora Kursory i wyjątki Kursory i praca z kursorami, kursory jawne i niejawne, otwieranie kursora, pobieranie z kursora, zamykanie kursora, wyjątki systemowe i użytkownika, zgłaszanie i obsługa wyjątków 1 Kursor

Bardziej szczegółowo

PL/SQL. Część 1 Oracle SQL. Piotr Medoń

PL/SQL. Część 1 Oracle SQL. Piotr Medoń PL/SQL Część 1 Oracle SQL Piotr Medoń Cele Różnice w budowie zapytań bazodanowych pomiędzy bazami SQL Server oraz Oracle Standardowe funkcje Oracle SQL 2 Wprowadzenie do SQL SQL (Structured Query Language)

Bardziej szczegółowo

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy

Bardziej szczegółowo

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99 Plan ćwiczenia Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych Użytkownicy i schematy bazy danych. Uwierzytelnianie i autoryzacja. Przywileje systemowe i obiektowe. Role. Synonimy. Uprawnienia,

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

BAZA DANYCH SIECI HOTELI

BAZA DANYCH SIECI HOTELI Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umoŝliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion Autor: Joanna Karwowska SQL zapewnia obsługę: zapytań - wyszukiwanie danych w bazie, operowania danymi - wstawianie, modyfikowanie

Bardziej szczegółowo

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle Rozszerzenie obiektowe w SZBD Oracle Cześć 2. Kolekcje Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Malinowski Nowak Kowalski tablica zagnieżdżona (ang.

Bardziej szczegółowo

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych. Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych. 1 polecenie CREATE TABLE CREATE TABLE nazwa_relacji Tworzenie

Bardziej szczegółowo

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach Indeksy dodatkowe struktury służące przyśpieszeniu dostępu do danych o użyciu indeksu podczas realizacji poleceń decyduje SZBD niektóre systemy bazodanowe automatycznie tworzą indeksy dla kolumn o wartościach

Bardziej szczegółowo

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe.

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe. Wprowadzenie do języka PL/SQL Język PL/SQL Wprowadzenie Język PL/SQL to rozszerzenie SQL o elementy programowania proceduralnego i obiektowego. PL/SQL umożliwia wykorzystanie: zmiennych i stałych struktur

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

Bardziej szczegółowo

Bazy danych 10. SQL Widoki

Bazy danych 10. SQL Widoki Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela

Bardziej szczegółowo

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu. Plan wykładu Spis treści 1 Dynamiczny SQL 1 2 Wyzwalacze 2 3 Podsumowanie 9 4 Źródła 9 1 Dynamiczny SQL Dynamiczny SQL Dynamiczny SQL - technika programowania umożliwiająca generowanie instrukcji SQL dynamicznie

Bardziej szczegółowo

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL; Kursory Każde zapytanie SQL umieszczone w programie PLSQL jest wykonywane w tzw. obszarze roboczym lub inaczej obszarze kontekstu. PLSQL wykorzystuje ten obszar do przechowywania danych otrzymanych w wyniku

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

PL/SQL. Lidia Małkiewicz i Cezary Skubała

PL/SQL. Lidia Małkiewicz i Cezary Skubała PL/SQL Lidia Małkiewicz i Cezary Skubała Jest językiem trzeciej generacji (3GL), który udostępnia konstrukty programistyczne, włączając w to deklaracje zmiennych, pętlę, obsługę błędów itd. Obecnie PL/SQL

Bardziej szczegółowo

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek SELECT SELECT kolumna1, kolumna2,, kolumnan FROM tabela wybrane kolumny SELECT * FROM tabela wszystkie kolumny select * from Orders select CustomerID, CompanyName, Country from Customers WHERE SELECT *

Bardziej szczegółowo

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną

Bardziej szczegółowo

Baza danych inside. Biologiczne Aplikacje Baz Danych

Baza danych inside. Biologiczne Aplikacje Baz Danych Baza danych inside Biologiczne Aplikacje Baz Danych dr inż. Anna Leśniewska alesniewska@cs.put.poznan.pl Użytkownicy i schematy Użytkownik osoba lub aplikacja, uprawniona do dostępu do danych zgromadzonych

Bardziej szczegółowo

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła 050 SQL ELEMENTY ZAAWANSOWANE Prof. dr hab. Marek Wisła Deklarowanie zmiennych DECLARE @nazwa-zmiennej typ-danych {, @nazwazmiennej typ-danych}; deklaruje nazwy zmiennych lokalnych (definiowanych przez

Bardziej szczegółowo

Indeksy. Indeks typu B drzewo

Indeksy. Indeks typu B drzewo Indeksy dodatkowe struktury służące przyśpieszeniu dostępu do danych o użyciu indeksu podczas realizacji poleceń decyduje SZBD niektóre systemy bazodanowe automatycznie tworzą indeksy dla kolumn o wartościach

Bardziej szczegółowo

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski BAZY DANYCH wprowadzenie do języka SQL Opracował: dr inż. Piotr Suchomski Wprowadzenie Język SQL używany jest do pracy z relacyjną bazą danych. Jest to język nieproceduralny, należący do grupy języków

Bardziej szczegółowo

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2. Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny

Bardziej szczegółowo

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

SQL - DDL. 1 Tabele systemowe. 2 Typy danych SQL - DDL DDL (ang. data definition language) jest częścią języka zapytań SQL obejmująca tworzenie i zarządzanie (modyfikację, usuwanie i przydzielanie uprawnień) obiektami w bazie danych (tabelami, perspektywami,

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie do projektowania i wykorzystania baz danych Relacje Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR

Bardziej szczegółowo

P o d s t a w y j ę z y k a S Q L

P o d s t a w y j ę z y k a S Q L P o d s t a w y j ę z y k a S Q L Adam Cakudis IFP UAM Użytkownicy System informatyczny Aplikacja Aplikacja Aplikacja System bazy danych System zarządzania baz ą danych Schemat Baza danych K o n c e p

Bardziej szczegółowo