oracle database 11g i sql. programowanie scan.pdf

(17514 KB) Pobierz
Oracle Database 11g i SQL.
Programowanie
Autor: Jason Price
T³umaczenie: Marcin Rogó¿
ISBN: 978-83-246-1879-8
(Osborne Oracle Press)
Format: B5, stron: 672
Opanuj SQL i PL/SQL w Oracle Database i pisz œwietne programy!
Jak tworzyæ obiekty baz danych i kolekcje?
Jak zoptymalizowaæ instrukcje SQL, aby by³y wykonywane szybciej?
Jak pisaæ programy w PL/SQL?
Doskona³a baza danych to jeden z podstawowych elementów sprawnego
funkcjonowania wspó³czesnych przedsiêbiorstw, instytucji i organizacji. Jednak,
aby efektywnie korzystaæ z jej dobrodziejstw, potrzebujesz specjalnego
oprogramowania. Znakomitym systemem zarz¹dzania baz¹ danych jest Oracle.
Natomiast SQL — strukturalny jêzyk zapytañ — zapewnia dostêp do systemu
zarz¹dzania baz¹ danych, a wiêc pobieranie, wstawianie i usuwanie z niej wszelkich
informacji. PL/SQL (wywodz¹cy siê z SQL) umo¿liwia pisanie programów zawieraj¹cych
instrukcje SQL.
Ksi¹¿ka „Oracle Database 11g. Programowanie w jêzyku SQL” zawiera wyczerpuj¹ce
informacje, dotycz¹ce pracy z baz¹ danych Oracle za poœrednictwem instrukcji SQL,
a tak¿e opis najnowszych w³aœciwoœci i narzêdzi tego jêzyka, technik
optymalizacyjnych oraz obs³ugi Javy i XML. Z tego podrêcznika dowiesz siê miêdzy
innymi, w jaki sposób Oracle przetwarza oraz przechowuje daty i czas. Nauczysz siê
wykorzystywaæ du¿e obiekty do obs³ugi plików multimedialnych zawieraj¹cych obrazy,
muzykê i filmy, a tak¿e pisaæ (w jêzyku Java) programy uzyskuj¹ce dostêp do bazy
danych Oracle za poœrednictwem JDBC.
Pobieranie informacji z tabel bazy danych
SQL*Plus
Funkcje
Sk³adowanie oraz przetwarzanie dat i czasu
Zapytania zaawansowane
U¿ytkownicy, uprawnienia i role
Obiekty baz danych
Kolekcje
Praca z SQL w Javie
Zamkniêcie obiektu ResultSet
Optymalizacja SQL
XML i bazy danych Oracle
Baza Oracle nie bêdzie mia³a przed Tob¹ tajemnic!
803542290.003.png 803542290.004.png 803542290.005.png 803542290.006.png 803542290.001.png
Spis treści
5
Spis treści
O autorze ................................................................................................. 17
O redaktorze merytorycznym ..................................................................... 19
Wprowadzenie .......................................................................................... 21
Rozdział 1. Wprowadzenie .......................................................................................... 27
Czym jest relacyjna baza danych? ...............................................................................................27
Wstęp do SQL .............................................................................................................................28
Używanie SQL*Plus ...................................................................................................................30
Uruchamianie SQL*Plus .......................................................................................................30
Uruchamianie SQL*Plus z wiersza poleceń ..........................................................................31
Wykonywanie instrukcji SELECT za pomocą SQL*Plus .....................................................32
SQL Developer ............................................................................................................................33
Tworzenie schematu bazy danych sklepu ....................................................................................34
Uruchamianie skryptu programu SQL*Plus
w celu utworzenia schematu bazy danych sklepu ...............................................................35
Instrukcje DDL używane do tworzenia schematu bazy danych sklepu .................................36
Dodawanie, modyfikowanie i usuwanie wierszy .........................................................................44
Dodawanie wiersza do tabeli .................................................................................................44
Modyfikowanie istniejącego wiersza w tabeli .......................................................................46
Usuwanie wiersza z tabeli .....................................................................................................47
Typy BINARY_FLOAT i BINARY_DOUBLE .........................................................................47
Zalety typów BINARY_FLOAT i BINARY_DOUBLE .......................................................47
Użycie typów BINARY_FLOAT i BINARY_DOUBLE w tabeli ........................................48
Wartości specjalne .................................................................................................................49
Kończenie pracy SQL*Plus .........................................................................................................49
Wprowadzenie do Oracle PL/SQL ..............................................................................................50
Podsumowanie .............................................................................................................................51
Rozdział 2. Pobieranie informacji z tabel bazy danych ................................................. 53
Wykonywanie instrukcji SELECT dla jednej tabeli ....................................................................53
Pobieranie wszystkich kolumn z tabeli ........................................................................................54
Wykorzystanie klauzuli WHERE do wskazywania wierszy do pobrania ....................................55
Identyfikatory wierszy .................................................................................................................55
Numery wierszy ...........................................................................................................................56
Wykonywanie działań arytmetycznych .......................................................................................56
Wykonywanie obliczeń na datach .........................................................................................57
Korzystanie z kolumn w obliczeniach ...................................................................................58
803542290.002.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
Zgłoś jeśli naruszono regulamin