oracle database 11g i sql. programowanie ebook.pdf

(17043 KB) Pobierz
890635288.001.png
6
Oracle Database 11g i SQL. Programowanie
Używanie aliasów kolumn ...........................................................................................................59
Łączenie wartości z kolumn za pomocą konkatenacji .................................................................60
Wartości null ...............................................................................................................................61
Wyświetlanie odrębnych wierszy ................................................................................................62
Porównywanie wartości ...............................................................................................................63
Korzystanie z operatorów SQL ...................................................................................................65
Operator LIKE ......................................................................................................................65
Operator IN ...........................................................................................................................67
Operator BETWEEN .............................................................................................................67
Operatory logiczne ......................................................................................................................68
Następstwo operatorów ...............................................................................................................69
Sortowanie wierszy za pomocą klauzuli ORDER BY .................................................................70
Instrukcje SELECT wykorzystujące dwie tabele .........................................................................71
Używanie aliasów tabel ...............................................................................................................73
Iloczyny kartezjańskie .................................................................................................................74
Instrukcje SELECT wykorzystujące więcej niż dwie tabele ........................................................74
Warunki złączenia i typy złączeń ................................................................................................76
Nierównozłączenia ................................................................................................................76
Złączenia rozszerzone ...........................................................................................................77
Złączenia własne ...................................................................................................................81
Wykonywanie złączeń za pomocą składni SQL/92 .....................................................................82
Wykonywanie złączeń wewnętrznych dwóch tabel z wykorzystaniem składni SQL/92 .......82
Upraszczanie złączeń za pomocą słowa kluczowego USING ...............................................83
Wykonywanie złączeń wewnętrznych obejmujących więcej niż dwie tabele (SQL/92) .......84
Wykonywanie złączeń wewnętrznych z użyciem wielu kolumn (SQL/92) ...........................84
Wykonywanie złączeń rozszerzonych z użyciem składni SQL/92 ........................................85
Wykonywanie złączeń własnych z użyciem składni SQL/92 ................................................86
Wykonywanie złączeń krzyżowych z użyciem składni SQL/92 ...........................................87
Podsumowanie .............................................................................................................................87
Rozdział 3. SQL*Plus ................................................................................................. 89
Przeglądanie struktury tabeli .......................................................................................................89
Edycja instrukcji SQL .................................................................................................................90
Zapisywanie, odczytywanie i uruchamianie plików ....................................................................92
Formatowanie kolumn .................................................................................................................95
Ustawianie rozmiaru strony .........................................................................................................97
Ustawianie rozmiaru wiersza .......................................................................................................97
Czyszczenie formatowania kolumny ...........................................................................................98
Używanie zmiennych ..................................................................................................................98
Zmienne tymczasowe ............................................................................................................99
Zmienne zdefiniowane ........................................................................................................101
Tworzenie prostych raportów ....................................................................................................104
Używanie zmiennych tymczasowych w skrypcie ................................................................104
Używanie zmiennych zdefiniowanych w skrypcie ..............................................................105
Przesyłanie wartości do zmiennej w skrypcie .....................................................................105
Dodawanie nagłówka i stopki .............................................................................................106
Obliczanie sum pośrednich ..................................................................................................108
Uzyskiwanie pomocy od SQL*Plus ..........................................................................................109
Automatyczne generowanie instrukcji SQL ..............................................................................110
Kończenie połączenia z bazą danych i pracy SQL*Plus ............................................................111
Podsumowanie ...........................................................................................................................111
Spis treści
7
Rozdział 4. Proste funkcje ....................................................................................... 113
Funkcje jednowierszowe ...........................................................................................................113
Funkcje znakowe .................................................................................................................114
Funkcje numeryczne ...........................................................................................................121
Funkcje konwertujące ..........................................................................................................125
Funkcje wyrażeń regularnych ..............................................................................................131
Funkcje agregujące ....................................................................................................................138
AVG() .................................................................................................................................138
COUNT() ............................................................................................................................139
MAX() i MIN() ...................................................................................................................140
STDDEV() ..........................................................................................................................140
SUM() .................................................................................................................................141
VARIANCE() .....................................................................................................................141
Grupowanie wierszy ..................................................................................................................141
Grupowanie wierszy za pomocą klauzuli GROUP BY .......................................................142
Nieprawidłowe użycie funkcji agregujących .......................................................................145
Filtrowanie grup wierszy za pomocą klauzuli HAVING .....................................................146
Jednoczesne używanie klauzul WHERE i GROUP BY ......................................................147
Jednoczesne używanie klauzul WHERE, GROUP BY i HAVING .....................................147
Podsumowanie ...........................................................................................................................148
Rozdział 5. Składowanie oraz przetwarzanie dat i czasu ............................................ 149
Proste przykłady składowania i pobierania dat ..........................................................................149
Konwertowanie typów DataGodzina za pomocą funkcji TO_CHAR() i TO_DATE() .............151
Konwersja daty i czasu na napis za pomocą funkcji TO_CHAR() ......................................151
Konwersja napisu na wyrażenie DataGodzina za pomocą funkcji TO_DATE() .................155
Ustawianie domyślnego formatu daty .......................................................................................158
Jak Oracle interpretuje lata dwucyfrowe? ..................................................................................159
Użycie formatu YY .............................................................................................................159
Użycie formatu RR ..............................................................................................................160
Funkcje operujące na datach i godzinach ..................................................................................161
ADD_MONTHS() ...............................................................................................................161
LAST_DAY() .....................................................................................................................163
MONTHS_BETWEEN() ....................................................................................................163
NEXT_DAY() .....................................................................................................................163
ROUND() ............................................................................................................................164
SYSDATE ...........................................................................................................................164
TRUNC() ............................................................................................................................165
Strefy czasowe ...........................................................................................................................165
Funkcje operujące na strefach czasowych ...........................................................................166
Strefa czasowa bazy danych i strefa czasowa sesji ..............................................................167
Uzyskiwanie przesunięć strefy czasowej .............................................................................168
Uzyskiwanie nazw stref czasowych ....................................................................................168
Konwertowanie wyrażenia DataGodzina z jednej strefy czasowej na inną .........................169
Datowniki (znaczniki czasu) ......................................................................................................169
Typy datowników ................................................................................................................169
Funkcje operujące na znacznikach czasu ............................................................................173
Interwały czasowe .....................................................................................................................178
Typ INTERVAL YEAR TO MONTH ................................................................................179
Typ INTERVAL DAY TO SECOND .................................................................................181
Funkcje operujące na interwałach .......................................................................................183
Podsumowanie ...........................................................................................................................184
8
Oracle Database 11g i SQL. Programowanie
Rozdział 6. Podzapytania ......................................................................................... 187
Rodzaje podzapytań ...................................................................................................................187
Pisanie podzapytań jednowierszowych ......................................................................................188
Podzapytania w klauzuli WHERE .......................................................................................188
Użycie innych operatorów jednowierszowych ....................................................................189
Podzapytania w klauzuli HAVING .....................................................................................189
Podzapytania w klauzuli FROM (widoki wbudowane) .......................................................191
Błędy, które można napotkać ..............................................................................................191
Pisanie podzapytań wielowierszowych ......................................................................................192
Użycie operatora IN z podzapytaniem wielowierszowym ..................................................193
Użycie operatora ANY z podzapytaniem wielowierszowym ..............................................194
Użycie operatora ALL z podzapytaniem wielowierszowym ...............................................194
Pisanie podzapytań wielokolumnowych ....................................................................................195
Pisanie podzapytań skorelowanych ...........................................................................................195
Przykład podzapytania skorelowanego ................................................................................195
Użycie operatorów EXISTS i NOT EXISTS z podzapytaniem skorelowanym ..................196
Pisanie zagnieżdżonych podzapytań ..........................................................................................199
Pisanie instrukcji UPDATE i DELETE zawierających podzapytania .......................................200
Pisanie instrukcji UPDATE zawierającej podzapytanie ......................................................200
Pisanie instrukcji DELETE zawierającej podzapytanie .......................................................201
Podsumowanie ...........................................................................................................................201
Rozdział 7. Zapytania zaawansowane ....................................................................... 203
Operatory zestawu .....................................................................................................................203
Przykładowe tabele .............................................................................................................204
Operator UNION ALL ........................................................................................................205
Operator UNION .................................................................................................................206
Operator INTERSECT ........................................................................................................207
Operator MINUS .................................................................................................................207
Łączenie operatorów zestawu ..............................................................................................207
Użycie funkcji TRANSLATE() .................................................................................................209
Użycie funkcji DECODE() ........................................................................................................210
Użycie wyrażenia CASE ...........................................................................................................212
Proste wyrażenia CASE ......................................................................................................212
Przeszukiwane wyrażenia CASE .........................................................................................213
Zapytania hierarchiczne .............................................................................................................215
Przykładowe dane ...............................................................................................................215
Zastosowanie klauzul CONNECT BY i START WITH .....................................................216
Użycie pseudokolumny LEVEL ..........................................................................................217
Formatowanie wyników zapytania hierarchicznego ............................................................218
Rozpoczynanie od węzła innego niż główny .......................................................................219
Użycie podzapytania w klauzuli START WITH .................................................................219
Poruszanie się po drzewie w górę ........................................................................................220
Eliminowanie węzłów i gałęzi z zapytania hierarchicznego ................................................220
Umieszczanie innych warunków w zapytaniu hierarchicznym ...........................................221
Rozszerzone klauzule GROUP BY ...........................................................................................222
Przykładowe tabele .............................................................................................................222
Użycie klauzuli ROLLUP ..........................................................................................................224
Klauzula CUBE ...................................................................................................................226
Funkcja GROUPING() ........................................................................................................227
Klauzula GROUPING SETS ...............................................................................................230
Użycie funkcji GROUPING_ID() .......................................................................................231
Kilkukrotne użycie kolumny w klauzuli GROUP BY .........................................................233
Użycie funkcji GROUP_ID() ..............................................................................................233
Spis treści
9
Funkcje analityczne ...................................................................................................................235
Przykładowa tabela .............................................................................................................235
Użycie funkcji klasyfikujących ...........................................................................................236
Użycie odwrotnych funkcji rankingowych ..........................................................................243
Użycie funkcji okna ............................................................................................................243
Funkcje raportujące .............................................................................................................249
Użycie funkcji LAG() i LEAD() .........................................................................................251
Użycie funkcji FIRST i LAST ............................................................................................252
Użycie funkcji regresji liniowej ..........................................................................................252
Użycie funkcji hipotetycznego rankingu i rozkładu ............................................................253
Użycie klauzuli MODEL ...........................................................................................................254
Przykład zastosowania klauzuli MODEL ............................................................................255
Dostęp do komórek za pomocą zapisu pozycyjnego i symbolicznego ................................256
Uzyskiwanie dostępu do zakresu komórek za pomocą BETWEEN i AND ........................257
Sięganie do wszystkich komórek za pomocą ANY i IS ANY .............................................257
Pobieranie bieżącej wartości wymiaru za pomocą funkcji CURRENTV() .........................258
Uzyskiwanie dostępu do komórek za pomocą pętli FOR ....................................................259
Obsługa wartości NULL i brakujących ...............................................................................260
Modyfikowanie istniejących komórek ................................................................................262
Użycie klauzul PIVOT i UNPIVOT ..........................................................................................263
Prosty przykład klauzuli PIVOT .........................................................................................263
Przestawianie w oparciu o wiele kolumn ............................................................................265
Użycie kilku funkcji agregujących w przestawieniu ...........................................................266
Użycie klauzuli UNPIVOT .................................................................................................267
Podsumowanie ...........................................................................................................................268
Rozdział 8. Zmienianie zawartości tabeli .................................................................. 269
Wstawianie wierszy za pomocą instrukcji INSERT ..................................................................269
Pomijanie listy kolumn ........................................................................................................270
Określanie wartości NULL dla kolumny .............................................................................271
Umieszczanie pojedynczych i podwójnych cudzysłowów w wartościach kolumn .............271
Kopiowanie wierszy z jednej tabeli do innej .......................................................................271
Modyfikowanie wierszy za pomocą instrukcji UPDATE ..........................................................272
Klauzula RETURNING .............................................................................................................273
Usuwanie wierszy za pomocą instrukcji DELETE ....................................................................274
Integralność bazy danych ..........................................................................................................274
Wymuszanie więzów klucza głównego ...............................................................................274
Wymuszanie więzów kluczy obcych ...................................................................................275
Użycie wartości domyślnych .....................................................................................................276
Scalanie wierszy za pomocą instrukcji MERGE .......................................................................277
Transakcje bazodanowe .............................................................................................................279
Zatwierdzanie i wycofywanie transakcji .............................................................................280
Rozpoczynanie i kończenie transakcji .................................................................................281
Punkty zachowania ..............................................................................................................281
ACID — właściwości transakcji .........................................................................................283
Transakcje współbieżne ......................................................................................................283
Blokowanie transakcji .........................................................................................................284
Poziomy izolacji transakcji ..................................................................................................285
Przykład transakcji SERIALIZABLE .................................................................................286
Zapytania retrospektywne ..........................................................................................................287
Przyznawanie uprawnień do używania zapytań retrospektywnych .....................................288
Zapytania retrospektywne w oparciu o czas ........................................................................288
Zapytania retrospektywne z użyciem SCN ..........................................................................290
Podsumowanie ...........................................................................................................................291
Zgłoś jeśli naruszono regulamin