O R A C L E
Oracle Database 12c
iSQL
Programowanie
Jason Price
HeliorTtf
Oracle
Press
Spis treści
W p row ad zen ie .................................................................................................................................................... 19
1 W p r o w a d z e n ie ....................................................................................................................................................23
C zym jest relacyjna baza d a n y ch ? ....................................................................................................................23
W stęp d o S Q L ...................................................................................................................................................... 24
U żyw anie SQ L*Plus ............................................................................................................................................25
Urucham ianie S Q L *P lu s ...........................................................................................................................25
Urucham ianie SQ L*Plus z wiersza poleceń ........................................................................................26
W ykon yw an ie instrukcji SELECT za p om ocą SQL*Plus ....................................................................26
SQL D eveloper ....................................................................................................................................................27
T w orzen ie schematu bazy danych sklepu ..................................................................................................... 30
Zawartość skryptu ..................................................................................................................................... 30
Urucham ianie skryptu .............................................................................................................................. 31
Instrukcje D D L używane d o tw orzenia schematu bazy danych sklepu ........................................ 32
D odawanie, m odyfikow anie i usuwanie w ie r s z y ......................................................................................... 38
D odaw anie wiersza d o tabeli ................................................................................................................. 38
M odyfikow an ie istniejącego w iersza w tabeli ......................................................................................39
Usuwanie wiersza z tabeli .......................................................................................................................40
Łączenie z bazą danych i rozłączanie ............................................................................................................ 40
Kończenie pracy SQ L*Plus ............................................................................................................................... 40
W p row a d zen ie d o O racle PL/SQ L.................................................................................................................. 41
Podsum owanie ....................................................................................................................................................41
2 P ob ieran ie in form acji z ta bel bazy d a n y c h ................................................................................................ 43
W ykon yw an ie instrukcji SELECT dla jednej tabeli .......................................................................................43
Pobieranie wszystkich kolumn z tabeli ...........................................................................................................44
W ykorzystanie klauzuli W HERE d o wskazywania w ierszy d o pobrania ................................................ 44
Identyfikatory w ie rs z y .........................................................................................................................................44
N um ery w ierszy ...................................................................................................................................................45
W ykon yw an ie działań arytm etycznych ..........................................................................................................45
W ykon yw an ie obliczeń na datach .........................................................................................................46
Korzystanie z kolumn w obliczeniach ...................................................................................................47
Kolejność w ykonyw ania działań ............................................................................................................ 48
U żyw anie aliasów kolumn .................................................................................................................................48
Łączenie wartości z kolumn za p om ocą konkatenacji ............................................................................... 49
W artości null .........................................................................................................................................................49
W yśw ietlanie unikatowych w ie r s z y ................................................................................................................. 50
Porów nyw anie w a rto ś ci......................................................................................................................................51
O perator < > ..............................................................................................................................................51
O perator > ................................................................................................................................................. 52
O perator < = ..............................................................................................................................................52
O perator A N Y .............................................................................................................................................52
O perator ALL ..............................................................................................................................................52
e Oracle Database 12c i SQL. Programowanie
Korzystanie z operatorów SQL .........................................................................................................................53
O perator LIK E ............................................................................................................................................. 53
O perator IN .................................................................................................................................................54
O perator B E TW E EN .................................................................................................................................. 55
O peratory logiczne ............................................................................................................................................. 55
O perator A N D ............................................................................................................................................55
O perator O R .............................................................................................................................................. 56
Następstwo operatorów ........................................................................................................................... 56
Sortow anie w ierszy za p om ocą klauzuli O RD ER BY .................................................................................. 57
Instrukcje SELECT wykorzystujące d w ie tabele ............................................................................................58
U żyw anie aliasów tabel .....................................................................................................................................59
Iloczyny kartezjańskie ........................................................................................................................................ 60
Instrukcje SELECT wykorzystujące w ięcej niż dw ie ta b e le .........................................................................60
W arunki złączenia i typy złączeń ....................................................................................................................61
N ierów n ozłączen ia ....................................................................................................................................61
Złączenia zew n ętrzn e ...............................................................................................................................62
Złączenia własne ....................................................................................................................................... 65
W ykon yw an ie złączeń za p om ocą składni SQL/92 .....................................................................................66
W ykon yw an ie złączeń w ew nętrznych dw óch tabel z wykorzystaniem składni SQL/92 .......... 66
U praszczanie złączeń za p om ocą słowa kluczow ego U SIN G ......................................................... 67
W ykon yw an ie złączeń w ew nętrznych obejm ujących w ięcej niż d w ie tabele (SQL/92) .......... 67
W ykon yw an ie złączeń w ew nętrznych z użyciem wielu kolumn (S Q L/92 ).................................. 68
W ykon yw an ie złączeń zew nętrznych z użyciem składni SQL/92 ..................................................68
W ykon yw an ie złączeń własnych z użyciem składni SQL/92 .......................................................... 69
W ykon yw an ie złączeń krzyżowych z użyciem składni SQL/92 ......................................................70
Podsum owanie .................................................................................................................................................... 70
3 SQ L*Plus .............................................................................................................................................................. 71
Przeglądanie struktury tabeli .............................................................................................................................71
Edycja instrukcji SQL ..........................................................................................................................................72
Zapisywanie, odczytyw anie i uruchamianie plików ....................................................................................73
Form atowanie kolumn ....................................................................................................................................... 76
Ustawianie rozmiaru stro n y ...............................................................................................................................77
Ustawianie rozmiaru w ie rs z a ............................................................................................................................ 78
Czyszczenie form atow ania kolumny .............................................................................................................. 78
U żyw anie zm iennych .........................................................................................................................................79
Zm ien n e tym czasow e ...............................................................................................................................79
Zm ien n e zd efin iow an e ............................................................................................................................ 81
T w orzen ie prostych ra p o rtó w ........................................................................................................................... 83
U żyw anie zm iennych tym czasowych w skrypcie ...............................................................................83
U żyw anie zm iennych zdefiniow anych w skrypcie ............................................................................ 84
Przesyłanie wartości d o zm iennej w skrypcie .....................................................................................84
D odaw anie nagłówka i stopki ................................................................................................................ 85
O bliczan ie sum p ośred n ich ..................................................................................................................... 86
Uzyskiwanie pom ocy od SQ L*Plus ................................................................................................................ 87
Autom atyczne generow anie instrukcji SQL ..................................................................................................88
Kończenie połączenia z bazą danych i pracy SQ L*Plus ............................................................................ 88
Podsum owanie .................................................................................................................................................... 89
4 Proste fu n k c je ......................................................................................................................................................91
Typy funkcji .......................................................................................................................................................... 91
Funkcje je d n o w ie rs z o w e ....................................................................................................................................91
Funkcje z n a k o w e ....................................................................................................................................... 92
Funkcje n u m eryczn e................................................................................................................................. 98
Funkcje konw ertujące ............................................................................................................................103
Funkcje w yrażeń regularnych ...............................................................................................................112
Funkcje ag reg u ją ce............................................................................................................................................117
A V G ()..........................................................................................................................................................118
C O U N T () ...................................................................................................................................................119
M AX() i M I N ()............................................................................................................................................119
S T D D E V ()...................................................................................................................................................120
SU M () .........................................................................................................................................................120
VARIANCEO ..............................................................................................................................................120
G rupow anie w ie rs z y ......................................................................................................................................... 120
G rupow anie w ierszy za p om ocą klauzuli G R O U P B Y ....................................................................120
N iepraw id łow e użycie funkcji agregujących .................................................................................... 123
Filtrowanie grup w ierszy za p om ocą klauzuli H A V IN G ................................................................. 124
Jednoczesne używanie klauzul W HERE i G R O U P BY ....................................................................124
Jednoczesne używanie klauzul WHERE, G R O U P BY i H A V IN G ..................................................125
Podsum owanie ..................................................................................................................................................125
5 Składow anie o ra z p rzetw arzan ie dat i czasu .......................................................................................... 127
Proste przykłady składowania i pobierania d a t .......................................................................................... 127
Konw ertow anie typ ów DataG odzina za p om ocą funkcji T O _C H A R () i T O _ D A T E ()........................ 128
Konwersja daty i czasu na napis za p om ocą funkcji T O _C H A R () ................................................ 128
Konwersja napisu na w yrażenie DataG odzina za p om ocą funkcji T O _D A TE () ....................... 132
Ustawianie dom yślnego formatu d a t y ..........................................................................................................134
Jak O racle interpretuje lata dw ucyfrow e? ...................................................................................................135
U życie formatu YY ..................................................................................................................................135
U życie formatu R R ..................................................................................................................................136
Funkcje operujące na datach i godzinach ...................................................................................................137
A D D _M O N T H S () .................................................................................................................................... 138
LAST_D AY() ..............................................................................................................................................138
M O N T H S _B E T W E E N ()...........................................................................................................................138
N E X T _D A Y ()..............................................................................................................................................139
R O U N D ()...................................................................................................................................................139
S YS D A TE ....................................................................................................................................................140
T R U N C () ....................................................................................................................................................140
Strefy czasow e ...................................................................................................................................................140
Funkcje operu jące na strefach czasow ych ........................................................................................141
Strefa czasow a bazy danych i strefa czasow a sesji ...........................................................................141
U zyskiwanie przesunięć strefy czasow ej ............................................................................................142
U zyskiwanie nazw stref c za s o w y c h ..................................................................................................... 143
Konw ertow anie w yrażenia DataG odzina z jednej strefy czasow ej na inną .............................. 143
Datowniki (znaczniki czasu) ...........................................................................................................................143
Typy d a to w n ik ó w .....................................................................................................................................144
Funkcje operujące na znacznikach c za s u .......................................................................................... 147
Interwały czasow e .............................................................................................................................................151
Typ INTERVAL YEAR T O M O N T H ..................................................................................................... 152
Typ INTERVAL D A Y T O S E C O N D ...................................................................................................... 153
Funkcje operu jące na interwałach ...................................................................................................... 155
Podsum ow anie ..................................................................................................................................................156
6 P od zapytan ia .................................................................................................................................................... 157
R odzaje p od za p y ta ń ......................................................................................................................................... 157
Pisanie podzapytań je d n o w ie rs zo w y c h ........................................................................................................157
Podzapytania w klauzuli W H E R E .........................................................................................................157
U życie innych operatorów jedn ow ierszow ych .................................................................................158
Spis treści 7
Podzapytania w klauzuli H A V IN G ....................................................................................................... 159
Podzapytania w klauzuli FROM (widoki w b u d ow ane) ...................................................................160
Błędy, które m ożna napotkać .............................................................................................................. 160
Pisanie podzapytań w ielow ierszow ych ........................................................................................................ 161
U życie operatora IN z podzapytaniem w ie lo w ie rszo w y m ............................................................. 161
U życie operatora A N Y z podzapytaniem w ielow ierszow ym ........................................................ 162
U życie operatora ALL z podzapytaniem w ielow ierszow ym ......................................................... 163
Pisanie podzapytań w ielokolu m now ych ......................................................................................................163
Pisanie podzapytań skorelowanych .............................................................................................................. 163
Przykład podzapytania s k o re lo w a n e g o ...............................................................................................163
U życie operatorów EXISTS i N O T EXISTS z podzapytaniem skorelowanym .............................164
Pisanie zagnieżdżonych podzapytań ............................................................................................................166
Pisanie instrukcji UPDATE i DELETE zaw ierających podzapytania .......................................................167
Pisanie instrukcji UPDATE zaw ierającej p o d za p y ta n ie...................................................................167
Pisanie instrukcji DELETE zaw ierającej podzapytanie .................................................................... 168
Przygotow yw anie p od za p y ta ń ........................................................................................................................168
Podsum owanie .................................................................................................................................................. 169
7 Z apytan ia z a a w a n s o w a n e ..............................................................................................................................171
O peratory zestawu ...........................................................................................................................................171
Przykładow e ta b e le ................................................................................................................................. 171
O perator U N IO N ALL ........................................................................................................................... 172
O perator U N IO N ....................................................................................................................................173
O perator IN TE RSE C T..............................................................................................................................174
O perator M IN U S .....................................................................................................................................174
Łączenie operatorów zestawu .............................................................................................................. 175
U życie funkcji TRANSLATE() .......................................................................................................................... 176
U życie funkcji DECODE() ...............................................................................................................................177
U życie w yrażenia CASE ...................................................................................................................................178
Proste w yrażenia CASE .......................................................................................................................... 179
Przeszukiwane w yrażenia CASE ...........................................................................................................179
Zapytania h ierarch iczn e...................................................................................................................................181
Przykładow e dane ...................................................................................................................................181
Zastosow anie klauzul C O N N E C T BY i START W IT H ..................................................................... 182
U życie pseudokolum ny LEVEL .............................................................................................................183
Form atowanie w yników zapytania h ierarch iczn ego........................................................................183
R ozpoczynanie od w ęzła innego niż głów ny ....................................................................................184
U życie podzapytania w klauzuli START W IT H ................................................................................ 185
Poruszanie się po d rzew ie w górę .......................................................................................................185
Elim inowanie w ę złó w i gałęzi z zapytania h ierarch iczn ego...........................................................185
U m ieszczanie innych w arunków w zapytaniu hierarch icznym .....................................................186
Zapytania hierarchiczne wykorzystujące rekurencyjne podzapytania p rzy g oto w y w a n e 187
Klauzule R O LLU P i CUBE ...............................................................................................................................190
Przykładow e ta b e le ................................................................................................................................. 190
U życie klauzuli R O L L U P ........................................................................................................................192
Klauzula CUBE .........................................................................................................................................194
Funkcja G R O U P IN G ().............................................................................................................................195
Klauzula G R O U P IN G SETS ...................................................................................................................197
U życie funkcji G R O U P IN G _ID () ......................................................................................................... 198
Kilkukrotne użycie kolumny w klauzuli G R O U P B Y ........................................................................199
U życie funkcji G R O U P _ID () ................................................................................................................ 200
U życie CROSS A PPLY i O U TER A PPLY .......................................................................................................201
CROSS A PPLY ..........................................................................................................................................201
O U TE R A P P L Y ..........................................................................................................................................202
8 Oracle Database 12c i SQL. Programowanie
LATERAL ..............................................................................................................................................................202
Podsum owanie ................................................................................................................................................. 203
8 A n a liza d a n y c h ..................................................................................................................................................205
Funkcje a n a lity czn e.......................................................................................................................................... 205
Przykładowa tabela .................................................................................................................................205
U życie funkcji klasyfikujących ............................................................................................................. 206
U życie odw rotnych funkcji rankingowych ........................................................................................212
U życie funkcji o k n a .................................................................................................................................212
Funkcje raportujące ............................................................................................................................... 218
U życie funkcji LAG() i LEAD() ..............................................................................................................220
U życie funkcji FIRST i L A S T ................................................................................................................. 221
U życie funkcji regresji liniowej ........................................................................................................... 221
U życie funkcji hipotetycznego rankingu i rozkładu ........................................................................ 222
U życie klauzuli M O D E L ..................................................................................................................................223
Przykład zastosowania klauzuli M O D E L ............................................................................................223
Dostęp d o kom órek za p om ocą zapisu pozycyjn ego i s y m b o lic zn e g o .......................................224
U zyskiwanie dostępu d o zakresu kom órek za p om ocą BETWEEN i A N D .................................225
Sięganie d o wszystkich kom órek za p om ocą A N Y i IS A N Y ..........................................................225
Pobieranie bieżącej wartości wym iaru za p om ocą funkcji CU RREN TV() ..................................226
U zyskiwanie dostępu d o kom órek za p om ocą pętli FO R ............................................................. 227
Obsługa wartości N U LL i brakujących ...............................................................................................227
M odyfikow an ie istniejących k o m ó re k ................................................................................................ 229
U życie klauzul PIV O T i U N P IV O T ................................................................................................................230
Prosty przykład klauzuli P IV O T ............................................................................................................ 230
Przestawianie w oparciu o w iele kolumn .......................................................................................... 231
U życie kilku funkcji agregujących w przestawieniu ........................................................................ 232
U życie klauzuli U N P IV O T .....................................................................................................................233
Zapytania o określoną liczbę w ie r s z y ........................................................................................................... 234
U życie klauzuli FETCH FIRST ...............................................................................................................234
U życie klauzuli OFFSET ........................................................................................................................ 235
U życie klauzuli PE R C E N T ......................................................................................................................236
U życie klauzuli W IT H T IE S ....................................................................................................................236
O dnajdyw anie w zo rcó w w danych ..............................................................................................................237
O dnajdyw anie w zo rcó w form acji typu V w danych z tabeli all_sales2 ..................................... 237
O dnajdyw anie form acji typu W w danych ztabeli all_sales3 ........................................................240
O dnajdyw anie form acji typu V w tabeli all_sales3 ......................................................................... 241
Podsum owanie ................................................................................................................................................. 242
9 Z m ien ia n ie zaw a rtości t a b e li....................................................................................................................... 243
W staw ianie w ierszy za p om ocą instrukcji IN S E R T.................................................................................... 243
Pom ijanie listy kolumn ...........................................................................................................................244
Określanie wartości N U LL dla k o lu m n y .............................................................................................244
U m ieszczanie pojedynczych i podw ójnych cu dzysłow ów w wartościach kolumn ................. 245
K opiow anie w ierszy z jednej tabeli d o innej .................................................................................... 245
M odyfikow an ie w ierszy za p om ocą instrukcji U P D A T E ...........................................................................245
Klauzula R ETU RNING ..................................................................................................................................... 246
Usuwanie w ierszy za p om ocą instrukcji DELETE.......................................................................................246
Integralność bazy danych ............................................................................................................................... 247
W ym uszanie w ię z ó w klucza g łó w n e g o ..............................................................................................247
W ym uszanie w ię z ó w kluczy o b c y c h ...................................................................................................247
U życie wartości d om yśln ych ...........................................................................................................................248
Scalanie w ierszy za p om ocą instrukcji M E R G E .......................................................................................... 249
Spis treści 9
Transakcje b a z o d a n o w e .................................................................................................................................. 251
Zatw ierdzanie i w ycofyw anie transakcji ............................................................................................251
R ozpoczynanie i kończenie transakcji ................................................................................................252
Punkty z a c h o w a n ia ................................................................................................................................. 252
A C ID — właściwości transakcji ............................................................................................................254
Transakcje w spółbieżne .........................................................................................................................254
B lokow anie transakcji ............................................................................................................................ 255
Poziom y izolacji transakcji ....................................................................................................................256
Przykład transakcji SERIALIZABLE .......................................................................................................256
Zapytania retrospektywne ...............................................................................................................................257
Przyznawanie uprawnień d o używania zapytań retrospektywnych ............................................257
Zapytania retrospektywne w oparciu o czas .....................................................................................258
Zapytania retrospektywne z użyciem SCN ....................................................................................... 259
Podsum owanie ..................................................................................................................................................260
10 U żytkow n icy, u praw n ien ia i r o l e ................................................................................................................ 261
Bardzo krótkie w p row adzen ie d o przechow yw ania danych ..................................................................261
U ży tk o w n ic y .......................................................................................................................................................262
T w orzen ie konta użytkownika .............................................................................................................262
Zm ienianie hasła użytkownika .............................................................................................................263
Usuwanie konta użytkownika ..............................................................................................................263
Uprawnienia system ow e ................................................................................................................................. 263
Przyznawanie uprawnień system owych użytkownikowi ............................................................... 263
Sprawdzanie uprawnień system owych przyznanych użytkownikow i ........................................ 264
Zastosow anie uprawnień system owych ............................................................................................. 265
O dbieranie uprawnień system owych .................................................................................................265
Uprawnienia o b ie k to w e .................................................................................................................................. 266
Przyznawanie użytkownikowi uprawnień obiektow ych ................................................................ 266
Sprawdzanie przekazanych uprawnień ............................................................................................. 267
Sprawdzanie otrzym anych uprawnień obiektow ych ...................................................................... 268
Zastosow anie uprawnień o b ie k to w y c h .............................................................................................. 269
Synonim y ..................................................................................................................................................270
Synonim y publiczne ...............................................................................................................................270
O dbieranie uprawnień obiektow ych ..................................................................................................271
R o le ...................................................................................................................................................................... 271
T w orzen ie ról ...........................................................................................................................................271
Przyznawanie uprawnień roli ............................................................................................................... 272
Przyznawanie roli użytkownikowi .......................................................................................................272
Sprawdzanie ról przyznanych użytkownikowi ................................................................................. 272
Sprawdzanie uprawnień system owych przyznanych roli .............................................................. 273
Sprawdzanie uprawnień obiektow ych przyznanych roli ...............................................................274
Zastosow anie uprawnień przyznanych roli ....................................................................................... 275
Aktywacja i deaktywacja ról ..................................................................................................................276
O dbieranie roli ........................................................................................................................................ 276
O dbieranie uprawnień r o li....................................................................................................................276
Usuwanie roli ...........................................................................................................................................277
O bserw acja ........................................................................................................................................................277
U prawnienia w ym agane d o przeprow adzania obserwacji ............................................................277
Przykłady obserwacji ..............................................................................................................................277
Perspektywy zapisu obserwacji ............................................................................................................279
Podsum owanie ..................................................................................................................................................279
10 Oracle Database 12c i SQL. Programowanie
11 T w o rzen ie ta bel, sekw encji, in dek sów i p e r s p e k ty w ............................................................................281
T a b e le .................................................................................................................................................................. 281
T w orzen ie tabeli ......................................................................................................................................281
Pobieranie informacji o tabelach .........................................................................................................282
Uzyskiwanie informacji o kolumnach w tabeli .................................................................................283
Zm ienianie tabeli .................................................................................................................................... 284
Zm ienianie nazw y tabeli ....................................................................................................................... 291
D odaw anie kom entarza d o tabeli ....................................................................................................... 291
O bcinanie tabeli ..................................................................................................................................... 292
Usuwanie tabeli .......................................................................................................................................292
Typy BIN AR Y_FLO AT i BIN ARY_D O U B LE .......................................................................................292
U życie kolumn DEFAULT O N N U L L ..................................................................................................293
Kolumny n ie w id o c z n e ............................................................................................................................294
S e k w e n c je ........................................................................................................................................................... 296
T w orzen ie sekwencji .............................................................................................................................. 296
Pobieranie informacji o sek w en cja ch ................................................................................................. 298
U żyw anie sekwencji ............................................................................................................................... 298
W ypełnianie klucza głów n ego z użyciem sekwencji ......................................................................300
Określanie dom yślnej wartości kolum ny za p om ocą sekwencji ...................................................300
Kolumny typu ID ENTITY ....................................................................................................................... 301
M odyfikow an ie sekwencji .....................................................................................................................301
Usuwanie sekwencji ............................................................................................................................... 302
Indeksy ................................................................................................................................................................302
T w orzen ie indeksu typu B -drzew o ..................................................................................................... 303
T w orzen ie indeksów opartych na funkcjach .................................................................................... 303
Pobieranie informacji o indeksach ...................................................................................................... 304
Pobieranie informacji o indeksach kolumny .................................................................................... 304
M odyfikow an ie indeksu ........................................................................................................................ 305
Usuwanie indeksu ................................................................................................................................... 305
T w orzen ie indeksu b itm a p o w e g o ........................................................................................................305
P ersp ek tyw y....................................................................................................................................................... 306
T w orzen ie i używanie p ersp ek ty w ...................................................................................................... 307
M odyfikow an ie p ersp ek tyw y................................................................................................................313
Usuwanie perspektyw y ......................................................................................................................... 313
U żyw anie niew idocznych kolumn w perspektywach .....................................................................313
Archiw a m ig a w e k ..............................................................................................................................................314
Podsum owanie ................................................................................................................................................. 316
12 W p ro w a d ze n ie d o p rogram ow an ia w PL/SQL ........................................................................................317
Bloki .....................................................................................................................................................................317
Z m ienne i t y p y ...................................................................................................................................................319
Logika w arunkowa ............................................................................................................................................319
Pętle .....................................................................................................................................................................320
Proste pętle ............................................................................................................................................... 320
Pętle W H ILE .............................................................................................................................................321
Pętle FOR ................................................................................................................................................. 321
Kursory ................................................................................................................................................................322
Krok 1. — deklarow anie zm iennych przechow ujących wartości kolumn .................................322
Krok 2. — deklaracja kursora ...............................................................................................................322
Krok 3. — otw arcie k u rsora.................................................................................................................. 323
Krok 4. — pobieranie w ierszy z kursora ............................................................................................323
Krok 5. — zam knięcie kursora............................................................................................................. 323
Pełny przykład — product_cursor.sql ................................................................................................ 324
Spis treści 11
1 2 O ra c le D atab ase 12c i SQ L. P ro g ra m o w a n ie
Kursory i pętle FOR ................................................................................................................................ 325
Instrukcja O PE N -F O R ............................................................................................................................ 325
Kursory bez ograniczenia ...................................................................................................................... 327
W yjątki ................................................................................................................................................................ 328
W yjątek ZERO _D IVID E .........................................................................................................................330
W yjątek D U P _V A L _O N _IN D E X ......................................................................................................... 330
W yjątek IN V A LID _N U M B E R ............................................................................................................... 330
W yjątek OTHERS ....................................................................................................................................331
P ro c e d u ry ............................................................................................................................................................331
T w orzen ie p ro ce d u ry..............................................................................................................................332
W yw oływ a n ie p ro c e d u ry ...................................................................................................................... 333
U zyskiwanie informacji o procedurach ............................................................................................. 334
Usuwanie p ro ced u ry ...............................................................................................................................335
Przeglądanie b łędów w procedurze ................................................................................................... 335
Fu n k cje................................................................................................................................................................ 335
T w orzen ie funkcji ....................................................................................................................................336
W yw oływ a n ie funkcji ............................................................................................................................ 336
U zyskiwanie informacji o funkcjach ................................................................................................... 337
Usuwanie funkcji .....................................................................................................................................337
P a k iety ..................................................................................................................................................................337
T w orzen ie specyfikacji pakietu ............................................................................................................338
T w orzen ie treści pakietu ........................................................................................................................338
W yw oływ a n ie funkcji i procedur z pakietu ......................................................................................339
U zyskiwanie informacji o funkcjach i procedurach w pakiecie ................................................... 340
Usuwanie pakietu ....................................................................................................................................340
W yzw ala cze .......................................................................................................................................................340
Kiedy uruchamiany jest w yzw alacz .................................................................................................... 340
Przygotow ania d o przykładu w y z w a la c z a ..........................................................................................341
T w orzen ie w yzw alacza .......................................................................................................................... 341
Urucham ianie w yzw alacza ...................................................................................................................343
U zyskiwanie informacji o w yzw alaczach ...........................................................................................343
W łączan ie i w yłączanie w yzw alacza .................................................................................................. 345
Usuwanie w yzw alacza ........................................................................................................................... 345
Rozszerzenia PL/SQL ....................................................................................................................................... 345
Typ SIMPLE_INTEGER ........................................................................................................................... 345
Sekw encje w PL/SQL ..............................................................................................................................346
G enerow an ie natyw nego kodu m aszynow ego z PL/SQL ..............................................................347
Klauzula W IT H ........................................................................................................................................ 347
Podsum owanie ..................................................................................................................................................348
13 O b iek ty bazy d a n y c h ...................................................................................................................................... 349
W p row ad zen ie d o o b ie k tó w .......................................................................................................................... 349
U ruchom ienie skryptu tw orzącego schem at bazy danych o b je c t_s ch e m a ..........................................350
T w orzen ie typ ów obiektow ych ..................................................................................................................... 350
Uzyskiwanie informacji o typach obiektow ych za p om ocą DESCRIBE ................................................351
U życie typów obiektow ych w tabelach bazy danych ...............................................................................352
O biekty kolum now e ...............................................................................................................................352
Tabele obiek tow e ....................................................................................................................................354
Identyfikatory obiek tów i odw ołania obiek tow e ..............................................................................357
Porów nyw anie wartości o b ie k tó w .......................................................................................................359
U życie obiek tów w PL/SQ L............................................................................................................................ 361
Funkcja get_products() ........................................................................................................................... 361
Procedura display_product() ................................................................................................................ 362
Procedura in sert_produ ct()....................................................................................................................363
Procedura update_product_price() ..................................................................................................... 363
Funkcja g e t_p ro d u ct()............................................................................................................................. 364
Procedura u p d ate_p rod u ct()................................................................................................................. 364
Funkcja g e t_p ro d u ct_ref()......................................................................................................................365
Procedura delete_produ ct() .................................................................................................................. 365
Procedura product_lifecycle() ...............................................................................................................366
Procedura produ ct_lifecycle2() ............................................................................................................ 367
D ziedziczenie t y p ó w ........................................................................................................................................368
Urucham ianie skryptu tw orzącego schem at bazy danych object_schem a2 ............................. 368
D zied ziczen ie a try b u tó w ....................................................................................................................... 369
U życie podtypu zam iast typu n adrzędnego ............................................................................................... 370
Przykłady S Q L .......................................................................................................................................... 370
Przykłady PL/SQL .................................................................................................................................... 371
O biekty N O T SU B STITU TAB LE ........................................................................................................... 371
Inne przydatne funkcje obiek tów ................................................................................................................. 372
Funkcja IS O F() ........................................................................................................................................372
Funkcja TREAT() .......................................................................................................................................375
Funkcja SYS_TYPEID() ............................................................................................................................378
Typy o biek tow e N O T INSTANTIABLE .........................................................................................................378
Konstruktory defin iow an e przez u żytk ow n ik a............................................................................................379
Przesłanianie m etod ......................................................................................................................................... 382
U ogóln ion e w yw oływ an ie .............................................................................................................................. 384
U ruchom ienie skryptu tw orzącego schem at bazy danych object_schem a3 ............................. 384
D ziedziczenie a try b u tó w .......................................................................................................................384
Podsum ow anie ................................................................................................................................................. 385
14 K olekcje ............................................................................................................................................................. 387
Podstaw ow e inform acje o kolekcjach ..........................................................................................................387
Uruchom ienie skryptu tw orzącego schem at bazy danychcollectio n _sch em a .................................... 387
T w orzen ie kolekcji ........................................................................................................................................... 388
T w orzen ie typu V A R R A Y ....................................................................................................................... 388
T w orzen ie tabeli zagnieżdżonej ..........................................................................................................388
U życie kolekcji d o definiow ania kolumny w tabeli ..................................................................................389
U życie typu VAR R AY d o zdefiniow ania kolumny w tabeli ............................................................ 389
U życie typu tabeli zagnieżdżonej d o zdefiniow aniakolumny w tabeli ....................................... 389
Uzyskiwanie informacji o kolekcjach ........................................................................................................... 389
U zyskiwanie informacji o tablicy VAR R AY ........................................................................................389
U zyskiwanie informacji o tabeli zagn ieżdżonej ............................................................................... 390
U m ieszczanie elem en tów w kolekcji ........................................................................................................... 392
U m ieszczanie elem en tów w tablicy V A R R A Y ................................................................................... 392
U m ieszczanie elem en tów w tabeli zagnieżdżonej ......................................................................... 392
Pobieranie elem en tów z kolekcji .................................................................................................................. 392
Pobieranie elem en tów z tablicy V A R R A Y .......................................................................................... 393
Pobieranie elem en tów z tabeli zagn ieżdżonej .................................................................................393
U życie funkcji TABLE() d o interpretacji kolekcji jako seriiw ie r s z y .........................................................394
U życie funkcji TABLE() z typem V A R R A Y .......................................................................................... 394
U życie funkcji TABLE() z tabelą zagn ieżdżon ą .................................................................................395
M odyfikow an ie elem en tów kolekcji ............................................................................................................ 395
M odyfikow an ie elem en tów tablicy V A R R A Y .................................................................................... 396
M odyfikow an ie elem en tów tabeli za g n ie ż d ż o n e j............................................................................396
U życie m etody mapującej d o porów nyw ania zawartościtabel zagnieżdżonych ................................397
U życie funkcji CAST d o konwersji kolekcji z jed n ego typuna inny .......................................................399
U życie funkcji CAST() d o konwersji tablicy V AR R AY natabelę z a g n ie ż d ż o n ą ...........................399
U życie funkcji CAST() d o konwersji tabeli zagn ieżdżonej na tablicę V A R R A Y ..........................400
Spis treści 13
14 Oracle Database 12c i SQL. Programowanie
U życie kolekcji w PL/SQL ...............................................................................................................................400
M anipu low anie tablicą V AR R AY .........................................................................................................400
M anipu low anie tabelą zagn ieżdżoną .................................................................................................402
M etod y operu jące na kolekcjach w PL/SQL .....................................................................................403
Kolekcje w ielo p o zio m o w e ............................................................................................................................. 411
U ruchom ienie skryptu tw orzącego schem at bazy danych collection_schem a2 ...................... 412
Korzystanie z kolekcji w ie lo p o z io m o w y c h ........................................................................................ 412
Rozszerzenia kolekcji w p row a d zon e w O racle Database 1 0 g ...............................................................414
U ruchom ienie skryptu tw orzącego schem at bazy danych collection_schem a3 ...................... 414
Tablice asocjacyjne .................................................................................................................................415
Zm ienianie rozmiaru typu elem entu ..................................................................................................415
Zw iększanie liczby elem en tów w tablicy V A R R A Y ..........................................................................416
U życie tablic VAR R AY w tabelach ty m cza so w ych ...........................................................................416
U życie innej przestrzeni tabel dla tabeli składującej tabelę za g n ie ż d ż o n ą ................................416
Obsługa tabel zagnieżdżonych w standardzie AN SI ....................................................................... 417
Podsum ow anie ..................................................................................................................................................424
15 D u że o b iek ty .................................................................................................................................................... 425
Podstaw ow e inform acje o dużych obiektach (L O B ) .................................................................................425
Przykładow e p lik i.............................................................................................................................................. 425
Rodzaje dużych o b ie k tó w ...............................................................................................................................426
T w orzen ie tabel zawierających du że o b ie k ty .............................................................................................427
U życie dużych ob iek tów w SQL ...................................................................................................................428
U życie obiek tów CLO B i BLOB .......................................................................................................... 428
U życie obiek tów BFILE ..........................................................................................................................430
U życie dużych ob iek tów w PL/SQ L..............................................................................................................431
A P P E N D () ..................................................................................................................................................433
CLOSE() ..................................................................................................................................................... 433
C O M PA RE () .............................................................................................................................................. 434
C O PY() .......................................................................................................................................................435
CREATETEM PORARY() ..........................................................................................................................435
ERASE().......................................................................................................................................................436
FILECLOSE() .............................................................................................................................................436
FILECLOSEALL() ......................................................................................................................................437
FILEEXISTS() .............................................................................................................................................. 437
F ILE G E TN A M E ().......................................................................................................................................437
FILEISOPEN() ............................................................................................................................................438
FILEOPEN() ............................................................................................................................................... 438
FREETEMPORARY() ................................................................................................................................439
G ETCHU NKSIZE() .................................................................................................................................. 439
G ETLENGTH() ......................................................................................................................................... 439
G ET_STO RAG E_LIM IT() .........................................................................................................................440
INSTR() .......................................................................................................................................................440
ISOPEN() ...................................................................................................................................................441
ISTEM PORARY() ......................................................................................................................................441
LO AD FRO M FILE() .................................................................................................................................. 442
LO AD B LO BFRO M FILE() ....................................................................................................................... 443
LO AD C LO BFRO M FILE() ....................................................................................................................... 443
O PE N () .......................................................................................................................................................444
R E A D ()........................................................................................................................................................445
SUBSTR() ...................................................................................................................................................445
TRIM () ........................................................................................................................................................446
WRITEO .....................................................................................................................................................447
W RITEAPPENDO ..................................................................................................................................... 447
Przykładow e procedury PL/SQL ..........................................................................................................448
Typy LO N G i L O N G R A W .............................................................................................................................462
Przykładow e tabele .................................................................................................................................462
W staw ianie danych d o kolumn typu LO N G i LO N G R A W ..........................................................462
Przekształcanie kolumn LO N G i LO N G R A W w d u że obiekty ....................................................463
N o w e właściwości dużych ob iek tów w O racle Database 10g ...............................................................463
N iejaw na konwersja m iędzy obiektam i CLO B i N C LO B ...............................................................464
U życie atrybutu :new , gdy obiekt LOB jest używany w w yzw alaczu .........................................464
N o w e właściwości dużych ob iek tów w O racle Database 11g ...............................................................465
Szyfrow anie danych LOB ......................................................................................................................465
Kom presja danych L O B ......................................................................................................................... 469
Usuwanie powtarzających się danych LOB ..................................................................................... 469
N o w e właściwości dużych ob iek tów w O racle Database 12c ...............................................................469
Podsum ow anie ................................................................................................................................................. 470
16 O p tym a liza cja SQL ......................................................................................................................................... 471
Podstaw ow e inform acje o optym alizacji SQ L ........................................................................................... 471
N ależy filtrować w iersze za p om ocą klauzuli WHERE .............................................................................471
N ależy używać złączeń tabel zam iast w ielu zapytań ............................................................................... 472
W ykonu jąc złączenia, należy używ ać w pełni kwalifikowanych odw ołań d o kolumn .................... 473
N ależy używać w yrażeń CASE zam iast w ielu zapytań .............................................................................473
N ależy dod ać indeksy d o tabel ......................................................................................................................474
Kiedy tw orzyć indeks typu B -d rz e w o ................................................................................................. 475
Kiedy tw orzyć indeks bitm apow y ....................................................................................................... 475
N ależy stosować klauzulę WHERE zam iast H A V IN G ............................................................................... 475
N ależy używać U N IO N ALL zam iast U N IO N ........................................................................................... 476
N ależy używać EXISTS zam iast IN ................................................................................................................477
N ależy używać EXISTS zam iast D ISTINCT ................................................................................................. 477
N a leży używać G R O U P IN G SETS zam iast CUBE ..................................................................................... 478
N a leży stosować zm ien n e d o w ią z a n e ..........................................................................................................478
N ieiden tyczn e instrukcje SQL ............................................................................................................. 478
Identyczne instrukcje SQL korzystające z e zm iennych d o w ią za n y c h .........................................478
W ypisyw anie listy i wartości zm iennych dow iązanych ..................................................................479
U życie zm iennej dow iązanej d o składowania wartości zw rócon ej przez funkcję PL/SQL ... 480
U życie zm iennej dow iązanej d o składowania w ierszy z R E FC U R SO R ...................................... 480
Porów nyw anie kosztu w ykonania zapytań ................................................................................................. 480
Przeglądanie planów w ykonania .........................................................................................................481
Porów nyw anie planów w ykonania .....................................................................................................485
Przesyłanie w skazów ek d o op tym a liza tora ................................................................................................. 486
D odatkow e narzędzia optym alizujące ........................................................................................................ 487
O racle Enterprise M anager ................................................................................................................... 487
Autom atic Database Diagnostic M onitor .......................................................................................... 488
SQL Tuning Advisor ............................................................................................................................... 488
SQL Access Advisor ............................................................................................................................... 488
SQL Perform ance Analyzer ................................................................................................................. 488
Database Replay ..................................................................................................................................... 488
Real-Tim e SQL M o n ito rin g ................................................................................................................... 488
SQL Plan M a n a g em en t...........................................................................................................................489
Podsum owanie ................................................................................................................................................. 489
Spis treści 15
16 Oracle Database 12c i SQL. Programowanie
17 XM L i b aza danych O ra cle ........................................................................................................................... 491
W p row ad zen ie d o XML .................................................................................................................................. 491
G enerow anie XML z danych relacyjn ych .................................................................................................... 492
XMLELEMENT() .......................................................................................................................................492
XM LATTRIBU TESO .................................................................................................................................. 494
XMLFOREST() ...........................................................................................................................................494
X M LA G G () .................................................................................................................................................495
XM LC O LA TTV AL0 .................................................................................................................................. 497
X M L C O N C A T ()........................................................................................................................................ 498
XMLPARSE() .............................................................................................................................................498
XM LPI() ..................................................................................................................................................... 499
X M LC O M M E N T () ................................................................................................................................... 499
XMLSEQUENCE() ................................................................................................................................... 500
XM LSERIALIZEO....................................................................................................................................... 501
Przykład zapisywania danych XML d o pliku w PL/SQL ..................................................................501
XM LQ U ERY() ............................................................................................................................................502
Zapisywanie XML w bazie danych ............................................................................................................... 506
Przykładow y plik XML ........................................................................................................................... 506
T w orzen ie przykładow ego schematu XML ....................................................................................... 506
Pobieranie informacji z przykładow ego schematu XML ................................................................ 508
Aktualizow anie informacji w przykładow ym schem acie XML ......................................................511
Podsum owanie ..................................................................................................................................................514
A T yp y danych O ra cle ....................................................................................................................................... 515
Typy w O racle S Q L ...........................................................................................................................................515
Typy w O racle PL/SQ L.....................................................................................................................................517
S k o r o w id z .......................................................................................................................................................... 519
0 autorze
Jason P rice jest n iezależn ym konsu ltantem i b yłym k ierow n ik iem projektu w O racle C orporation. Brał
udział w pracach nad w ielom a produktam i Oracle, w tym bazą danych, serw erem aplikacji i kilkom a apli
kacjam i C R M . Jest certyfikow an ym adm inistratorem i program istą baz danych O racle i posiada ponad
15-letnie d ośw iadczen ie w b ran ży oprogram ow ania. N apisał w iele książek na tem at O racle, Javy i .N ET.
U zyskał tytuł licencjata (z w y różn ien iem ) w d ziedzinie fizyki na brytyjskim U n iversity o f Bristol.
Podziękowania
D ziękuję wspaniałym ludziom z M cG ra w -H ill Education/Professional. D ziękuję też Scottowi M ik olaitisow i
1N id h i Choprze.
1 8 O ra c le D atab ase 12c i SQ L. P ro g ra m o w a n ie
Wprowadzenie
W spółcześnie dostęp do system ów zarządzania bazam i danych jest realizow any z użyciem standardow ego
języka Structured Q u ery Language (stru kturalnego języka zapytań), czyli SQL. SQ L u m ożliw ia m ięd zy
in n ym i pobieranie, wstawianie, m odyfikow anie i usuwanie in form acji z b azy danych. T a książka pozw ala
dobrze opanow ać język SQL, a ponadto zaw iera w iele praktycznych przykładów. W szystkie skrypty i p ro
gram y prezentow ane w książce są dostępne online (w ięcej in form acji na ten tem at znajduje się w p od ro z
dziale „P ob ieran ie przyk ład ów ” ).
D zięk i tej książce:
■ O panujesz stan dardow y S Q L, a także je g o rozszerzen ia opracow an e p rzez O racle C orp oration ,
u m ożliw iające w ykorzystanie specyficznych w łaściw ości b azy danych Oracle.
■ Poznasz język PL/SQL (Procedu ral Language/SQ L), k tóry w y w o d zi się z SQ L i u m ożliw ia pisanie
p ro g ra m ów zaw ierających instrukcje SQL.
■ D ow iesz się, jak używać S Q L*Plus do urucham iania instrukcji SQ L, skryptów i raportów . SQ L*Plus
jest n arzędziem u m ożliw iającym interakcję z bazą danych.
■ D ow iesz się, jak w ykon yw ać zapytania, wstawiać, m od yfik ow ać i usuwać dane z b azy danych.
■ O panujesz tw orzen ie tabel, sekwencji, indeksów , perspektyw i k on t u żytkow ników .
■ D ow iesz się, jak w ykon yw ać transakcje zaw ierające w iele instrukcji SQL.
■ O panujesz defin iow an ie typów obiektow ych i tw orzen ie tabel obiektow ych do obsługi danych za
awansowanych.
■ N auczysz się w ykorzystyw ać duże obiekty do obsługi p lików m ultim edialnych zawierających obra
zy, m u zykę i film y.
■ D o w iesz się, jak w ykon yw ać skom plikow ane obliczenia za p om ocą funkcji analitycznych.
■ O panujesz w ysoko w ydajne techniki optym alizacyjne, znacząco przyspieszające w ykon yw an ie in
strukcji SQL.
■ Poznasz m ożliw ości obsługi X M L w bazie danych Oracle.
■ D ow iesz się, jak w ykorzystyw ać najnow sze m ożliw ości języka SQ L w p row a dzon e w O racle D ata
base 12c.
Książka zaw iera 17 ro zd zia łó w i dodatek.
Rozdział 1. „Wprowadzenie"
W tym rozdziale znajduje się opis relacyjnych baz danych, w p row adzen ie do SQ L i kilka przykładow ych
zapytań. N auczym y się w nim rów n ież używać SQL*Plus i SQ L D eveloper do w ykonyw ania zapytań, a tak
że krótko o m ó w im y PL/SQL.
Rozdział 2. „Pobieranie informacji z tabel bazy danych"
D ow iesz się, jak pobrać in form acje z jednej lub kilku tabel, korzystając z instrukcji SELECT. N au czysz się
rów n ież używać w yrażeń arytm etycznych do w ykonyw ania obliczeń. Poznasz klauzulę WHERE, u m ożliw ia
jącą filtrow an ie w ierszy, a także dow iesz się, jak je sortować.
20 Oracle Database 12c i SQL. Programowanie
Rozdział 3. „SQL*Plus"
W tym rozdziale u żyjem y S Q L*Plu s do p rzejrzen ia struktury tabeli, edytow ania instrukcji SQ L, zapisy
wania i urucham iania skryptów , form atow an ia k olu m n w yników . N auczysz się rów n ież używać zm ien
nych i generow ać raporty.
Rozdział 4. „Proste funkcje"
W tym rozd zia le p ozn asz kilka fu nkcji w b u d ow a n ych do bazy danych Oracle. Funkcja m oże p rzyjm o
wać param etry w ejściow e i zw raca param etr w yjściow y. Funkcje um ożliw iają m ięd zy in n ym i obliczanie
średnich i p ierw iastków kw adratow ych.
Rozdział 5. „Składowanie oraz przetwarzanie dat i czasu"
D o w iesz się, w jaki sposób baza danych O racle przetw arza oraz składuje daty i czas. P ozn asz ró w n ież
datow niki u m ożliw iające składow anie określonej daty i czasu, a także in terw a ły czasowe um ożliw iające
składowanie okresu.
Rozdział 6. „Podzapytania"
D ow iesz się, w jaki sposób m ożna um ieścić instrukcję SELECT w zew nętrznej instrukcji SQ L. W ew n ętrzn ą
instrukcję S Q L nazyw am y podzapytaniem . Poznasz różne rodzaje podzapytań i zobaczysz, jak um ożliwiają
one tw orzen ie złożon ych instrukcji z prostych składników.
Rozdział 7. „Zapytania zaawansowane"
D ow iesz się, jak w ykonyw ać zapytania zawierające zaawansowane operatory i funkcje, takie jak: operatory
zestawu łączące w iersze zwracane przez kilka zapytań, funkcja TRANSLATE() konwertująca znaki w jedn ym
napisie na znaki w in n ym napisie, funkcja DECODE() wyszukująca w artość w zestaw ie w artości, w yrażenie
CASE w ykonujące logik ę if- th e n - e ls e oraz klauzule ROLLUP i CUBE zw racające w iersze zaw ierające sum y
cząstkowe. N o w e w O racle Database 12c klauzule CROSS APPLY i OUTER APPLY łączą w iersze z dw óch w y
rażeń SELECT, a LATERAL zw raca w bu dow any w id o k danych.
Rozdział 8. „Analiza danych"
Poznasz funkcje analityczne um ożliwiające wykonyw anie złożonych obliczeń, takich jak wyszukanie naj
lepiej sprzedającego się produktu w poszczególn ych m iesiącach, najlepszych sprzedaw ców itd. D ow iesz
się, jak w ykonyw ać zapytania o dane uporządkow ane hierarchicznie. Poznasz rów n ież klauzulę MODEL w y
konującą obliczenia m iędzyw ierszow e oraz klauzule PIVOT i UNPIVOT, które um ożliw iają poznanie ogólnych
tren d ów w dużych ilościach danych. N o w e w O racle Database 12c klauzule to MATCH_RECOGNIZE u m ożli
w iająca odn a lezien ie w zo rca w danych i FETCH_FIRST u m ożliw iająca w ykon an ie zapytań zw racających
N pierw szych w ierszy wyniku.
Rozdział 9. „Zmienianie zawartości tabeli"
D ow iesz się, jak wstawiać, m o d yfik o w a ć i usuwać w iersze za p om ocą instrukcji INSERT, UPDATE i DELETE
oraz jak utrw alić w yn ik transakcji, korzystając z instrukcji COMMIT lub w ycofać w yn ik i transakcji za p o
m ocą instrukcji ROLLBACK. D o w iesz się rów n ież, w jaki sposób baza danych O racle obsługuje kilka trans
akcji w ykon yw an ych w tym sam ym m om encie.
Rozdział 10. „Użytkownicy, uprawnienia i role"
D ow iesz się, czym są użytkow nicy b azy danych oraz jak upraw nienia i role um ożliw iają określenie czyn
ności, k tóre m o że w ykon ać użytkow nik w bazie danych.
Rozdział 11. „Tworzenie tabel, sekwencji, indeksów i perspektyw"
Poznasz tabele i sekwencje, które generują serie liczb, a także indeksy, które przypom inają indeksy w książ
kach i u m ożliw ia ją szybkie uzyskanie dostępu do w ierszy. D ow iesz się rów n ież czegoś o perspektywach,
które są w stępnie zdefin iow a n ym i zapytaniam i jednej lub kilku tabel. D o zalet perspektyw m o żem y zali
Wprowadzenie 21
czyć to, że u m ożliw iają one ukrycie złożon ości przed użytkow nikiem , a także im plem entu ją kolejn y p o
zio m zabezpieczeń, zezwalając na przeglądanie jedyn ie ograniczon ego zestawu danych z tabeli. Poznasz
rów n ież archiwa m igaw ek. W archiw um m igaw ek są składowane zm ian y dokonane w tabeli w pew nym
okresie. N ow ością w O racle Database 12c jest m ożliw ość definiow ania w id oczn ych i n iew idoczn ych k o
lum n w tabeli.
Rozdział 12. „Wprowadzenie do programowania w PL/SQL"
W tym rozdziale poznasz język PL/SQL, zb u d ow an y na podstaw ie SQ L i u m ożliw iający pisanie p rogra
m ó w składow anych w bazie danych oraz zaw ierających instrukcje SQ L. Język ten posiada standardowe
konstrukty program istyczne.
Rozdział 13. „Obiekty bazy danych"
D ow iesz się, jak tw orzyć typy obiektow e w bazie danych, które m ogą zaw ierać atrybuty i m etody. Z a p o
m ocą tych ty p ó w obiektow ych zd efin iu jem y obiek ty k olu m n ow e i tabele obiektów , a także nauczysz się
m anipulow ać obiektam i za p om ocą SQ L i PL/SQL.
Rozdział 14. „Kolekcje"
D ow iesz się, jak tw orzyć typy kolekcji, które m ogą zaw ierać w iele elem entów . U żyjem y kolekcji do d efi
niow ania k olu m n w tabelach. N auczysz się rów n ież m anipulow ać kolekcjam i za p om ocą SQ L i PL/SQL.
Rozdział 15. „Duże obiekty"
Poznasz duże obiekty, które m ogą przech ow yw ać do 128 terabajtów danych znakow ych i binarnych lub
w skazyw ać na p lik zew n ętrzn y, oraz starsze ty p y LONG, obsługiw ane p rzez O racle Database 12c w celu
zachow ania kom patybilności z w cześniejszym i w ersjam i.
Rozdział 16. „Optymalizacja SQL"
T en ro zd zia ł zaw iera kilka w skazów ek pozw alających skrócić czas w ykon yw a n ia zapytań. D o w ie sz się
rów n ież czegoś o optym alizatorze Oracle, a także m ożliw ości przesyłania w skazów ek do optym alizatora.
W p row ad zo n e zostaną też zaawansowane narzędzia do optym alizacji.
Rozdział 17. „XML i baza danych Oracle"
Extensible M arkup Language (X M L ) jest językiem zn aczników ogóln ego przeznaczenia. X M L u m ożliw ia
przesyłanie ustrukturyzowanych danych w internecie i m oże być używ any do k odow ania danych i innych
dokum en tów . Z tego rozd zia łu d ow iesz się, jak gen erow ać k od X M L na podstaw ie danych relacyjnych
oraz jak zapisać k od X M L w bazie danych.
Dodatek A
D odatek zaw iera opis ty p ó w danych dostępnych w O racle SQ L i PL/SQL.
Docelowa grupa czytelników
T a książka jest odpow iedn ia dla następujących czytelników :
■ program istów , k tórzy chcą pisać w SQ L i PL/SQL,
■ adm inistratorów baz danych wym agających dogłębnej znajom ości SQ L,
■ u żytk ow n ik ów biznesowych, k tórzy muszą pisać zapytania SQ L w celu pobrania in form acji z bazy
danych organizacji,
■ k ierow n ik ów technicznych lub konsultantów, k tó rzy potrzebują w p row a dzen ia do SQ L i PL/SQL.
N ie jest k on ieczn a w cześniejsza zn ajom ość S Q L i PL/SQL. W szystko, co jest potrzebne do biegłego
opanow ania S Q L i PL/SQL, m ożn a znaleźć w tej książce.
22 Oracle Database 12c i SQL. Programowanie
Pobieranie przykładów
W szystkie skrypty, program y i inne pliki używane w tej książce m ożna pobrać z serwera FTP W ydaw nictw a
H elion , p od adresem: ftp://ftp.helion.pl/przyklady/ord12p.zip. P liki są um ieszczone w archiw um Z IP —
po jego rozpakow aniu tw o rzo n y jest katalog sql_book, w k tórym znajdują się następujące podkatalogi:
■ p lik i zaw ierający przykładow e pliki używane w rozdziale 14.,
■ S Q L zaw ierający skrypty S Q L używ ane w całej książce, w tym skrypty tw orzące i um ieszczające
dane w przykładow ych tabelach,
■ X M L zaw ierający pliki X M L używane w rozdziale 17.
M a m nadzieję, że spodoba C i się ta książka!
ROZDZIAŁ
1
Wprowadzenie
W tym rozdziale pozn am y in form acje na temat:
■ relacyjnych baz danych,
■ strukturalnego języka zapytań (S Q L — Structured Q uery Language), używ anego w pracy z bazam i
danych,
■ SQ L*Plus — interaktyw nego narzędzia tekstowego do uruchamiania instrukcji SQ L, u tw orzon ego
przez O racle,
■ SQ L D eveloper — graficznego narzędzia do tw orzen ia baz danych,
■ PL/SQ L — u tw orzon ego p rzez O racle p rocedu raln ego język a p rogram ow an ia, k tó ry u m ożliw ia
tw orzen ie program ów .
Czym jest relacyjna baza danych?
Założenia relacyjnych baz danych zostały opracow ane w 1970 roku p rzez dr. E.F. C odda. O pisał on teorię
relacyjnych baz danych w artykule A R elation al M o d e l o f D ata f o r Large Shared Data Banks, opu blikow a
n ym w „C om m u n ication s o f the Association fo r C om p u tin g M ach in ery” (t. 13, nr 6, czerw iec 1970).
Podstaw owe założenia relacyjnego m odelu baz danych są stosunkowo łatwe do zrozum ienia. R elacyjna
baza danych jest zbiorem pow iązanych inform acji, um ieszczonych w tabelach. D ane w tabeli są p rzech o
w yw ane w w iersza ch i uporządkow ane w k olu m nach. Tabele są przechow yw ane w schem atach baz da
nych, czyli obszarach, w których użytkownicy m ogą przechow ywać swoje tabele. U żytk ow n ik m oże p rzy
dzielać u p raw n ien ia, dzięki k tórym inne osoby będą m o g ły uzyskać do nich dostęp.
D an e często p orządku je się w tabelach — cen y akcji czy rozk ład y ja zd y pociągów . W jednej z p rzy
k ładow ych tabel w tej książce będą zapisywane in form acje o klientach fikcyjnego sklepu: ich im iona, na
zwiska, daty urodzenia (dob — ang. date o f b irth ) i n um ery telefonów .
first_name last_name dob phone
Jan Nikiel 65/01/01 800-555-1211
Lidia Stal 68/02/05 800-555-1212
Stefan Brąz 71/03/16 800-555-1213
Grażyna Cynk 800-555-1214
Jadwiga Mosiądz 70/05/20
Taka tabela m oże być przechowyw ana:
■ jako tabela w bazie danych,
■ jako plik H T M L na stronie internetow ej,
■ na karcie w pudełku.
24 Oracle Database 12c SQL
N a leży pam iętać, że in form acje tw orzące bazę danych są czym ś in n ym n iż system w ykorzystyw a n y
do uzyskiw ania do n ich dostępu. O p rogra m ow a n ie używ ane do pracy z bazą danych n azyw am y syste
m em za rzą d zan ia bazą danych. Baza danych O racle jest właśnie takim system em , a inne p rogram y tego
typu to M icro so ft S Q L Server, D B2 i M yS Q L.
W każdej b azie danych m usi istnieć jakiś sposób w p row a dzan ia i p obieran ia in form acji, najlepiej
korzystający z popularnego języka zrozu m ia łego dla w szystkich b az danych. System y zarządzania bazą
danych im plem en tu ją taki stan dardow y język n azyw an y stru k tu ra ln ym ję z y k ie m zapytań , czyli SQ L
(S tructu red Q uery Language). U m o ż liw ia on pobieran ie, dodaw anie, m od yfik ow a n ie i usuwanie in fo r
m acji z b azy danych.
Wstęp do SQL
Strukturalny język zapytań (S Q L — Structured Q uery Language) jest standardow ym język iem zaprojek
tow an ym do pracy z relacyjnym i bazam i danych.
% W ed łu g A m erican National Standards Institute, „es kju e l" jest praw idłow ym sposobem
u.,.,,,,., odczytyw ania skrótu SQL. Często jednak słyszy się rów nież angielskie słow o sequel („sikłel").
P ierw sza im p lem en ta cja S Q L opartego na p rzełom ow ej p racy dr. E.F. C od d a została opracow ana
przez IB M w p oło w ie lat 70. Firm a p row adziła projekt badaw czy o nazw ie System R i podczas jego reali
zacji opracow ano SQL. W 1979 roku firm a Relational Software Inc. (dziś znana jako O racle C orp oration )
opublikow ała pierw szą kom ercyjn ą w ersję SQL.
S Q L został uznany za standard p rzez A m erica n N a tio n a l Standards Institute (A N S I) w 1986 roku,
ale im plem entacje różn ych firm różnią się od siebie.
W SQ L jest w ykorzystyw ana prosta składnia, której z łatw ością m ożn a się nauczyć. Proste przykłady
zastosowania jej zostaną zaprezentow ane w tym rozdziale. W y ró żn ia m y pięć ty p ó w instrukcji SQL:
■ Z a p ytan ia pobierają w iersze p rzech ow yw an e w tabelach b azy danych. D o utw orzenia zapytania
w ykorzystu jem y instrukcję SELECT.
■ Instru kcje D M L (D ataM anipulation Language) służą do m odyfikow ania zawartości tabel. Istnieją
trzy takie instrukcje:
■ INSERT dodaje w iersze do tabeli.
■ UPDATE zm ien ia wiersze.
■ DELETE usuwa wiersze.
■ In stru kcje D D L (Data Definition Language) definiują struktury danych, takie jak tabele tw orzące
bazę danych. W y ró żn ia m y pięć podstaw ow ych ty p ó w instrukcji D D L:
■ CREATE tw o rzy strukturę bazy danych, na p rzykład instrukcja CREATE TABLE służy do tw orzenia
tabeli, a CREATE USERjest w ykorzystyw ana do tw orzen ia użytkow nika b azy danych.
■ ALTER m odyfikuje strukturę bazy danych, na przykład ALTER TABLE służy do m odyfikacji tabeli.
■ DROP usuwa strukturę b azy danych, na przykład DROP TABLE służy do usuwania tabeli.
■ RENAME zm ien ia n azw ę tabeli.
■ TRUNCATE usuwa w szystkie w iersze z tabeli.
■ Instru kcje T C ( Transaction Control) albo trwale zapisują zm iany w prow adzone w wierszach, albo
je cofają. W y ró żn ia m y trzy instrukcje T C :
■ COMMIT trw ale zapisuje zm ian y w p row adzon e do wierszy.
■ ROLLBACK cofa zm ian y d okonane w wierszach.
■ SAVEPOINT tw o rzy punkt zachowania, do k tórego m ożn a cofnąć zm iany.
■ In stru k cje D C L ( D ata Control Language) służą do nadaw ania u praw nień dostępu do struktur
bazy danych. Istnieją dw ie instrukcje D C L:
Rozdział 1. Wprowadzenie 25
■ GRANT daje u żytkow n ikow i dostęp do wskazanej struktury bazy danych.
■ REVOKE odbiera u żytkow n ikow i praw o dostępu do wskazanej struktury b azy danych.
O racle dostarcza program SQ L*Plus um ożliw iający w p row adzen ie instrukcji SQ L i uzyskanie rezu l
tatów ich działania z bazy danych. SQ L*Plus u m ożliw ia rów n ież w ykonanie skryptów zaw ierających in
strukcje SQ L oraz poleceń SQ L*Plus.
Jest w iele sposobów uruchamiania instrukcji SQ L i pobierania w y n ik ó w z b azy danych. M ożn a to ro
bić za p om ocą oprogram ow an ia O racle Form s and Reports lub p ro g ra m ó w napisanych w innych ję zy
kach, takich jak Java i C#. W ięcej in form acji na tem at w ykon yw an ia instrukcji SQ L w program ach pisa
nych w języku Java m ożn a znaleźć w m ojej książce O racle9i JD B C P ro g ra m m in g (O ra cle Press, 2002).
W ięcej in fo rm a cji na tem at w ykon yw a n ia instrukcji S Q L w program ach pisanych w język u C # m ożn a
znaleźć w m ojej książce M asterin g C# Database P ro g ra m m in g (Sybex, 2003).
Używanie SQL*Plus
Z k olejn ego p od rozd zia łu dow iesz się, jak u ru chom ić p rogram SQ L*Plu s i przesłać zapytanie do b azy
danych.
Uruchamianie SQL*Plus
Jeżeli używasz W in dow s 7, m ożesz uruchomić SQL*Plus, wybierając Wszystkie program y/Oracle/Application
D evelopm ent/SQ L Plus. Jeśli używ asz system u U n ix lub Linux, S Q L*Plu s uruchom isz, wpisując sqlplus
z w iersza poleceń.
Rysunek 1.1 prezentuje SQ L*Plus u ru chom ion y w system ie W in d o w s 7.
Rysunek 1.1.
Oracle Database 12c
SQL*Plus uruchomiony
w Windows 7
N a rysunku przedsta w ion o proces łączenia się użytkow nika scott z bazą danych. U żytk ow n ik scott
jest tw o rzo n y w w ielu bazach danych Oracle, a jego hasło w m ojej bazie danych to oracl e.
N a zw a hosta, znajdująca się po znaku @, in form u je program SQ L*Plus o tym , gd zie została urucho
m ion a baza danych. Jeżeli oprog ra m ow an ie działa na kom pu terze lokaln ym , zw yk le nazw a hosta jest
pom ijana (czyli w pisujem y scott/oracle) — w takim przypadku SQ L*Plus próbuje połączyć się z bazą da
nych na tym sam ym kom pu terze, na k tórym jest uruchom iony. Jeżeli baza danych nie jest uruchom iona
na kom pu terze lokalnym , należy uzyskać nazw ę hosta od jej adm inistratora (D B A ).
Jeśli kon to scott nie istnieje lub jest zablokow ane, należy poprosić adm inistratora o inną nazw ę użyt
k ow n ika i hasło. W przykładach z p ierw szej części rozd zia łu m ożn a korzystać z dow oln ego konta użyt
kow nika.
26 Oracle Database 12c SQL
Uruchamianie SQL*Plus z wiersza poleceń
P rogra m S Q L*Plu s m ożn a u ru chom ić ró w n ież z w iersza poleceń, za p om ocą w yrażenia sqlpl us. Pełna
składnia tego polecenia m a postać:
sqlplus [nazwa_użytkownika [/hasło [@nazwa_hosta]]]
gdzie:
■ nazwa_użytkownika oznacza nazw ę użytkow nika b azy danych,
■ hasło oznacza hasło użytkow nika b azy danych,
■ nazwa_hosta oznacza bazę danych, z którą chcem y się połączyć.
Poniżej przedstaw iono przykłady użycia polecenia sql plus:
sqlplus scott/oracle
sqlplus scott/oracle@orcl
Jeżeli SQ L*Plus używasz w systemie W in dow s, instalator O racle doda autom atycznie katalog progra
m u SQ L*Plus do ścieżki system ow ej. Jeśli używ asz systemu U n ix lub Linux, m asz dw a sposoby, b y uru
chom ić SQ L*Plus:
■ za p om ocą p olecen ia cd p rzejd ź do katalogu, w k tó rym znajdu je się p lik w y k o n y w a ln y sqlplus,
i uruchom sql plus z tego katalogu;
■ dodaj katalog, w k tó rym znajdu je się sqlplus, do system ow ej ścieżki dostępu i uru chom sqlplus.
W razie p rob lem ów z ustawianiem system owej ścieżki dostępu należy się skontaktow ać z adm in i
stratorem systemu.
Z e w zględ ów bezpieczeństw a m ożna ukryć hasło podczas łączenia się z bazą danych. M ożn a na p rzy
kład wpisać:
sqlplus scott@orcl
W takiej sytuacji SQ L*Plus poprosi o w prow adzen ie hasła, które pozostanie niew idoczne.
M ożn a rów n ież po prostu wpisać:
sqlplus
W takim przypadku S Q L*Plu s p op rosi o w p ro w a d zen ie n a zw y u żytkow n ika i hasła. N a zw ę hosta
m ożn a dopisać do n azw y u żytkow nika (na przykład scott@ orcl).
Wykonywanie instrukcji SELECT za pomocą SQL*Plus
Po zalogow an iu się do bazy danych za p om ocą SQ L*Plus m ożn a od razu uruchom ić następujące polece
nie SELECT, które zw raca bieżącą datę:
SELECT SYSDATE FROM dual;
W tej książce instrukcje SQL w yróżn ion e p og ru b ien iem należy w pisyw ać sam odzielnie.
u . N i e trzeba w pisyw ać niew yróżnionych instrukcji.
SYSDATE jest w budow aną funkcją bazy danych, zwracającą bieżącą datę, dual jest natom iast tabelą za
wierającą jeden wiersz. W ięcej na tem at tabeli dual d ow iesz się w k olejn ym rozdziale.
Instrukcje SQ L należy kończyć średnikiem (;).
Uwaga
Rysunek 1.2 przedstawia datę zw rócon ą jako w ynik opisanej w yżej instrukcji SELECT.
W program ie SQ L*Plus m ożn a edytować ostatnią instrukcję SQL. W tym celu należy w pisać EDIT. Jest
to przydatne, gd y p op ełn im y błąd lub chcem y w p ro w a d zić zm ian ę do instrukcji. W system ie W in d ow s
po wpisaniu EDIT jest urucham iany N otatnik, w k tórym edytuje się instrukcje SQL. Po zakończeniu pracy
N otatn ika i zapisaniu instrukcji SQ L jest ona przesyłana z p ow rotem do SQ L*Plus, gd zie m ożn a ją uru
chom ić pon ow n ie, wpisując ukośnik (/). W system ie Lin u x lub U n ix dom yśln ym edytorem jest ed. A b y
zapisać zm iany w instrukcji i opuścić ed, należy wpisać wq.
Rozdział 1. Wprowadzenie 27
Rysunek 1.2.
Wynik instrukcji
SELECT SYSDATE
F R O M dual;
K w e s tia p o lo n iz a c ji
Aby uzyskać format daty zaprezentowany na rysunku 1.2, a także polskie komunikaty z bazy danych w i
doczne na zrzutach w dalszej części książki, w konsoli W indows 7 należy wcześniej odpowiednio usta
w ić wartość zmiennej środowiskowej NLS LANG:
set NLS LANG=POLISH POLAND.EE8MSWIN1250
oraz stronę kodową konsoli:
chcp 1250
a dopiero potem uruchomić program sqlpl us.
Aby polskie znaki w wynikach zapytań wyświetlanych w konsoli wyświetlały się poprawnie, należy
w e właściwościach okna konsoli zm ienić czcionkę z Czcionki rastrowe na Lucida Console.
R o z w ią z a n ie p r o b le m u z b łę d e m p r z y p r ó b ie s k o rz y s ta n ia z e d y c ji
Jeśli przy próbie edycji instrukcji w W indow s pojawi się błąd SP2-0110, należy uruchomić SQL*Plus
z uprawnieniami administratora. W W indows 7 można to zrobić, klikając prawym klawiszem myszy skrót
do SQL*Plus i wybierając Uruchom jako administrator. Można ustawić to na stałe — aby to zrobić, należy
kliknąć prawym klawiszem myszy skrót do SQL*Plus, wybrać Właściwości, a następnie w zakładce Zgod
ność zaznaczyć Uruchom ten program jako administrator.
M ożesz też ustawić katalog, w którym SQL*Plus ma się uruchamiać. Aby to zrobić, należy kliknąć pra
wym klawiszem myszy skrót do SQL*Plus, wybrać Właściwości, a następnie zm ienić katalog w znajdują
cym się w zakładce Skrót polu Rozpocznij w:. SQL*Plus będzie używał tego domyślnego katalogu do za
pisywania i wczytywania plików. M ożesz na przykład ustawić ten katalog na C:\Moje_pliki_SQL i wtedy
SQL*Plus będzie domyślnie zapisywał i wczytywał pliki z tego katalogu.
W SQ L*Plus w systemie W in dow s m ożn a wracać do urucham ianych w cześniej poleceń, wciskając na
klaw iaturze klaw isze ze strzałkam i w górę i w dół.
W ięcej inform acji na temat edytowania instrukcji SQ L w program ie SQ L*Plus znajduje się w rozdziale 3.
SQL Developer
Instrukcje SQ L m ożn a rów n ież w p row a d zać za p om ocą program u S Q L D eveloper. M a on graficzn y in
terfejs użytkow nika, w k tórym m ożn a w pisyw ać instrukcje SQ L, przeglądać tabele b azy danych, urucha
m iać skrypty, edytow ać i debugow ać k od PL/SQL i w ykon yw ać inne zadania. M o że łączyć się z bazą da
nych O racle w w ersji 9.2.0.1 lub w yższej i jest dostępny dla w ielu system ów operacyjnych. Rysunek 1.3
przedstawia okno program u SQ L D eveloper.
B I C:\Windows\system32\cmd.exe- sqlplus
SQL> SELECT SYSDATE FROM d u a l;
*
SYSDATE
14/06/30
SQL> .
| < _______________________________________________ ■»»____ ►
28 Oracle Database 12c SQL
C i Oracle SQL Developer : store => 1 B P Ü
[De («fit yicw Navigate gun Vetsigning loots
3 ^ 0 9 W X i l 0 * 0 * &
ydp
b P
SĄ Connections * „'.Reports * Q i t « « » F )
♦ • 1Ä > ifc] M t i ^ la C A VS i/ Cd 0. U 700001 «conde I l store »
CamKtom
8 I I C*ecJe Database 12c.
9 IcJ store
t. labiés (Httfcd)
® View*
8 Eiitwr■iy View»
i, j j Indexes
lu 8 l’adcapw
9 {J j Proreciee*
S & Eu».tiuta
8 Qj} Queues
tu & , Queue* labiés
ï Trigger*
B L â Gowecitwn Tr^gers
8 S i Types
lu J Leauences
S 8 MktrrMlml Vir*<
B \J!j MetenaUed View» Logs
B Q | Sv w v w
lu l\A>keSynonyms
S 40 fWAhese Iries
B ,aMPubfc. DatabaseIr i»
S J Drectones
lu cjtdtton*
B , ] ApptrAtxmTxpre«
* jü Java
B ÎQ XM. Schémas
U ¡y KMLWKeooatOry
Rysunek 1.3. Okno programu SQL Developer, uruchomionego w systemie Windows
N a leży pobrać wersję program u SQ L D eveloper zawierającą Java Software D evelopm en t K it (S D K ) lub
m ieć w cześniej zainstalowaną popraw ną w ersję Java SD K. W ym agan a wersja Java S D K zależy od wersji
program u SQ L D eveloper. S zczegóły m ożn a spraw dzić na stronie p rogram u SQ L D eveloper w serwisie
w w w .oracle.com .
P o p op ra w n ym uruchom ien iu program u S Q L D evelo p er n iezbędne b ęd zie u tw orzen ie połączen ia
z bazą danych p o p rzez k likn ięcie p raw ym k law iszem m yszy C onnections i w ybran ie N ew C onnection.
SQ L D eveloper w y św ietli okn o d ia lo go w e w k tó rym n ależy w pisać szczegóły połączenia z bazą danych.
Rysunek 1.4 pokazuje p rzykładow e okno d ialogow e z w pisanym i szczegółam i połączenia.
Rysunek 1.4.
Konfigurowanie
połączenia z bazą
danych w programie
SQL Developer
SELECT SYSDATE FROM d ual;
» ) Sept Output x
it Q Q Tas*,completedn 0,187 seconds
STS&ATZ
14/06/30
Po utw orzeniu i przetestow an iu połączenia m ożn a używ ać program u SQ L D eveloper do przegląda
nia tabel b azy danych i urucham iania instrukcji. Rysunek 1.5 przedstawia szczegółow e in form acje o ta
beli customers.
O R A C L E Oracle Database 12c iSQL Programowanie Jason Price HeliorTtf Oracle Press
Spis treści W p row ad zen ie .................................................................................................................................................... 19 1 W p r o w a d z e n ie ....................................................................................................................................................23 C zym jest relacyjna baza d a n y ch ? ....................................................................................................................23 W stęp d o S Q L ...................................................................................................................................................... 24 U żyw anie SQ L*Plus ............................................................................................................................................25 Urucham ianie S Q L *P lu s ...........................................................................................................................25 Urucham ianie SQ L*Plus z wiersza poleceń ........................................................................................26 W ykon yw an ie instrukcji SELECT za p om ocą SQL*Plus ....................................................................26 SQL D eveloper ....................................................................................................................................................27 T w orzen ie schematu bazy danych sklepu ..................................................................................................... 30 Zawartość skryptu ..................................................................................................................................... 30 Urucham ianie skryptu .............................................................................................................................. 31 Instrukcje D D L używane d o tw orzenia schematu bazy danych sklepu ........................................ 32 D odawanie, m odyfikow anie i usuwanie w ie r s z y ......................................................................................... 38 D odaw anie wiersza d o tabeli ................................................................................................................. 38 M odyfikow an ie istniejącego w iersza w tabeli ......................................................................................39 Usuwanie wiersza z tabeli .......................................................................................................................40 Łączenie z bazą danych i rozłączanie ............................................................................................................ 40 Kończenie pracy SQ L*Plus ............................................................................................................................... 40 W p row a d zen ie d o O racle PL/SQ L.................................................................................................................. 41 Podsum owanie ....................................................................................................................................................41 2 P ob ieran ie in form acji z ta bel bazy d a n y c h ................................................................................................ 43 W ykon yw an ie instrukcji SELECT dla jednej tabeli .......................................................................................43 Pobieranie wszystkich kolumn z tabeli ...........................................................................................................44 W ykorzystanie klauzuli W HERE d o wskazywania w ierszy d o pobrania ................................................ 44 Identyfikatory w ie rs z y .........................................................................................................................................44 N um ery w ierszy ...................................................................................................................................................45 W ykon yw an ie działań arytm etycznych ..........................................................................................................45 W ykon yw an ie obliczeń na datach .........................................................................................................46 Korzystanie z kolumn w obliczeniach ...................................................................................................47 Kolejność w ykonyw ania działań ............................................................................................................ 48 U żyw anie aliasów kolumn .................................................................................................................................48 Łączenie wartości z kolumn za p om ocą konkatenacji ............................................................................... 49 W artości null .........................................................................................................................................................49 W yśw ietlanie unikatowych w ie r s z y ................................................................................................................. 50 Porów nyw anie w a rto ś ci......................................................................................................................................51 O perator < > ..............................................................................................................................................51 O perator > ................................................................................................................................................. 52 O perator < = ..............................................................................................................................................52 O perator A N Y .............................................................................................................................................52 O perator ALL ..............................................................................................................................................52
e Oracle Database 12c i SQL. Programowanie Korzystanie z operatorów SQL .........................................................................................................................53 O perator LIK E ............................................................................................................................................. 53 O perator IN .................................................................................................................................................54 O perator B E TW E EN .................................................................................................................................. 55 O peratory logiczne ............................................................................................................................................. 55 O perator A N D ............................................................................................................................................55 O perator O R .............................................................................................................................................. 56 Następstwo operatorów ........................................................................................................................... 56 Sortow anie w ierszy za p om ocą klauzuli O RD ER BY .................................................................................. 57 Instrukcje SELECT wykorzystujące d w ie tabele ............................................................................................58 U żyw anie aliasów tabel .....................................................................................................................................59 Iloczyny kartezjańskie ........................................................................................................................................ 60 Instrukcje SELECT wykorzystujące w ięcej niż dw ie ta b e le .........................................................................60 W arunki złączenia i typy złączeń ....................................................................................................................61 N ierów n ozłączen ia ....................................................................................................................................61 Złączenia zew n ętrzn e ...............................................................................................................................62 Złączenia własne ....................................................................................................................................... 65 W ykon yw an ie złączeń za p om ocą składni SQL/92 .....................................................................................66 W ykon yw an ie złączeń w ew nętrznych dw óch tabel z wykorzystaniem składni SQL/92 .......... 66 U praszczanie złączeń za p om ocą słowa kluczow ego U SIN G ......................................................... 67 W ykon yw an ie złączeń w ew nętrznych obejm ujących w ięcej niż d w ie tabele (SQL/92) .......... 67 W ykon yw an ie złączeń w ew nętrznych z użyciem wielu kolumn (S Q L/92 ).................................. 68 W ykon yw an ie złączeń zew nętrznych z użyciem składni SQL/92 ..................................................68 W ykon yw an ie złączeń własnych z użyciem składni SQL/92 .......................................................... 69 W ykon yw an ie złączeń krzyżowych z użyciem składni SQL/92 ......................................................70 Podsum owanie .................................................................................................................................................... 70 3 SQ L*Plus .............................................................................................................................................................. 71 Przeglądanie struktury tabeli .............................................................................................................................71 Edycja instrukcji SQL ..........................................................................................................................................72 Zapisywanie, odczytyw anie i uruchamianie plików ....................................................................................73 Form atowanie kolumn ....................................................................................................................................... 76 Ustawianie rozmiaru stro n y ...............................................................................................................................77 Ustawianie rozmiaru w ie rs z a ............................................................................................................................ 78 Czyszczenie form atow ania kolumny .............................................................................................................. 78 U żyw anie zm iennych .........................................................................................................................................79 Zm ien n e tym czasow e ...............................................................................................................................79 Zm ien n e zd efin iow an e ............................................................................................................................ 81 T w orzen ie prostych ra p o rtó w ........................................................................................................................... 83 U żyw anie zm iennych tym czasowych w skrypcie ...............................................................................83 U żyw anie zm iennych zdefiniow anych w skrypcie ............................................................................ 84 Przesyłanie wartości d o zm iennej w skrypcie .....................................................................................84 D odaw anie nagłówka i stopki ................................................................................................................ 85 O bliczan ie sum p ośred n ich ..................................................................................................................... 86 Uzyskiwanie pom ocy od SQ L*Plus ................................................................................................................ 87 Autom atyczne generow anie instrukcji SQL ..................................................................................................88 Kończenie połączenia z bazą danych i pracy SQ L*Plus ............................................................................ 88 Podsum owanie .................................................................................................................................................... 89 4 Proste fu n k c je ......................................................................................................................................................91 Typy funkcji .......................................................................................................................................................... 91 Funkcje je d n o w ie rs z o w e ....................................................................................................................................91 Funkcje z n a k o w e ....................................................................................................................................... 92 Funkcje n u m eryczn e................................................................................................................................. 98
Funkcje konw ertujące ............................................................................................................................103 Funkcje w yrażeń regularnych ...............................................................................................................112 Funkcje ag reg u ją ce............................................................................................................................................117 A V G ()..........................................................................................................................................................118 C O U N T () ...................................................................................................................................................119 M AX() i M I N ()............................................................................................................................................119 S T D D E V ()...................................................................................................................................................120 SU M () .........................................................................................................................................................120 VARIANCEO ..............................................................................................................................................120 G rupow anie w ie rs z y ......................................................................................................................................... 120 G rupow anie w ierszy za p om ocą klauzuli G R O U P B Y ....................................................................120 N iepraw id łow e użycie funkcji agregujących .................................................................................... 123 Filtrowanie grup w ierszy za p om ocą klauzuli H A V IN G ................................................................. 124 Jednoczesne używanie klauzul W HERE i G R O U P BY ....................................................................124 Jednoczesne używanie klauzul WHERE, G R O U P BY i H A V IN G ..................................................125 Podsum owanie ..................................................................................................................................................125 5 Składow anie o ra z p rzetw arzan ie dat i czasu .......................................................................................... 127 Proste przykłady składowania i pobierania d a t .......................................................................................... 127 Konw ertow anie typ ów DataG odzina za p om ocą funkcji T O _C H A R () i T O _ D A T E ()........................ 128 Konwersja daty i czasu na napis za p om ocą funkcji T O _C H A R () ................................................ 128 Konwersja napisu na w yrażenie DataG odzina za p om ocą funkcji T O _D A TE () ....................... 132 Ustawianie dom yślnego formatu d a t y ..........................................................................................................134 Jak O racle interpretuje lata dw ucyfrow e? ...................................................................................................135 U życie formatu YY ..................................................................................................................................135 U życie formatu R R ..................................................................................................................................136 Funkcje operujące na datach i godzinach ...................................................................................................137 A D D _M O N T H S () .................................................................................................................................... 138 LAST_D AY() ..............................................................................................................................................138 M O N T H S _B E T W E E N ()...........................................................................................................................138 N E X T _D A Y ()..............................................................................................................................................139 R O U N D ()...................................................................................................................................................139 S YS D A TE ....................................................................................................................................................140 T R U N C () ....................................................................................................................................................140 Strefy czasow e ...................................................................................................................................................140 Funkcje operu jące na strefach czasow ych ........................................................................................141 Strefa czasow a bazy danych i strefa czasow a sesji ...........................................................................141 U zyskiwanie przesunięć strefy czasow ej ............................................................................................142 U zyskiwanie nazw stref c za s o w y c h ..................................................................................................... 143 Konw ertow anie w yrażenia DataG odzina z jednej strefy czasow ej na inną .............................. 143 Datowniki (znaczniki czasu) ...........................................................................................................................143 Typy d a to w n ik ó w .....................................................................................................................................144 Funkcje operujące na znacznikach c za s u .......................................................................................... 147 Interwały czasow e .............................................................................................................................................151 Typ INTERVAL YEAR T O M O N T H ..................................................................................................... 152 Typ INTERVAL D A Y T O S E C O N D ...................................................................................................... 153 Funkcje operu jące na interwałach ...................................................................................................... 155 Podsum ow anie ..................................................................................................................................................156 6 P od zapytan ia .................................................................................................................................................... 157 R odzaje p od za p y ta ń ......................................................................................................................................... 157 Pisanie podzapytań je d n o w ie rs zo w y c h ........................................................................................................157 Podzapytania w klauzuli W H E R E .........................................................................................................157 U życie innych operatorów jedn ow ierszow ych .................................................................................158 Spis treści 7
Podzapytania w klauzuli H A V IN G ....................................................................................................... 159 Podzapytania w klauzuli FROM (widoki w b u d ow ane) ...................................................................160 Błędy, które m ożna napotkać .............................................................................................................. 160 Pisanie podzapytań w ielow ierszow ych ........................................................................................................ 161 U życie operatora IN z podzapytaniem w ie lo w ie rszo w y m ............................................................. 161 U życie operatora A N Y z podzapytaniem w ielow ierszow ym ........................................................ 162 U życie operatora ALL z podzapytaniem w ielow ierszow ym ......................................................... 163 Pisanie podzapytań w ielokolu m now ych ......................................................................................................163 Pisanie podzapytań skorelowanych .............................................................................................................. 163 Przykład podzapytania s k o re lo w a n e g o ...............................................................................................163 U życie operatorów EXISTS i N O T EXISTS z podzapytaniem skorelowanym .............................164 Pisanie zagnieżdżonych podzapytań ............................................................................................................166 Pisanie instrukcji UPDATE i DELETE zaw ierających podzapytania .......................................................167 Pisanie instrukcji UPDATE zaw ierającej p o d za p y ta n ie...................................................................167 Pisanie instrukcji DELETE zaw ierającej podzapytanie .................................................................... 168 Przygotow yw anie p od za p y ta ń ........................................................................................................................168 Podsum owanie .................................................................................................................................................. 169 7 Z apytan ia z a a w a n s o w a n e ..............................................................................................................................171 O peratory zestawu ...........................................................................................................................................171 Przykładow e ta b e le ................................................................................................................................. 171 O perator U N IO N ALL ........................................................................................................................... 172 O perator U N IO N ....................................................................................................................................173 O perator IN TE RSE C T..............................................................................................................................174 O perator M IN U S .....................................................................................................................................174 Łączenie operatorów zestawu .............................................................................................................. 175 U życie funkcji TRANSLATE() .......................................................................................................................... 176 U życie funkcji DECODE() ...............................................................................................................................177 U życie w yrażenia CASE ...................................................................................................................................178 Proste w yrażenia CASE .......................................................................................................................... 179 Przeszukiwane w yrażenia CASE ...........................................................................................................179 Zapytania h ierarch iczn e...................................................................................................................................181 Przykładow e dane ...................................................................................................................................181 Zastosow anie klauzul C O N N E C T BY i START W IT H ..................................................................... 182 U życie pseudokolum ny LEVEL .............................................................................................................183 Form atowanie w yników zapytania h ierarch iczn ego........................................................................183 R ozpoczynanie od w ęzła innego niż głów ny ....................................................................................184 U życie podzapytania w klauzuli START W IT H ................................................................................ 185 Poruszanie się po d rzew ie w górę .......................................................................................................185 Elim inowanie w ę złó w i gałęzi z zapytania h ierarch iczn ego...........................................................185 U m ieszczanie innych w arunków w zapytaniu hierarch icznym .....................................................186 Zapytania hierarchiczne wykorzystujące rekurencyjne podzapytania p rzy g oto w y w a n e 187 Klauzule R O LLU P i CUBE ...............................................................................................................................190 Przykładow e ta b e le ................................................................................................................................. 190 U życie klauzuli R O L L U P ........................................................................................................................192 Klauzula CUBE .........................................................................................................................................194 Funkcja G R O U P IN G ().............................................................................................................................195 Klauzula G R O U P IN G SETS ...................................................................................................................197 U życie funkcji G R O U P IN G _ID () ......................................................................................................... 198 Kilkukrotne użycie kolumny w klauzuli G R O U P B Y ........................................................................199 U życie funkcji G R O U P _ID () ................................................................................................................ 200 U życie CROSS A PPLY i O U TER A PPLY .......................................................................................................201 CROSS A PPLY ..........................................................................................................................................201 O U TE R A P P L Y ..........................................................................................................................................202 8 Oracle Database 12c i SQL. Programowanie
LATERAL ..............................................................................................................................................................202 Podsum owanie ................................................................................................................................................. 203 8 A n a liza d a n y c h ..................................................................................................................................................205 Funkcje a n a lity czn e.......................................................................................................................................... 205 Przykładowa tabela .................................................................................................................................205 U życie funkcji klasyfikujących ............................................................................................................. 206 U życie odw rotnych funkcji rankingowych ........................................................................................212 U życie funkcji o k n a .................................................................................................................................212 Funkcje raportujące ............................................................................................................................... 218 U życie funkcji LAG() i LEAD() ..............................................................................................................220 U życie funkcji FIRST i L A S T ................................................................................................................. 221 U życie funkcji regresji liniowej ........................................................................................................... 221 U życie funkcji hipotetycznego rankingu i rozkładu ........................................................................ 222 U życie klauzuli M O D E L ..................................................................................................................................223 Przykład zastosowania klauzuli M O D E L ............................................................................................223 Dostęp d o kom órek za p om ocą zapisu pozycyjn ego i s y m b o lic zn e g o .......................................224 U zyskiwanie dostępu d o zakresu kom órek za p om ocą BETWEEN i A N D .................................225 Sięganie d o wszystkich kom órek za p om ocą A N Y i IS A N Y ..........................................................225 Pobieranie bieżącej wartości wym iaru za p om ocą funkcji CU RREN TV() ..................................226 U zyskiwanie dostępu d o kom órek za p om ocą pętli FO R ............................................................. 227 Obsługa wartości N U LL i brakujących ...............................................................................................227 M odyfikow an ie istniejących k o m ó re k ................................................................................................ 229 U życie klauzul PIV O T i U N P IV O T ................................................................................................................230 Prosty przykład klauzuli P IV O T ............................................................................................................ 230 Przestawianie w oparciu o w iele kolumn .......................................................................................... 231 U życie kilku funkcji agregujących w przestawieniu ........................................................................ 232 U życie klauzuli U N P IV O T .....................................................................................................................233 Zapytania o określoną liczbę w ie r s z y ........................................................................................................... 234 U życie klauzuli FETCH FIRST ...............................................................................................................234 U życie klauzuli OFFSET ........................................................................................................................ 235 U życie klauzuli PE R C E N T ......................................................................................................................236 U życie klauzuli W IT H T IE S ....................................................................................................................236 O dnajdyw anie w zo rcó w w danych ..............................................................................................................237 O dnajdyw anie w zo rcó w form acji typu V w danych z tabeli all_sales2 ..................................... 237 O dnajdyw anie form acji typu W w danych ztabeli all_sales3 ........................................................240 O dnajdyw anie form acji typu V w tabeli all_sales3 ......................................................................... 241 Podsum owanie ................................................................................................................................................. 242 9 Z m ien ia n ie zaw a rtości t a b e li....................................................................................................................... 243 W staw ianie w ierszy za p om ocą instrukcji IN S E R T.................................................................................... 243 Pom ijanie listy kolumn ...........................................................................................................................244 Określanie wartości N U LL dla k o lu m n y .............................................................................................244 U m ieszczanie pojedynczych i podw ójnych cu dzysłow ów w wartościach kolumn ................. 245 K opiow anie w ierszy z jednej tabeli d o innej .................................................................................... 245 M odyfikow an ie w ierszy za p om ocą instrukcji U P D A T E ...........................................................................245 Klauzula R ETU RNING ..................................................................................................................................... 246 Usuwanie w ierszy za p om ocą instrukcji DELETE.......................................................................................246 Integralność bazy danych ............................................................................................................................... 247 W ym uszanie w ię z ó w klucza g łó w n e g o ..............................................................................................247 W ym uszanie w ię z ó w kluczy o b c y c h ...................................................................................................247 U życie wartości d om yśln ych ...........................................................................................................................248 Scalanie w ierszy za p om ocą instrukcji M E R G E .......................................................................................... 249 Spis treści 9
Transakcje b a z o d a n o w e .................................................................................................................................. 251 Zatw ierdzanie i w ycofyw anie transakcji ............................................................................................251 R ozpoczynanie i kończenie transakcji ................................................................................................252 Punkty z a c h o w a n ia ................................................................................................................................. 252 A C ID — właściwości transakcji ............................................................................................................254 Transakcje w spółbieżne .........................................................................................................................254 B lokow anie transakcji ............................................................................................................................ 255 Poziom y izolacji transakcji ....................................................................................................................256 Przykład transakcji SERIALIZABLE .......................................................................................................256 Zapytania retrospektywne ...............................................................................................................................257 Przyznawanie uprawnień d o używania zapytań retrospektywnych ............................................257 Zapytania retrospektywne w oparciu o czas .....................................................................................258 Zapytania retrospektywne z użyciem SCN ....................................................................................... 259 Podsum owanie ..................................................................................................................................................260 10 U żytkow n icy, u praw n ien ia i r o l e ................................................................................................................ 261 Bardzo krótkie w p row adzen ie d o przechow yw ania danych ..................................................................261 U ży tk o w n ic y .......................................................................................................................................................262 T w orzen ie konta użytkownika .............................................................................................................262 Zm ienianie hasła użytkownika .............................................................................................................263 Usuwanie konta użytkownika ..............................................................................................................263 Uprawnienia system ow e ................................................................................................................................. 263 Przyznawanie uprawnień system owych użytkownikowi ............................................................... 263 Sprawdzanie uprawnień system owych przyznanych użytkownikow i ........................................ 264 Zastosow anie uprawnień system owych ............................................................................................. 265 O dbieranie uprawnień system owych .................................................................................................265 Uprawnienia o b ie k to w e .................................................................................................................................. 266 Przyznawanie użytkownikowi uprawnień obiektow ych ................................................................ 266 Sprawdzanie przekazanych uprawnień ............................................................................................. 267 Sprawdzanie otrzym anych uprawnień obiektow ych ...................................................................... 268 Zastosow anie uprawnień o b ie k to w y c h .............................................................................................. 269 Synonim y ..................................................................................................................................................270 Synonim y publiczne ...............................................................................................................................270 O dbieranie uprawnień obiektow ych ..................................................................................................271 R o le ...................................................................................................................................................................... 271 T w orzen ie ról ...........................................................................................................................................271 Przyznawanie uprawnień roli ............................................................................................................... 272 Przyznawanie roli użytkownikowi .......................................................................................................272 Sprawdzanie ról przyznanych użytkownikowi ................................................................................. 272 Sprawdzanie uprawnień system owych przyznanych roli .............................................................. 273 Sprawdzanie uprawnień obiektow ych przyznanych roli ...............................................................274 Zastosow anie uprawnień przyznanych roli ....................................................................................... 275 Aktywacja i deaktywacja ról ..................................................................................................................276 O dbieranie roli ........................................................................................................................................ 276 O dbieranie uprawnień r o li....................................................................................................................276 Usuwanie roli ...........................................................................................................................................277 O bserw acja ........................................................................................................................................................277 U prawnienia w ym agane d o przeprow adzania obserwacji ............................................................277 Przykłady obserwacji ..............................................................................................................................277 Perspektywy zapisu obserwacji ............................................................................................................279 Podsum owanie ..................................................................................................................................................279 10 Oracle Database 12c i SQL. Programowanie
11 T w o rzen ie ta bel, sekw encji, in dek sów i p e r s p e k ty w ............................................................................281 T a b e le .................................................................................................................................................................. 281 T w orzen ie tabeli ......................................................................................................................................281 Pobieranie informacji o tabelach .........................................................................................................282 Uzyskiwanie informacji o kolumnach w tabeli .................................................................................283 Zm ienianie tabeli .................................................................................................................................... 284 Zm ienianie nazw y tabeli ....................................................................................................................... 291 D odaw anie kom entarza d o tabeli ....................................................................................................... 291 O bcinanie tabeli ..................................................................................................................................... 292 Usuwanie tabeli .......................................................................................................................................292 Typy BIN AR Y_FLO AT i BIN ARY_D O U B LE .......................................................................................292 U życie kolumn DEFAULT O N N U L L ..................................................................................................293 Kolumny n ie w id o c z n e ............................................................................................................................294 S e k w e n c je ........................................................................................................................................................... 296 T w orzen ie sekwencji .............................................................................................................................. 296 Pobieranie informacji o sek w en cja ch ................................................................................................. 298 U żyw anie sekwencji ............................................................................................................................... 298 W ypełnianie klucza głów n ego z użyciem sekwencji ......................................................................300 Określanie dom yślnej wartości kolum ny za p om ocą sekwencji ...................................................300 Kolumny typu ID ENTITY ....................................................................................................................... 301 M odyfikow an ie sekwencji .....................................................................................................................301 Usuwanie sekwencji ............................................................................................................................... 302 Indeksy ................................................................................................................................................................302 T w orzen ie indeksu typu B -drzew o ..................................................................................................... 303 T w orzen ie indeksów opartych na funkcjach .................................................................................... 303 Pobieranie informacji o indeksach ...................................................................................................... 304 Pobieranie informacji o indeksach kolumny .................................................................................... 304 M odyfikow an ie indeksu ........................................................................................................................ 305 Usuwanie indeksu ................................................................................................................................... 305 T w orzen ie indeksu b itm a p o w e g o ........................................................................................................305 P ersp ek tyw y....................................................................................................................................................... 306 T w orzen ie i używanie p ersp ek ty w ...................................................................................................... 307 M odyfikow an ie p ersp ek tyw y................................................................................................................313 Usuwanie perspektyw y ......................................................................................................................... 313 U żyw anie niew idocznych kolumn w perspektywach .....................................................................313 Archiw a m ig a w e k ..............................................................................................................................................314 Podsum owanie ................................................................................................................................................. 316 12 W p ro w a d ze n ie d o p rogram ow an ia w PL/SQL ........................................................................................317 Bloki .....................................................................................................................................................................317 Z m ienne i t y p y ...................................................................................................................................................319 Logika w arunkowa ............................................................................................................................................319 Pętle .....................................................................................................................................................................320 Proste pętle ............................................................................................................................................... 320 Pętle W H ILE .............................................................................................................................................321 Pętle FOR ................................................................................................................................................. 321 Kursory ................................................................................................................................................................322 Krok 1. — deklarow anie zm iennych przechow ujących wartości kolumn .................................322 Krok 2. — deklaracja kursora ...............................................................................................................322 Krok 3. — otw arcie k u rsora.................................................................................................................. 323 Krok 4. — pobieranie w ierszy z kursora ............................................................................................323 Krok 5. — zam knięcie kursora............................................................................................................. 323 Pełny przykład — product_cursor.sql ................................................................................................ 324 Spis treści 11
1 2 O ra c le D atab ase 12c i SQ L. P ro g ra m o w a n ie Kursory i pętle FOR ................................................................................................................................ 325 Instrukcja O PE N -F O R ............................................................................................................................ 325 Kursory bez ograniczenia ...................................................................................................................... 327 W yjątki ................................................................................................................................................................ 328 W yjątek ZERO _D IVID E .........................................................................................................................330 W yjątek D U P _V A L _O N _IN D E X ......................................................................................................... 330 W yjątek IN V A LID _N U M B E R ............................................................................................................... 330 W yjątek OTHERS ....................................................................................................................................331 P ro c e d u ry ............................................................................................................................................................331 T w orzen ie p ro ce d u ry..............................................................................................................................332 W yw oływ a n ie p ro c e d u ry ...................................................................................................................... 333 U zyskiwanie informacji o procedurach ............................................................................................. 334 Usuwanie p ro ced u ry ...............................................................................................................................335 Przeglądanie b łędów w procedurze ................................................................................................... 335 Fu n k cje................................................................................................................................................................ 335 T w orzen ie funkcji ....................................................................................................................................336 W yw oływ a n ie funkcji ............................................................................................................................ 336 U zyskiwanie informacji o funkcjach ................................................................................................... 337 Usuwanie funkcji .....................................................................................................................................337 P a k iety ..................................................................................................................................................................337 T w orzen ie specyfikacji pakietu ............................................................................................................338 T w orzen ie treści pakietu ........................................................................................................................338 W yw oływ a n ie funkcji i procedur z pakietu ......................................................................................339 U zyskiwanie informacji o funkcjach i procedurach w pakiecie ................................................... 340 Usuwanie pakietu ....................................................................................................................................340 W yzw ala cze .......................................................................................................................................................340 Kiedy uruchamiany jest w yzw alacz .................................................................................................... 340 Przygotow ania d o przykładu w y z w a la c z a ..........................................................................................341 T w orzen ie w yzw alacza .......................................................................................................................... 341 Urucham ianie w yzw alacza ...................................................................................................................343 U zyskiwanie informacji o w yzw alaczach ...........................................................................................343 W łączan ie i w yłączanie w yzw alacza .................................................................................................. 345 Usuwanie w yzw alacza ........................................................................................................................... 345 Rozszerzenia PL/SQL ....................................................................................................................................... 345 Typ SIMPLE_INTEGER ........................................................................................................................... 345 Sekw encje w PL/SQL ..............................................................................................................................346 G enerow an ie natyw nego kodu m aszynow ego z PL/SQL ..............................................................347 Klauzula W IT H ........................................................................................................................................ 347 Podsum owanie ..................................................................................................................................................348 13 O b iek ty bazy d a n y c h ...................................................................................................................................... 349 W p row ad zen ie d o o b ie k tó w .......................................................................................................................... 349 U ruchom ienie skryptu tw orzącego schem at bazy danych o b je c t_s ch e m a ..........................................350 T w orzen ie typ ów obiektow ych ..................................................................................................................... 350 Uzyskiwanie informacji o typach obiektow ych za p om ocą DESCRIBE ................................................351 U życie typów obiektow ych w tabelach bazy danych ...............................................................................352 O biekty kolum now e ...............................................................................................................................352 Tabele obiek tow e ....................................................................................................................................354 Identyfikatory obiek tów i odw ołania obiek tow e ..............................................................................357 Porów nyw anie wartości o b ie k tó w .......................................................................................................359 U życie obiek tów w PL/SQ L............................................................................................................................ 361 Funkcja get_products() ........................................................................................................................... 361 Procedura display_product() ................................................................................................................ 362 Procedura in sert_produ ct()....................................................................................................................363
Procedura update_product_price() ..................................................................................................... 363 Funkcja g e t_p ro d u ct()............................................................................................................................. 364 Procedura u p d ate_p rod u ct()................................................................................................................. 364 Funkcja g e t_p ro d u ct_ref()......................................................................................................................365 Procedura delete_produ ct() .................................................................................................................. 365 Procedura product_lifecycle() ...............................................................................................................366 Procedura produ ct_lifecycle2() ............................................................................................................ 367 D ziedziczenie t y p ó w ........................................................................................................................................368 Urucham ianie skryptu tw orzącego schem at bazy danych object_schem a2 ............................. 368 D zied ziczen ie a try b u tó w ....................................................................................................................... 369 U życie podtypu zam iast typu n adrzędnego ............................................................................................... 370 Przykłady S Q L .......................................................................................................................................... 370 Przykłady PL/SQL .................................................................................................................................... 371 O biekty N O T SU B STITU TAB LE ........................................................................................................... 371 Inne przydatne funkcje obiek tów ................................................................................................................. 372 Funkcja IS O F() ........................................................................................................................................372 Funkcja TREAT() .......................................................................................................................................375 Funkcja SYS_TYPEID() ............................................................................................................................378 Typy o biek tow e N O T INSTANTIABLE .........................................................................................................378 Konstruktory defin iow an e przez u żytk ow n ik a............................................................................................379 Przesłanianie m etod ......................................................................................................................................... 382 U ogóln ion e w yw oływ an ie .............................................................................................................................. 384 U ruchom ienie skryptu tw orzącego schem at bazy danych object_schem a3 ............................. 384 D ziedziczenie a try b u tó w .......................................................................................................................384 Podsum ow anie ................................................................................................................................................. 385 14 K olekcje ............................................................................................................................................................. 387 Podstaw ow e inform acje o kolekcjach ..........................................................................................................387 Uruchom ienie skryptu tw orzącego schem at bazy danychcollectio n _sch em a .................................... 387 T w orzen ie kolekcji ........................................................................................................................................... 388 T w orzen ie typu V A R R A Y ....................................................................................................................... 388 T w orzen ie tabeli zagnieżdżonej ..........................................................................................................388 U życie kolekcji d o definiow ania kolumny w tabeli ..................................................................................389 U życie typu VAR R AY d o zdefiniow ania kolumny w tabeli ............................................................ 389 U życie typu tabeli zagnieżdżonej d o zdefiniow aniakolumny w tabeli ....................................... 389 Uzyskiwanie informacji o kolekcjach ........................................................................................................... 389 U zyskiwanie informacji o tablicy VAR R AY ........................................................................................389 U zyskiwanie informacji o tabeli zagn ieżdżonej ............................................................................... 390 U m ieszczanie elem en tów w kolekcji ........................................................................................................... 392 U m ieszczanie elem en tów w tablicy V A R R A Y ................................................................................... 392 U m ieszczanie elem en tów w tabeli zagnieżdżonej ......................................................................... 392 Pobieranie elem en tów z kolekcji .................................................................................................................. 392 Pobieranie elem en tów z tablicy V A R R A Y .......................................................................................... 393 Pobieranie elem en tów z tabeli zagn ieżdżonej .................................................................................393 U życie funkcji TABLE() d o interpretacji kolekcji jako seriiw ie r s z y .........................................................394 U życie funkcji TABLE() z typem V A R R A Y .......................................................................................... 394 U życie funkcji TABLE() z tabelą zagn ieżdżon ą .................................................................................395 M odyfikow an ie elem en tów kolekcji ............................................................................................................ 395 M odyfikow an ie elem en tów tablicy V A R R A Y .................................................................................... 396 M odyfikow an ie elem en tów tabeli za g n ie ż d ż o n e j............................................................................396 U życie m etody mapującej d o porów nyw ania zawartościtabel zagnieżdżonych ................................397 U życie funkcji CAST d o konwersji kolekcji z jed n ego typuna inny .......................................................399 U życie funkcji CAST() d o konwersji tablicy V AR R AY natabelę z a g n ie ż d ż o n ą ...........................399 U życie funkcji CAST() d o konwersji tabeli zagn ieżdżonej na tablicę V A R R A Y ..........................400 Spis treści 13
14 Oracle Database 12c i SQL. Programowanie U życie kolekcji w PL/SQL ...............................................................................................................................400 M anipu low anie tablicą V AR R AY .........................................................................................................400 M anipu low anie tabelą zagn ieżdżoną .................................................................................................402 M etod y operu jące na kolekcjach w PL/SQL .....................................................................................403 Kolekcje w ielo p o zio m o w e ............................................................................................................................. 411 U ruchom ienie skryptu tw orzącego schem at bazy danych collection_schem a2 ...................... 412 Korzystanie z kolekcji w ie lo p o z io m o w y c h ........................................................................................ 412 Rozszerzenia kolekcji w p row a d zon e w O racle Database 1 0 g ...............................................................414 U ruchom ienie skryptu tw orzącego schem at bazy danych collection_schem a3 ...................... 414 Tablice asocjacyjne .................................................................................................................................415 Zm ienianie rozmiaru typu elem entu ..................................................................................................415 Zw iększanie liczby elem en tów w tablicy V A R R A Y ..........................................................................416 U życie tablic VAR R AY w tabelach ty m cza so w ych ...........................................................................416 U życie innej przestrzeni tabel dla tabeli składującej tabelę za g n ie ż d ż o n ą ................................416 Obsługa tabel zagnieżdżonych w standardzie AN SI ....................................................................... 417 Podsum ow anie ..................................................................................................................................................424 15 D u że o b iek ty .................................................................................................................................................... 425 Podstaw ow e inform acje o dużych obiektach (L O B ) .................................................................................425 Przykładow e p lik i.............................................................................................................................................. 425 Rodzaje dużych o b ie k tó w ...............................................................................................................................426 T w orzen ie tabel zawierających du że o b ie k ty .............................................................................................427 U życie dużych ob iek tów w SQL ...................................................................................................................428 U życie obiek tów CLO B i BLOB .......................................................................................................... 428 U życie obiek tów BFILE ..........................................................................................................................430 U życie dużych ob iek tów w PL/SQ L..............................................................................................................431 A P P E N D () ..................................................................................................................................................433 CLOSE() ..................................................................................................................................................... 433 C O M PA RE () .............................................................................................................................................. 434 C O PY() .......................................................................................................................................................435 CREATETEM PORARY() ..........................................................................................................................435 ERASE().......................................................................................................................................................436 FILECLOSE() .............................................................................................................................................436 FILECLOSEALL() ......................................................................................................................................437 FILEEXISTS() .............................................................................................................................................. 437 F ILE G E TN A M E ().......................................................................................................................................437 FILEISOPEN() ............................................................................................................................................438 FILEOPEN() ............................................................................................................................................... 438 FREETEMPORARY() ................................................................................................................................439 G ETCHU NKSIZE() .................................................................................................................................. 439 G ETLENGTH() ......................................................................................................................................... 439 G ET_STO RAG E_LIM IT() .........................................................................................................................440 INSTR() .......................................................................................................................................................440 ISOPEN() ...................................................................................................................................................441 ISTEM PORARY() ......................................................................................................................................441 LO AD FRO M FILE() .................................................................................................................................. 442 LO AD B LO BFRO M FILE() ....................................................................................................................... 443 LO AD C LO BFRO M FILE() ....................................................................................................................... 443 O PE N () .......................................................................................................................................................444 R E A D ()........................................................................................................................................................445 SUBSTR() ...................................................................................................................................................445 TRIM () ........................................................................................................................................................446
WRITEO .....................................................................................................................................................447 W RITEAPPENDO ..................................................................................................................................... 447 Przykładow e procedury PL/SQL ..........................................................................................................448 Typy LO N G i L O N G R A W .............................................................................................................................462 Przykładow e tabele .................................................................................................................................462 W staw ianie danych d o kolumn typu LO N G i LO N G R A W ..........................................................462 Przekształcanie kolumn LO N G i LO N G R A W w d u że obiekty ....................................................463 N o w e właściwości dużych ob iek tów w O racle Database 10g ...............................................................463 N iejaw na konwersja m iędzy obiektam i CLO B i N C LO B ...............................................................464 U życie atrybutu :new , gdy obiekt LOB jest używany w w yzw alaczu .........................................464 N o w e właściwości dużych ob iek tów w O racle Database 11g ...............................................................465 Szyfrow anie danych LOB ......................................................................................................................465 Kom presja danych L O B ......................................................................................................................... 469 Usuwanie powtarzających się danych LOB ..................................................................................... 469 N o w e właściwości dużych ob iek tów w O racle Database 12c ...............................................................469 Podsum ow anie ................................................................................................................................................. 470 16 O p tym a liza cja SQL ......................................................................................................................................... 471 Podstaw ow e inform acje o optym alizacji SQ L ........................................................................................... 471 N ależy filtrować w iersze za p om ocą klauzuli WHERE .............................................................................471 N ależy używać złączeń tabel zam iast w ielu zapytań ............................................................................... 472 W ykonu jąc złączenia, należy używ ać w pełni kwalifikowanych odw ołań d o kolumn .................... 473 N ależy używać w yrażeń CASE zam iast w ielu zapytań .............................................................................473 N ależy dod ać indeksy d o tabel ......................................................................................................................474 Kiedy tw orzyć indeks typu B -d rz e w o ................................................................................................. 475 Kiedy tw orzyć indeks bitm apow y ....................................................................................................... 475 N ależy stosować klauzulę WHERE zam iast H A V IN G ............................................................................... 475 N ależy używać U N IO N ALL zam iast U N IO N ........................................................................................... 476 N ależy używać EXISTS zam iast IN ................................................................................................................477 N ależy używać EXISTS zam iast D ISTINCT ................................................................................................. 477 N a leży używać G R O U P IN G SETS zam iast CUBE ..................................................................................... 478 N a leży stosować zm ien n e d o w ią z a n e ..........................................................................................................478 N ieiden tyczn e instrukcje SQL ............................................................................................................. 478 Identyczne instrukcje SQL korzystające z e zm iennych d o w ią za n y c h .........................................478 W ypisyw anie listy i wartości zm iennych dow iązanych ..................................................................479 U życie zm iennej dow iązanej d o składowania wartości zw rócon ej przez funkcję PL/SQL ... 480 U życie zm iennej dow iązanej d o składowania w ierszy z R E FC U R SO R ...................................... 480 Porów nyw anie kosztu w ykonania zapytań ................................................................................................. 480 Przeglądanie planów w ykonania .........................................................................................................481 Porów nyw anie planów w ykonania .....................................................................................................485 Przesyłanie w skazów ek d o op tym a liza tora ................................................................................................. 486 D odatkow e narzędzia optym alizujące ........................................................................................................ 487 O racle Enterprise M anager ................................................................................................................... 487 Autom atic Database Diagnostic M onitor .......................................................................................... 488 SQL Tuning Advisor ............................................................................................................................... 488 SQL Access Advisor ............................................................................................................................... 488 SQL Perform ance Analyzer ................................................................................................................. 488 Database Replay ..................................................................................................................................... 488 Real-Tim e SQL M o n ito rin g ................................................................................................................... 488 SQL Plan M a n a g em en t...........................................................................................................................489 Podsum owanie ................................................................................................................................................. 489 Spis treści 15
16 Oracle Database 12c i SQL. Programowanie 17 XM L i b aza danych O ra cle ........................................................................................................................... 491 W p row ad zen ie d o XML .................................................................................................................................. 491 G enerow anie XML z danych relacyjn ych .................................................................................................... 492 XMLELEMENT() .......................................................................................................................................492 XM LATTRIBU TESO .................................................................................................................................. 494 XMLFOREST() ...........................................................................................................................................494 X M LA G G () .................................................................................................................................................495 XM LC O LA TTV AL0 .................................................................................................................................. 497 X M L C O N C A T ()........................................................................................................................................ 498 XMLPARSE() .............................................................................................................................................498 XM LPI() ..................................................................................................................................................... 499 X M LC O M M E N T () ................................................................................................................................... 499 XMLSEQUENCE() ................................................................................................................................... 500 XM LSERIALIZEO....................................................................................................................................... 501 Przykład zapisywania danych XML d o pliku w PL/SQL ..................................................................501 XM LQ U ERY() ............................................................................................................................................502 Zapisywanie XML w bazie danych ............................................................................................................... 506 Przykładow y plik XML ........................................................................................................................... 506 T w orzen ie przykładow ego schematu XML ....................................................................................... 506 Pobieranie informacji z przykładow ego schematu XML ................................................................ 508 Aktualizow anie informacji w przykładow ym schem acie XML ......................................................511 Podsum owanie ..................................................................................................................................................514 A T yp y danych O ra cle ....................................................................................................................................... 515 Typy w O racle S Q L ...........................................................................................................................................515 Typy w O racle PL/SQ L.....................................................................................................................................517 S k o r o w id z .......................................................................................................................................................... 519
0 autorze Jason P rice jest n iezależn ym konsu ltantem i b yłym k ierow n ik iem projektu w O racle C orporation. Brał udział w pracach nad w ielom a produktam i Oracle, w tym bazą danych, serw erem aplikacji i kilkom a apli kacjam i C R M . Jest certyfikow an ym adm inistratorem i program istą baz danych O racle i posiada ponad 15-letnie d ośw iadczen ie w b ran ży oprogram ow ania. N apisał w iele książek na tem at O racle, Javy i .N ET. U zyskał tytuł licencjata (z w y różn ien iem ) w d ziedzinie fizyki na brytyjskim U n iversity o f Bristol. Podziękowania D ziękuję wspaniałym ludziom z M cG ra w -H ill Education/Professional. D ziękuję też Scottowi M ik olaitisow i 1N id h i Choprze.
1 8 O ra c le D atab ase 12c i SQ L. P ro g ra m o w a n ie
Wprowadzenie W spółcześnie dostęp do system ów zarządzania bazam i danych jest realizow any z użyciem standardow ego języka Structured Q u ery Language (stru kturalnego języka zapytań), czyli SQL. SQ L u m ożliw ia m ięd zy in n ym i pobieranie, wstawianie, m odyfikow anie i usuwanie in form acji z b azy danych. T a książka pozw ala dobrze opanow ać język SQL, a ponadto zaw iera w iele praktycznych przykładów. W szystkie skrypty i p ro gram y prezentow ane w książce są dostępne online (w ięcej in form acji na ten tem at znajduje się w p od ro z dziale „P ob ieran ie przyk ład ów ” ). D zięk i tej książce: ■ O panujesz stan dardow y S Q L, a także je g o rozszerzen ia opracow an e p rzez O racle C orp oration , u m ożliw iające w ykorzystanie specyficznych w łaściw ości b azy danych Oracle. ■ Poznasz język PL/SQL (Procedu ral Language/SQ L), k tóry w y w o d zi się z SQ L i u m ożliw ia pisanie p ro g ra m ów zaw ierających instrukcje SQL. ■ D ow iesz się, jak używać S Q L*Plus do urucham iania instrukcji SQ L, skryptów i raportów . SQ L*Plus jest n arzędziem u m ożliw iającym interakcję z bazą danych. ■ D ow iesz się, jak w ykon yw ać zapytania, wstawiać, m od yfik ow ać i usuwać dane z b azy danych. ■ O panujesz tw orzen ie tabel, sekwencji, indeksów , perspektyw i k on t u żytkow ników . ■ D ow iesz się, jak w ykon yw ać transakcje zaw ierające w iele instrukcji SQL. ■ O panujesz defin iow an ie typów obiektow ych i tw orzen ie tabel obiektow ych do obsługi danych za awansowanych. ■ N auczysz się w ykorzystyw ać duże obiekty do obsługi p lików m ultim edialnych zawierających obra zy, m u zykę i film y. ■ D o w iesz się, jak w ykon yw ać skom plikow ane obliczenia za p om ocą funkcji analitycznych. ■ O panujesz w ysoko w ydajne techniki optym alizacyjne, znacząco przyspieszające w ykon yw an ie in strukcji SQL. ■ Poznasz m ożliw ości obsługi X M L w bazie danych Oracle. ■ D ow iesz się, jak w ykorzystyw ać najnow sze m ożliw ości języka SQ L w p row a dzon e w O racle D ata base 12c. Książka zaw iera 17 ro zd zia łó w i dodatek. Rozdział 1. „Wprowadzenie" W tym rozdziale znajduje się opis relacyjnych baz danych, w p row adzen ie do SQ L i kilka przykładow ych zapytań. N auczym y się w nim rów n ież używać SQL*Plus i SQ L D eveloper do w ykonyw ania zapytań, a tak że krótko o m ó w im y PL/SQL. Rozdział 2. „Pobieranie informacji z tabel bazy danych" D ow iesz się, jak pobrać in form acje z jednej lub kilku tabel, korzystając z instrukcji SELECT. N au czysz się rów n ież używać w yrażeń arytm etycznych do w ykonyw ania obliczeń. Poznasz klauzulę WHERE, u m ożliw ia jącą filtrow an ie w ierszy, a także dow iesz się, jak je sortować.
20 Oracle Database 12c i SQL. Programowanie Rozdział 3. „SQL*Plus" W tym rozdziale u żyjem y S Q L*Plu s do p rzejrzen ia struktury tabeli, edytow ania instrukcji SQ L, zapisy wania i urucham iania skryptów , form atow an ia k olu m n w yników . N auczysz się rów n ież używać zm ien nych i generow ać raporty. Rozdział 4. „Proste funkcje" W tym rozd zia le p ozn asz kilka fu nkcji w b u d ow a n ych do bazy danych Oracle. Funkcja m oże p rzyjm o wać param etry w ejściow e i zw raca param etr w yjściow y. Funkcje um ożliw iają m ięd zy in n ym i obliczanie średnich i p ierw iastków kw adratow ych. Rozdział 5. „Składowanie oraz przetwarzanie dat i czasu" D o w iesz się, w jaki sposób baza danych O racle przetw arza oraz składuje daty i czas. P ozn asz ró w n ież datow niki u m ożliw iające składow anie określonej daty i czasu, a także in terw a ły czasowe um ożliw iające składowanie okresu. Rozdział 6. „Podzapytania" D ow iesz się, w jaki sposób m ożna um ieścić instrukcję SELECT w zew nętrznej instrukcji SQ L. W ew n ętrzn ą instrukcję S Q L nazyw am y podzapytaniem . Poznasz różne rodzaje podzapytań i zobaczysz, jak um ożliwiają one tw orzen ie złożon ych instrukcji z prostych składników. Rozdział 7. „Zapytania zaawansowane" D ow iesz się, jak w ykonyw ać zapytania zawierające zaawansowane operatory i funkcje, takie jak: operatory zestawu łączące w iersze zwracane przez kilka zapytań, funkcja TRANSLATE() konwertująca znaki w jedn ym napisie na znaki w in n ym napisie, funkcja DECODE() wyszukująca w artość w zestaw ie w artości, w yrażenie CASE w ykonujące logik ę if- th e n - e ls e oraz klauzule ROLLUP i CUBE zw racające w iersze zaw ierające sum y cząstkowe. N o w e w O racle Database 12c klauzule CROSS APPLY i OUTER APPLY łączą w iersze z dw óch w y rażeń SELECT, a LATERAL zw raca w bu dow any w id o k danych. Rozdział 8. „Analiza danych" Poznasz funkcje analityczne um ożliwiające wykonyw anie złożonych obliczeń, takich jak wyszukanie naj lepiej sprzedającego się produktu w poszczególn ych m iesiącach, najlepszych sprzedaw ców itd. D ow iesz się, jak w ykonyw ać zapytania o dane uporządkow ane hierarchicznie. Poznasz rów n ież klauzulę MODEL w y konującą obliczenia m iędzyw ierszow e oraz klauzule PIVOT i UNPIVOT, które um ożliw iają poznanie ogólnych tren d ów w dużych ilościach danych. N o w e w O racle Database 12c klauzule to MATCH_RECOGNIZE u m ożli w iająca odn a lezien ie w zo rca w danych i FETCH_FIRST u m ożliw iająca w ykon an ie zapytań zw racających N pierw szych w ierszy wyniku. Rozdział 9. „Zmienianie zawartości tabeli" D ow iesz się, jak wstawiać, m o d yfik o w a ć i usuwać w iersze za p om ocą instrukcji INSERT, UPDATE i DELETE oraz jak utrw alić w yn ik transakcji, korzystając z instrukcji COMMIT lub w ycofać w yn ik i transakcji za p o m ocą instrukcji ROLLBACK. D o w iesz się rów n ież, w jaki sposób baza danych O racle obsługuje kilka trans akcji w ykon yw an ych w tym sam ym m om encie. Rozdział 10. „Użytkownicy, uprawnienia i role" D ow iesz się, czym są użytkow nicy b azy danych oraz jak upraw nienia i role um ożliw iają określenie czyn ności, k tóre m o że w ykon ać użytkow nik w bazie danych. Rozdział 11. „Tworzenie tabel, sekwencji, indeksów i perspektyw" Poznasz tabele i sekwencje, które generują serie liczb, a także indeksy, które przypom inają indeksy w książ kach i u m ożliw ia ją szybkie uzyskanie dostępu do w ierszy. D ow iesz się rów n ież czegoś o perspektywach, które są w stępnie zdefin iow a n ym i zapytaniam i jednej lub kilku tabel. D o zalet perspektyw m o żem y zali
Wprowadzenie 21 czyć to, że u m ożliw iają one ukrycie złożon ości przed użytkow nikiem , a także im plem entu ją kolejn y p o zio m zabezpieczeń, zezwalając na przeglądanie jedyn ie ograniczon ego zestawu danych z tabeli. Poznasz rów n ież archiwa m igaw ek. W archiw um m igaw ek są składowane zm ian y dokonane w tabeli w pew nym okresie. N ow ością w O racle Database 12c jest m ożliw ość definiow ania w id oczn ych i n iew idoczn ych k o lum n w tabeli. Rozdział 12. „Wprowadzenie do programowania w PL/SQL" W tym rozdziale poznasz język PL/SQL, zb u d ow an y na podstaw ie SQ L i u m ożliw iający pisanie p rogra m ó w składow anych w bazie danych oraz zaw ierających instrukcje SQ L. Język ten posiada standardowe konstrukty program istyczne. Rozdział 13. „Obiekty bazy danych" D ow iesz się, jak tw orzyć typy obiektow e w bazie danych, które m ogą zaw ierać atrybuty i m etody. Z a p o m ocą tych ty p ó w obiektow ych zd efin iu jem y obiek ty k olu m n ow e i tabele obiektów , a także nauczysz się m anipulow ać obiektam i za p om ocą SQ L i PL/SQL. Rozdział 14. „Kolekcje" D ow iesz się, jak tw orzyć typy kolekcji, które m ogą zaw ierać w iele elem entów . U żyjem y kolekcji do d efi niow ania k olu m n w tabelach. N auczysz się rów n ież m anipulow ać kolekcjam i za p om ocą SQ L i PL/SQL. Rozdział 15. „Duże obiekty" Poznasz duże obiekty, które m ogą przech ow yw ać do 128 terabajtów danych znakow ych i binarnych lub w skazyw ać na p lik zew n ętrzn y, oraz starsze ty p y LONG, obsługiw ane p rzez O racle Database 12c w celu zachow ania kom patybilności z w cześniejszym i w ersjam i. Rozdział 16. „Optymalizacja SQL" T en ro zd zia ł zaw iera kilka w skazów ek pozw alających skrócić czas w ykon yw a n ia zapytań. D o w ie sz się rów n ież czegoś o optym alizatorze Oracle, a także m ożliw ości przesyłania w skazów ek do optym alizatora. W p row ad zo n e zostaną też zaawansowane narzędzia do optym alizacji. Rozdział 17. „XML i baza danych Oracle" Extensible M arkup Language (X M L ) jest językiem zn aczników ogóln ego przeznaczenia. X M L u m ożliw ia przesyłanie ustrukturyzowanych danych w internecie i m oże być używ any do k odow ania danych i innych dokum en tów . Z tego rozd zia łu d ow iesz się, jak gen erow ać k od X M L na podstaw ie danych relacyjnych oraz jak zapisać k od X M L w bazie danych. Dodatek A D odatek zaw iera opis ty p ó w danych dostępnych w O racle SQ L i PL/SQL. Docelowa grupa czytelników T a książka jest odpow iedn ia dla następujących czytelników : ■ program istów , k tórzy chcą pisać w SQ L i PL/SQL, ■ adm inistratorów baz danych wym agających dogłębnej znajom ości SQ L, ■ u żytk ow n ik ów biznesowych, k tórzy muszą pisać zapytania SQ L w celu pobrania in form acji z bazy danych organizacji, ■ k ierow n ik ów technicznych lub konsultantów, k tó rzy potrzebują w p row a dzen ia do SQ L i PL/SQL. N ie jest k on ieczn a w cześniejsza zn ajom ość S Q L i PL/SQL. W szystko, co jest potrzebne do biegłego opanow ania S Q L i PL/SQL, m ożn a znaleźć w tej książce.
22 Oracle Database 12c i SQL. Programowanie Pobieranie przykładów W szystkie skrypty, program y i inne pliki używane w tej książce m ożna pobrać z serwera FTP W ydaw nictw a H elion , p od adresem: ftp://ftp.helion.pl/przyklady/ord12p.zip. P liki są um ieszczone w archiw um Z IP — po jego rozpakow aniu tw o rzo n y jest katalog sql_book, w k tórym znajdują się następujące podkatalogi: ■ p lik i zaw ierający przykładow e pliki używane w rozdziale 14., ■ S Q L zaw ierający skrypty S Q L używ ane w całej książce, w tym skrypty tw orzące i um ieszczające dane w przykładow ych tabelach, ■ X M L zaw ierający pliki X M L używane w rozdziale 17. M a m nadzieję, że spodoba C i się ta książka!
ROZDZIAŁ 1 Wprowadzenie W tym rozdziale pozn am y in form acje na temat: ■ relacyjnych baz danych, ■ strukturalnego języka zapytań (S Q L — Structured Q uery Language), używ anego w pracy z bazam i danych, ■ SQ L*Plus — interaktyw nego narzędzia tekstowego do uruchamiania instrukcji SQ L, u tw orzon ego przez O racle, ■ SQ L D eveloper — graficznego narzędzia do tw orzen ia baz danych, ■ PL/SQ L — u tw orzon ego p rzez O racle p rocedu raln ego język a p rogram ow an ia, k tó ry u m ożliw ia tw orzen ie program ów . Czym jest relacyjna baza danych? Założenia relacyjnych baz danych zostały opracow ane w 1970 roku p rzez dr. E.F. C odda. O pisał on teorię relacyjnych baz danych w artykule A R elation al M o d e l o f D ata f o r Large Shared Data Banks, opu blikow a n ym w „C om m u n ication s o f the Association fo r C om p u tin g M ach in ery” (t. 13, nr 6, czerw iec 1970). Podstaw owe założenia relacyjnego m odelu baz danych są stosunkowo łatwe do zrozum ienia. R elacyjna baza danych jest zbiorem pow iązanych inform acji, um ieszczonych w tabelach. D ane w tabeli są p rzech o w yw ane w w iersza ch i uporządkow ane w k olu m nach. Tabele są przechow yw ane w schem atach baz da nych, czyli obszarach, w których użytkownicy m ogą przechow ywać swoje tabele. U żytk ow n ik m oże p rzy dzielać u p raw n ien ia, dzięki k tórym inne osoby będą m o g ły uzyskać do nich dostęp. D an e często p orządku je się w tabelach — cen y akcji czy rozk ład y ja zd y pociągów . W jednej z p rzy k ładow ych tabel w tej książce będą zapisywane in form acje o klientach fikcyjnego sklepu: ich im iona, na zwiska, daty urodzenia (dob — ang. date o f b irth ) i n um ery telefonów . first_name last_name dob phone Jan Nikiel 65/01/01 800-555-1211 Lidia Stal 68/02/05 800-555-1212 Stefan Brąz 71/03/16 800-555-1213 Grażyna Cynk 800-555-1214 Jadwiga Mosiądz 70/05/20 Taka tabela m oże być przechowyw ana: ■ jako tabela w bazie danych, ■ jako plik H T M L na stronie internetow ej, ■ na karcie w pudełku.
24 Oracle Database 12c SQL N a leży pam iętać, że in form acje tw orzące bazę danych są czym ś in n ym n iż system w ykorzystyw a n y do uzyskiw ania do n ich dostępu. O p rogra m ow a n ie używ ane do pracy z bazą danych n azyw am y syste m em za rzą d zan ia bazą danych. Baza danych O racle jest właśnie takim system em , a inne p rogram y tego typu to M icro so ft S Q L Server, D B2 i M yS Q L. W każdej b azie danych m usi istnieć jakiś sposób w p row a dzan ia i p obieran ia in form acji, najlepiej korzystający z popularnego języka zrozu m ia łego dla w szystkich b az danych. System y zarządzania bazą danych im plem en tu ją taki stan dardow y język n azyw an y stru k tu ra ln ym ję z y k ie m zapytań , czyli SQ L (S tructu red Q uery Language). U m o ż liw ia on pobieran ie, dodaw anie, m od yfik ow a n ie i usuwanie in fo r m acji z b azy danych. Wstęp do SQL Strukturalny język zapytań (S Q L — Structured Q uery Language) jest standardow ym język iem zaprojek tow an ym do pracy z relacyjnym i bazam i danych. % W ed łu g A m erican National Standards Institute, „es kju e l" jest praw idłow ym sposobem u.,.,,,,., odczytyw ania skrótu SQL. Często jednak słyszy się rów nież angielskie słow o sequel („sikłel"). P ierw sza im p lem en ta cja S Q L opartego na p rzełom ow ej p racy dr. E.F. C od d a została opracow ana przez IB M w p oło w ie lat 70. Firm a p row adziła projekt badaw czy o nazw ie System R i podczas jego reali zacji opracow ano SQL. W 1979 roku firm a Relational Software Inc. (dziś znana jako O racle C orp oration ) opublikow ała pierw szą kom ercyjn ą w ersję SQL. S Q L został uznany za standard p rzez A m erica n N a tio n a l Standards Institute (A N S I) w 1986 roku, ale im plem entacje różn ych firm różnią się od siebie. W SQ L jest w ykorzystyw ana prosta składnia, której z łatw ością m ożn a się nauczyć. Proste przykłady zastosowania jej zostaną zaprezentow ane w tym rozdziale. W y ró żn ia m y pięć ty p ó w instrukcji SQL: ■ Z a p ytan ia pobierają w iersze p rzech ow yw an e w tabelach b azy danych. D o utw orzenia zapytania w ykorzystu jem y instrukcję SELECT. ■ Instru kcje D M L (D ataM anipulation Language) służą do m odyfikow ania zawartości tabel. Istnieją trzy takie instrukcje: ■ INSERT dodaje w iersze do tabeli. ■ UPDATE zm ien ia wiersze. ■ DELETE usuwa wiersze. ■ In stru kcje D D L (Data Definition Language) definiują struktury danych, takie jak tabele tw orzące bazę danych. W y ró żn ia m y pięć podstaw ow ych ty p ó w instrukcji D D L: ■ CREATE tw o rzy strukturę bazy danych, na p rzykład instrukcja CREATE TABLE służy do tw orzenia tabeli, a CREATE USERjest w ykorzystyw ana do tw orzen ia użytkow nika b azy danych. ■ ALTER m odyfikuje strukturę bazy danych, na przykład ALTER TABLE służy do m odyfikacji tabeli. ■ DROP usuwa strukturę b azy danych, na przykład DROP TABLE służy do usuwania tabeli. ■ RENAME zm ien ia n azw ę tabeli. ■ TRUNCATE usuwa w szystkie w iersze z tabeli. ■ Instru kcje T C ( Transaction Control) albo trwale zapisują zm iany w prow adzone w wierszach, albo je cofają. W y ró żn ia m y trzy instrukcje T C : ■ COMMIT trw ale zapisuje zm ian y w p row adzon e do wierszy. ■ ROLLBACK cofa zm ian y d okonane w wierszach. ■ SAVEPOINT tw o rzy punkt zachowania, do k tórego m ożn a cofnąć zm iany. ■ In stru k cje D C L ( D ata Control Language) służą do nadaw ania u praw nień dostępu do struktur bazy danych. Istnieją dw ie instrukcje D C L:
Rozdział 1. Wprowadzenie 25 ■ GRANT daje u żytkow n ikow i dostęp do wskazanej struktury bazy danych. ■ REVOKE odbiera u żytkow n ikow i praw o dostępu do wskazanej struktury b azy danych. O racle dostarcza program SQ L*Plus um ożliw iający w p row adzen ie instrukcji SQ L i uzyskanie rezu l tatów ich działania z bazy danych. SQ L*Plus u m ożliw ia rów n ież w ykonanie skryptów zaw ierających in strukcje SQ L oraz poleceń SQ L*Plus. Jest w iele sposobów uruchamiania instrukcji SQ L i pobierania w y n ik ó w z b azy danych. M ożn a to ro bić za p om ocą oprogram ow an ia O racle Form s and Reports lub p ro g ra m ó w napisanych w innych ję zy kach, takich jak Java i C#. W ięcej in form acji na tem at w ykon yw an ia instrukcji SQ L w program ach pisa nych w języku Java m ożn a znaleźć w m ojej książce O racle9i JD B C P ro g ra m m in g (O ra cle Press, 2002). W ięcej in fo rm a cji na tem at w ykon yw a n ia instrukcji S Q L w program ach pisanych w język u C # m ożn a znaleźć w m ojej książce M asterin g C# Database P ro g ra m m in g (Sybex, 2003). Używanie SQL*Plus Z k olejn ego p od rozd zia łu dow iesz się, jak u ru chom ić p rogram SQ L*Plu s i przesłać zapytanie do b azy danych. Uruchamianie SQL*Plus Jeżeli używasz W in dow s 7, m ożesz uruchomić SQL*Plus, wybierając Wszystkie program y/Oracle/Application D evelopm ent/SQ L Plus. Jeśli używ asz system u U n ix lub Linux, S Q L*Plu s uruchom isz, wpisując sqlplus z w iersza poleceń. Rysunek 1.1 prezentuje SQ L*Plus u ru chom ion y w system ie W in d o w s 7. Rysunek 1.1. Oracle Database 12c SQL*Plus uruchomiony w Windows 7 N a rysunku przedsta w ion o proces łączenia się użytkow nika scott z bazą danych. U żytk ow n ik scott jest tw o rzo n y w w ielu bazach danych Oracle, a jego hasło w m ojej bazie danych to oracl e. N a zw a hosta, znajdująca się po znaku @, in form u je program SQ L*Plus o tym , gd zie została urucho m ion a baza danych. Jeżeli oprog ra m ow an ie działa na kom pu terze lokaln ym , zw yk le nazw a hosta jest pom ijana (czyli w pisujem y scott/oracle) — w takim przypadku SQ L*Plus próbuje połączyć się z bazą da nych na tym sam ym kom pu terze, na k tórym jest uruchom iony. Jeżeli baza danych nie jest uruchom iona na kom pu terze lokalnym , należy uzyskać nazw ę hosta od jej adm inistratora (D B A ). Jeśli kon to scott nie istnieje lub jest zablokow ane, należy poprosić adm inistratora o inną nazw ę użyt k ow n ika i hasło. W przykładach z p ierw szej części rozd zia łu m ożn a korzystać z dow oln ego konta użyt kow nika.
26 Oracle Database 12c SQL Uruchamianie SQL*Plus z wiersza poleceń P rogra m S Q L*Plu s m ożn a u ru chom ić ró w n ież z w iersza poleceń, za p om ocą w yrażenia sqlpl us. Pełna składnia tego polecenia m a postać: sqlplus [nazwa_użytkownika [/hasło [@nazwa_hosta]]] gdzie: ■ nazwa_użytkownika oznacza nazw ę użytkow nika b azy danych, ■ hasło oznacza hasło użytkow nika b azy danych, ■ nazwa_hosta oznacza bazę danych, z którą chcem y się połączyć. Poniżej przedstaw iono przykłady użycia polecenia sql plus: sqlplus scott/oracle sqlplus scott/oracle@orcl Jeżeli SQ L*Plus używasz w systemie W in dow s, instalator O racle doda autom atycznie katalog progra m u SQ L*Plus do ścieżki system ow ej. Jeśli używ asz systemu U n ix lub Linux, m asz dw a sposoby, b y uru chom ić SQ L*Plus: ■ za p om ocą p olecen ia cd p rzejd ź do katalogu, w k tó rym znajdu je się p lik w y k o n y w a ln y sqlplus, i uruchom sql plus z tego katalogu; ■ dodaj katalog, w k tó rym znajdu je się sqlplus, do system ow ej ścieżki dostępu i uru chom sqlplus. W razie p rob lem ów z ustawianiem system owej ścieżki dostępu należy się skontaktow ać z adm in i stratorem systemu. Z e w zględ ów bezpieczeństw a m ożna ukryć hasło podczas łączenia się z bazą danych. M ożn a na p rzy kład wpisać: sqlplus scott@orcl W takiej sytuacji SQ L*Plus poprosi o w prow adzen ie hasła, które pozostanie niew idoczne. M ożn a rów n ież po prostu wpisać: sqlplus W takim przypadku S Q L*Plu s p op rosi o w p ro w a d zen ie n a zw y u żytkow n ika i hasła. N a zw ę hosta m ożn a dopisać do n azw y u żytkow nika (na przykład scott@ orcl). Wykonywanie instrukcji SELECT za pomocą SQL*Plus Po zalogow an iu się do bazy danych za p om ocą SQ L*Plus m ożn a od razu uruchom ić następujące polece nie SELECT, które zw raca bieżącą datę: SELECT SYSDATE FROM dual; W tej książce instrukcje SQL w yróżn ion e p og ru b ien iem należy w pisyw ać sam odzielnie. u . N i e trzeba w pisyw ać niew yróżnionych instrukcji. SYSDATE jest w budow aną funkcją bazy danych, zwracającą bieżącą datę, dual jest natom iast tabelą za wierającą jeden wiersz. W ięcej na tem at tabeli dual d ow iesz się w k olejn ym rozdziale. Instrukcje SQ L należy kończyć średnikiem (;). Uwaga Rysunek 1.2 przedstawia datę zw rócon ą jako w ynik opisanej w yżej instrukcji SELECT. W program ie SQ L*Plus m ożn a edytować ostatnią instrukcję SQL. W tym celu należy w pisać EDIT. Jest to przydatne, gd y p op ełn im y błąd lub chcem y w p ro w a d zić zm ian ę do instrukcji. W system ie W in d ow s po wpisaniu EDIT jest urucham iany N otatnik, w k tórym edytuje się instrukcje SQL. Po zakończeniu pracy N otatn ika i zapisaniu instrukcji SQ L jest ona przesyłana z p ow rotem do SQ L*Plus, gd zie m ożn a ją uru chom ić pon ow n ie, wpisując ukośnik (/). W system ie Lin u x lub U n ix dom yśln ym edytorem jest ed. A b y zapisać zm iany w instrukcji i opuścić ed, należy wpisać wq.
Rozdział 1. Wprowadzenie 27 Rysunek 1.2. Wynik instrukcji SELECT SYSDATE F R O M dual; K w e s tia p o lo n iz a c ji Aby uzyskać format daty zaprezentowany na rysunku 1.2, a także polskie komunikaty z bazy danych w i doczne na zrzutach w dalszej części książki, w konsoli W indows 7 należy wcześniej odpowiednio usta w ić wartość zmiennej środowiskowej NLS LANG: set NLS LANG=POLISH POLAND.EE8MSWIN1250 oraz stronę kodową konsoli: chcp 1250 a dopiero potem uruchomić program sqlpl us. Aby polskie znaki w wynikach zapytań wyświetlanych w konsoli wyświetlały się poprawnie, należy w e właściwościach okna konsoli zm ienić czcionkę z Czcionki rastrowe na Lucida Console. R o z w ią z a n ie p r o b le m u z b łę d e m p r z y p r ó b ie s k o rz y s ta n ia z e d y c ji Jeśli przy próbie edycji instrukcji w W indow s pojawi się błąd SP2-0110, należy uruchomić SQL*Plus z uprawnieniami administratora. W W indows 7 można to zrobić, klikając prawym klawiszem myszy skrót do SQL*Plus i wybierając Uruchom jako administrator. Można ustawić to na stałe — aby to zrobić, należy kliknąć prawym klawiszem myszy skrót do SQL*Plus, wybrać Właściwości, a następnie w zakładce Zgod ność zaznaczyć Uruchom ten program jako administrator. M ożesz też ustawić katalog, w którym SQL*Plus ma się uruchamiać. Aby to zrobić, należy kliknąć pra wym klawiszem myszy skrót do SQL*Plus, wybrać Właściwości, a następnie zm ienić katalog w znajdują cym się w zakładce Skrót polu Rozpocznij w:. SQL*Plus będzie używał tego domyślnego katalogu do za pisywania i wczytywania plików. M ożesz na przykład ustawić ten katalog na C:\Moje_pliki_SQL i wtedy SQL*Plus będzie domyślnie zapisywał i wczytywał pliki z tego katalogu. W SQ L*Plus w systemie W in dow s m ożn a wracać do urucham ianych w cześniej poleceń, wciskając na klaw iaturze klaw isze ze strzałkam i w górę i w dół. W ięcej inform acji na temat edytowania instrukcji SQ L w program ie SQ L*Plus znajduje się w rozdziale 3. SQL Developer Instrukcje SQ L m ożn a rów n ież w p row a d zać za p om ocą program u S Q L D eveloper. M a on graficzn y in terfejs użytkow nika, w k tórym m ożn a w pisyw ać instrukcje SQ L, przeglądać tabele b azy danych, urucha m iać skrypty, edytow ać i debugow ać k od PL/SQL i w ykon yw ać inne zadania. M o że łączyć się z bazą da nych O racle w w ersji 9.2.0.1 lub w yższej i jest dostępny dla w ielu system ów operacyjnych. Rysunek 1.3 przedstawia okno program u SQ L D eveloper. B I C:\Windows\system32\cmd.exe- sqlplus SQL> SELECT SYSDATE FROM d u a l; * SYSDATE 14/06/30 SQL> . | < _______________________________________________ ■»»____ ►
28 Oracle Database 12c SQL C i Oracle SQL Developer : store => 1 B P Ü [De («fit yicw Navigate gun Vetsigning loots 3 ^ 0 9 W X i l 0 * 0 * & ydp b P SĄ Connections * „'.Reports * Q i t « « » F ) ♦ • 1Ä > ifc] M t i ^ la C A VS i/ Cd 0. U 700001 «conde I l store » CamKtom 8 I I C*ecJe Database 12c. 9 IcJ store t. labiés (Httfcd) ® View* 8 Eiitwr■iy View» i, j j Indexes lu 8 l’adcapw 9 {J j Proreciee* S & Eu».tiuta 8 Qj} Queues tu & , Queue* labiés ï Trigger* B L â Gowecitwn Tr^gers 8 S i Types lu J Leauences S 8 MktrrMlml Vir*< B \J!j MetenaUed View» Logs B Q | Sv w v w lu l\A>keSynonyms S 40 fWAhese Iries B ,aMPubfc. DatabaseIr i» S J Drectones lu cjtdtton* B , ] ApptrAtxmTxpre« * jü Java B ÎQ XM. Schémas U ¡y KMLWKeooatOry Rysunek 1.3. Okno programu SQL Developer, uruchomionego w systemie Windows N a leży pobrać wersję program u SQ L D eveloper zawierającą Java Software D evelopm en t K it (S D K ) lub m ieć w cześniej zainstalowaną popraw ną w ersję Java SD K. W ym agan a wersja Java S D K zależy od wersji program u SQ L D eveloper. S zczegóły m ożn a spraw dzić na stronie p rogram u SQ L D eveloper w serwisie w w w .oracle.com . P o p op ra w n ym uruchom ien iu program u S Q L D evelo p er n iezbędne b ęd zie u tw orzen ie połączen ia z bazą danych p o p rzez k likn ięcie p raw ym k law iszem m yszy C onnections i w ybran ie N ew C onnection. SQ L D eveloper w y św ietli okn o d ia lo go w e w k tó rym n ależy w pisać szczegóły połączenia z bazą danych. Rysunek 1.4 pokazuje p rzykładow e okno d ialogow e z w pisanym i szczegółam i połączenia. Rysunek 1.4. Konfigurowanie połączenia z bazą danych w programie SQL Developer SELECT SYSDATE FROM d ual; » ) Sept Output x it Q Q Tas*,completedn 0,187 seconds STS&ATZ 14/06/30 Po utw orzeniu i przetestow an iu połączenia m ożn a używ ać program u SQ L D eveloper do przegląda nia tabel b azy danych i urucham iania instrukcji. Rysunek 1.5 przedstawia szczegółow e in form acje o ta beli customers.