
Niniejsza książka pomoże Czytelnikowi w:
- Poznaniu wewnętrznych koncepcji SQL-a
- Stworzeniu serwisowalnego kodu, którym łatwo można się opiekować
- Zapewnieniu poprawności rezultatów wszystkich kwerend
- Kontrolowaniu dostępu do obiektów baz danych za pomocą przywilejów i widoków
- Ochronie danych przed niepowołanym dostępem
- Zoptymalizowaniu wydajności kwerend korzystających z wielu tabel
- Poznaniu złożonych operatorów i warunków
- Nauce efektywnego kontrolowania transakcji
- Dostosowywaniu wyglądu tabel za pomocą widoków
- Rozwiązaniu problemu zdenormalizowanych danych
- Słowo wstępne (15)
- Podziękowania (16)
- O autorze (18)
- Dla kogo jest ta książka? (20)
- Czemu powinienem tę książkę kupić? (21)
- Mile widziana wiedza wstępna (21)
- Zawartość i układ książki (21)
- Jak najlepiej używać tej książki? (22)
- Konwencje użyte w tej książce (22)
- Na podstawie czego ta książka powstała i co warto przeczytać później (23)
Rozdział 1. Wprowadzenie do języka SQL (27)
- Serwery baz danych i ich poprzednicy (27)
- Poprzednicy serwerów baz danych (27)
- Nieproceduralne schematy przetwarzania (30)
- Strukturalny język zapytań (SQL) (34)
- Język SQL w aplikacjach bazodanowych (35)
- Rozszerzenia proceduralne języka SQL (36)
- Instalacja Oracle i dostrajanie stacji roboczej (37)
- Instalacja Personal Oracle (37)
- Dostosowywanie środowiska pracy (42)
- Kopiowanie dostarczonych skryptów (44)
- Dostosowywanie programu Notatnik (45)
- Tworzenie ikon SQL do skryptów SQL (47)
- Przenoszenie elementów na pulpit (49)
- Dostrajanie bazy danych (50)
- Uruchamianie bazy danych i SQL*Plus (51)
- Podsumowanie (51)
Rozdział 2. Prosta instrukcja select (55)
- Tabele bazy danych (55)
- Typy danych numeryczne, znakowe i łańcuchy znakowe (57)
- Całkowitoliczbowy typ danych: number() (57)
- Ciągi znaków o stałej długości: char() (58)
- Napisy o zmiennej długości: varchar2() i varchar() (59)
- Przykładowe tablice bazy danych (59)
- Podstawowa postać instrukcji select (60)
- Pobieranie wszystkich wierszy i kolumn tabeli (60)
- Pobieranie wszystkich wierszy i jednej wybranej kolumny tabeli (61)
- Pobieranie wszystkich wierszy i zestawu wybranych kolumn tabeli (61)
- Zmiana kolejności kolumn (63)
- Odczyt całej tabeli a odczyt kombinacji poszczególnych pól (64)
- Słowo kluczowe all (64)
- Klauzula distinct (64)
- Sortowanie wyników przy użyciu frazy order by (66)
- Wyznaczanie kolumny sortującej przez nazwę (66)
- Wyznaczanie kolumny sortującej przez kolejność (66)
- Wyznaczanie sposobu sortowania: asc oraz desc (67)
- Sortowanie na podstawie kilku kolumn (68)
- Sortowanie według kolumn nie występujących na liście selekcji (69)
- Podsumowanie (71)
- Formatowanie kodu SQL (74)
- Formatowanie skryptów SQL (74)
- Parę wyjątkowych sytuacji, kiedy nie warto stosować formatowania (76)
- Dokumentacja i komentarze (78)
- Co powinna zawierać dokumentacja (79)
- Standardowe pliki ze skryptami i szablony (79)
- Formatowanie wyników SQL (80)
- Dodawanie tytułów: klauzule ttitle i btitle (81)
- Długość stron wydruku wyjściowego (82)
- Długość wierszy wydruku (84)
- Format i nagłówki kolumn (85)
- Podsumowanie (91)
Rozdział 4. Operatory konwersji i podmiana wartości (95)
- Użycie stałych (95)
- Stałe numeryczne (96)
- Stałe znakowe (96)
- Konwertowanie danych numerycznych - obliczenia (97)
- Operatory jednoargumentowe (98)
- Dwuargumentowe operatory arytmetyczne (98)
- Obliczenia przy użyciu więcej niż dwóch argumentów (99)
- Konkatenacja tekstów (102)
- Praca z pseudokolumnami (104)
- Numer wiersza: rownum (104)
- Identyfikator wiersza: rowid (105)
- Sekwencje generowane przez bazę danych: currval i nextval (107)
- Funkcje systemowe (110)
- Bieżąca data i czas systemowy: sysdate (110)
- Dane o użytkowniku: uid i user (110)
- Wyrażenie decode (111)
- Podsumowanie (113)
- Proste funkcje numeryczne (116)
- Wartość bezwzględna (abs) i znak liczby (sign) (116)
- Przybliżanie z góry i od dołu: floor i ceil (118)
- Funkcje zaokrąglające i obcinające: round i trunc (118)
- Funkcje matematyczne (120)
- Funkcja modulo: mod (121)
- Funkcje potęgowe: power, exp i sqrt (121)
- Funkcje logarytmiczne: log i ln (126)
- Funkcje trygonometryczne: sin, cos oraz tan (127)
- Funkcje hiperboliczne: sinh, cosh oraz tanh (128)
- Podsumowanie (129)
- Wybieranie podciągów, funkcje obcinające i wypełniające (131)
- Podciągi: substr (132)
- Odrzucanie części napisów: funkcje rtrim i ltrim (133)
- Uzupełnianie napisów: rpad i lpad (136)
- Funkcje konwersji napisów (138)
- Podmienianie znaków: translate (138)
- Podmiana części napisów: replace (141)
- Zmiana wielkości liter (142)
- Identyfikowanie podobnie brzmiących napisów: soundex (144)
- Funkcja łącząca teksty: concat (145)
- Podsumowanie (146)
- Funkcje analizujące napisy (147)
- Długość napisu: length (148)
- Porównanie podciągów oraz pozycja jednego napisu w innym: instr (151)
- Bajtowy odpowiednik funkcji instr: instrb (155)
- Funkcje konwersji typów danych (155)
- Konwertowanie wartości na napis: to_char (155)
- to_number (167)
- Funkcje przekształcające znaki na ich kody i vice versa (167)
- ascii (168)
- Konwersja reprezentacji bajtowej na odpowiadający jej znak: chr (168)
- Podsumowanie (169)
Rozdział 8. Wyrażenia agregujące i funkcje grupowe (173)
- Wszystkie wiersze a wiersze pojedyncze (173)
- Agregowanie podzbiorów wierszy: group by (174)
- Kolumny zwykłe a kolumny grupowe (176)
- Grupowanie według więcej niż jednej kolumny (179)
- Funkcje grupowe (182)
- Zliczanie wierszy: count (182)
- Zliczanie sumy wartości: sum (183)
- Wyznaczanie wartości największej i najmniejszej w zbiorze: max oraz min (185)
- Wyliczanie średniej wartości w zbiorze: avg (185)
- Wyliczanie wariancji i odchylenia standardowego dla wszystkich wartości kolumny: variance i stddev (187)
- Podsumowanie (188)
- Wartości wyrażeń warunkowych (189)
- Ograniczanie zakresu wybieranych wierszy: fraza where (190)
- Odrzucanie grup wierszy po dokonaniu obliczeń: having (192)
- Operatory porównania (195)
- Nierówność (<>) (195)
- Mniejsze i większe:<oraz>(196)
- Większe lub równe, mniejsze lub równe oraz zakres: >=, <= i between ... and (197)
- Równy dowolnemu ze wskazanych (in) oraz różny od wszystkich (not in) (200)
- Operatory podobieństwa: like oraz like ... escape (202)
- Rzadziej używane operatory porównania: any, some i all (205)
- Użycie numeru wiersza do ograniczania ilości pobieranych wierszy (205)
- Porównywanie napisów (207)
- Porównywanie bez rozróżniania wielkości liter (208)
- Testowanie napisów o zmiennej długości pod kątem istnienia dodatkowych spacji (209)
- Porównywanie napisów o przybliżonej wymowie: soundex (211)
- Warunki w liście przecinkowej instrukcji select (212)
- Podsumowanie (213)
- Operatory logiczne (215)
- Logiczne zaprzeczenie: not (216)
- Operator logicznej koniunkcji: and (219)
- Operator alternatywy logicznej: or (221)
- Zagnieżdżanie wyrażeń logicznych (223)
- Wyrażenia złożone z or wyłączającym (227)
- Negowanie złożonych wyrażeń warunkowych (prawa de Morgana): not or i not and (228)
- Podsumowanie (230)
Rozdział 11. Dane numeryczne: typ number (235)
- Liczby całkowite: number(zakres) (236)
- Reprezentacja danych logicznych (239)
- Liczby dziesiętne (241)
- Liczby stałoprzecinkowe: number(zakres,dokładność) (241)
- Liczby zmiennoprzecinkowe: number (248)
- Podsumowanie (253)
- Reprezentacja dat i czasu: typ date (256)
- Charakterystyka typu date (259)
- Dodawanie i odejmowanie dat i okresów (260)
- Dodawanie dni (260)
- Dodawanie i odejmowanie czasu (261)
- Dodawanie i odejmowanie miesięcy: add_months (263)
- Dodawanie i odejmowanie lat (264)
- Wyliczanie odstępu między datami (264)
- Dni (265)
- Czas (265)
- Wyliczanie ilości miesięcy pomiędzy datami: months_between (266)
- Lata (267)
- Funkcje specjalne do obsługi dni: last_day i next_day (268)
- Kalendarz juliański (269)
- Zaokrąglanie i obcinanie dat: round i trunc (269)
- Zaokrąglanie i obcinanie dat z dokładnością do dnia (lata, miesiące i dni) (269)
- Zaokrąglanie i obcinanie dat do innych jednostek czasu (271)
- Konwersje między strefami czasowymi: new_time (277)
- Możliwości formatowania dat: to_char (280)
- Formatowanie części związanej z samą datą (lata, miesiące i dni) (280)
- Wyświetlanie dat przy użyciu innych jednostek czasu (281)
- Wstawianie dat ze specjalnymi kodami formatującymi: to_date (286)
- Podsumowanie (286)
- Adresy fizyczne w bazie danych: rowid (289)
- Użycie rowid (290)
- rowid a funkcje konwersji napisów: rowidtochar i chartorowid (295)
- Bardzo długie napisy: long (295)
- Typy danych binarnych: raw i long raw (296)
- Funkcje konwersji danych binarnych na ciągi heksadecymalne: rawtohex i hextoraw (297)
- Podsumowanie (297)
- Niejawne konwersje typów (300)
- Konwersja napisów na wyrażenia numeryczne (301)
- Porównywanie liczby z napisem (301)
- Porównywanie dat z liczbami i napisami (303)
- Porównywanie identyfikatora wiersza rowid z napisem (304)
- Konwersje niejawne w instrukcjach insert i update (307)
- Wymuszanie konwersji (308)
- Konwersje między napisem a liczbą: to_number i to_char (309)
- Konwersja między napisem a datą: to_date i to_char (311)
- Konwersja między napisem a identyfikatorem wiersza rowid: rowidtochar i chartorowid (312)
- Konwersja między wartościami raw i long raw a odpowiadającymi im ciągami heksadecymalnymi: rawtohex i hextoraw (313)
- Konwersja między datą a odpowiadającą jej liczbą kalendarza juliańskiego: to_date i to_char (313)
- Podsumowanie (314)
- Wartość null w funkcjach agregujących (318)
- Wpływ wartości pustych na count (318)
- Wpływ wartości pustych na avg (321)
- Podmiana wartości null na inną: nvl (323)
- Zastępowanie wartości wartością null: decode(nuliff) (325)
- Trójwartościowe instrukcje warunkowe (326)
- Wartości puste w warunkach (326)
- Wpływ wartości null na wyrażenia logiczne (328)
- Wartości null w funkcjach konwersji (334)
- Wartości null i operatory (335)
- Dzielenie przez zero (336)
- Podsumowanie (340)
Rozdział 16. Pobieranie danych z wielu tabel (345)
- Obsługa wielu tabel w SQL (346)
- Wybieranie danych z wielu tabel - iloczyny kartezjańskie (złączenia kartezjańskie) (346)
- Warunki złączenia jako metoda uniknięcia iloczynów kartezjańskich (348)
- Aliasy tabel (353)
- Tabele w relacji nadrzędna-podrzędna (355)
- Tabele słownikowe a tabele w relacji nadrzędna-podrzędna (358)
- Podsumowanie (359)
- Złączanie pasujących wierszy: złączenie wewnętrzne (domyślne) (362)
- Włączanie wierszy nie mających odpowiedników w drugiej tabeli: lewe/prawe złączenia zewnętrzne (367)
- Ograniczenia operatora złączeń zewnętrznych (373)
- Pełne złączenia zewnętrzne (373)
- Powtarzające się wiersze w rozpatrywanych tabelach (374)
- Wartości null w kolumnach łączących (376)
- Podsumowanie (379)
Rozdział 18. Łączenie danych z podobnych tabel - operatory zbiorów i pseudozbiorów (383)
- Operatory zbiorów (384)
- Pobranie wszystkich elementów: union (385)
- Wybieranie elementów istniejących tylko w jednej z tabel: minus (387)
- Pobieranie jedynie wierszy mających swoje odpowiedniki: intersect (390)
- Pobieranie wszystkich wierszy z zapytań składowych: union all (394)
- Łączenie operatorów zbiorów i pseudozbiorów (395)
- Wyłączający operator union (396)
- Pełne złączenia zewnętrzne realizowane przez union all (398)
- Typowe błędy popełniane przy używaniu operatorów zbiorów (400)
- Różna liczba kolumn (400)
- Niezgodne typy danych (401)
- Sortowanie wyników działania operatorów zbiorów i pseudozbiorów (405)
- Sortowanie według wybranych kolumn (405)
- Sortowanie według kolumn nie wybieranych w zapytaniu (408)
- Sortowanie według fikcyjnych kolumn (409)
- Podsumowanie (410)
- Dwuetapowe uruchamianie zapytań (414)
- Własności podzapytań warunkowych (416)
- Jednowierszowe operatory porównania (417)
- Podzapytania równoległe (419)
- Podsumowanie (422)
- Podzapytania zwracające wiele wierszy (423)
- Wielowierszowe operatory porównania (426)
- Podzapytania zwracające wiele kolumn (431)
- Wirtualne widoki tworzone za pomocą podzapytań (433)
- Podsumowanie (435)
- Uruchamianie podzapytań związanych (437)
- Podzapytania związane a tymczasowe widoki i tabele (443)
- Uwagi na temat wydajności (445)
- operatory exists i not exists (445)
- not exists a not in (447)
- Podsumowanie (450)
- Tablice złączane same ze sobą: złączenia rekursywne i zapytania N-poziomowe (451)
- Podzapytania dwupoziomowe (452)
- Podzapytania N-poziomowe (453)
- Hierarchiczna instrukcja select: użycie connect by prior i start with (455)
- Poziom węzła w hierarchii: level (457)
- Formatowanie raportów hierarchicznych przy pomocy lpad (458)
- Drzewa w wersji okrojonej (462)
- Odrzucanie gałęzi: użycie connect by prior...and... (462)
- Podsumowanie (464)
- Korzyści z generowania SQL za pomocą samego SQL (466)
- Umieszczanie fragmentów kodu SQL w stałych (467)
- Stałe w pojedynczym cudzysłowie (467)
- Sztuczki związane z formatowaniem - końce wiersza i tabulatory (469)
- Tworzenie złożonych zapytań jednotabelowych (470)
- Przekierowanie wyników do pliku (471)
- Usprawnianie generowania SQL za pomocą SQL przy użyciu tabeli SQLCONST (473)
- Wstawianie sekcji komentarza (475)
- Typowe zastosowania (477)
- Definicja tabeli i zrzucenie jej zawartości (478)
- Podsumowanie (481)
Część VII Modyfikacja informacji (485)
Rozdział 24. Modyfikacja danych z pojedynczej tabeli (487)
- Wstawianie nowych wierszy do tabeli: polecenie insert (488)
- Wskazywanie kolumn do wstawienia (490)
- Wstawianie wierszy które są wybrane z drugiej tabeli za pomocą podzapytania (491)
- Usuwanie wierszy z tabeli: polecenia delete i truncate (493)
- Nieodwracalne usuwanie wszystkich wierszy z tabeli: polecenie truncate table (496)
- Aktualizowanie istniejących wierszy w tabeli: polecenie update (496)
- Kwalifikacja wierszy do aktualizacji (498)
- Aktualizacja za pomocą podzapytania wielokolumnowego (499)
- Podsumowanie (501)
- Zatwierdzanie lub anulowanie zmian wprowadzonych do bazy danych: polecenia commit i rollback (503)
- Jawne i domniemane polecenia commit (506)
- Efekt użycia polecenia commit w różnych sesjach (509)
- Schemat stopniowego anulowania/zatwierdzania: polecenie savepoint (512)
- Podsumowanie (516)
Rozdział 26. Widoki dla pojedynczej tabeli (521)
- Podstawowe widoki synonimiczne (522)
- Widok synonimiczny tabeli (523)
- Widok synonimiczny kolumn (525)
- Widoki maskujące (527)
- Widoki maskujące kolumny (527)
- Wstawianie, aktualizowanie i usuwanie na widokach maskujących kolumny (528)
- Widoki maskujące wiersze (532)
- Wstawianie, aktualizowanie i usuwanie w widoku maskującym wiersze (534)
- Widoki o specjalnych opcjach (537)
- Tworzenie widoków bez tabel bazowych: wyrażenie force (537)
- Ograniczanie widoków tylko do odczytu: opcja with read only (539)
- Zezwalanie tylko na te manipulacje danymi w widoku, które spełniają warunek wskazany w klauzuli where: opcja with check option (541)
- Wirtualne widoki poprzez podzapytania (543)
- Komentarze dla widoków w Słowniku Danych: polecenie comment on (544)
- Podsumowanie (546)
- Ograniczenia polecenia select przy tworzeniu widoku (548)
- Widoki agregujące (549)
- Widoki selektywne (550)
- Widoki wielotabelowe (551)
- Widoki hierarchiczne (553)
- Pobieranie pierwszych N-wierszy posortowanych (557)
- Widoki oparte na operatorach (pseudo-) zbiorów (559)
- Widoki wirtualne (widoki za pośrednictwem podzapytań) (560)
- Podsumowanie (561)
Rozdział 28. Tworzenie tabel (565)
- Tworzenie nowej tabeli (566)
- Wartości domyślne: default (567)
- Sposób przechowywania tabeli: dyrektywy przestrzeni i słowo kluczowe storage (568)
- Praca z użytkownikami/schematami bazy danych: polecenie create user (573)
- Synonimy (577)
- Usuwanie tabel i ich zawartości z bazy danych: drop table (582)
- Natychmiastowe i nieodwracalne usuwanie zawartości tabeli: truncate table (582)
- Zmiana definicji istniejącej tabeli (583)
- Zmiana nazwy tabeli (583)
- Dodawanie kolumn: alter table ... add (585)
- Zmiana definicji kolumny: alter table ... modify (586)
- Drastyczne modyfikacje kolumny lub usuwanie kolumn - odtwarzanie definicji i kopiowanie zawartości (589)
- Jednoetapowy proces tworzenia tabel których kolumny i zawartość są wyprowadzane z innych tabel (591)
- Opcja unrecoverable (593)
- Przenoszenie tabeli z jednego schematu do drugiego (593)
- Tworzenie tabel słownikowych (SQL generujący SQL) (595)
- Opcja cache (596)
- Podsumowanie (597)
- Ograniczenia statyczne (600)
- Ograniczenia not null (600)
- Ograniczenia check (602)
- Nazywanie, włączanie i wyłączanie indeksów, kluczy i ograniczeń (608)
- Nazywanie ograniczeń (608)
- Włączanie i wyłączanie ograniczeń (612)
- Ograniczenia dynamiczne dla kolumn (616)
- Wymuszanie unikalnych wartości dla kluczy: unique (616)
- Ograniczenia unique i check z wartościami null (618)
- Klucze podstawowe (619)
- Unikalne i podstawowe klucze złożone (621)
- Określanie odpowiednich wartości dla kluczy (623)
- Użycie generowanych numerów unikalnych lub sekwencji (624)
- Wartość klucza z podzapytania (627)
- Sekwencja w rodzicu (628)
- Dynamiczne ograniczenia (więzy) pomiędzy tabelami - klucze obce (629)
- Klucze obce pomiędzy tabelami (630)
- Wstawianie wierszy do tabeli z kluczami obcymi (633)
- Usuwanie wierszy z tabeli podrzędnej (634)
- Łączenie poprzez klucze obce (635)
- Rekurencyjne klucze obce (637)
- Wielowarstwowe tabele rodzic-dziecko (640)
- Umożliwienie szybkiego pobierania wierszy za pomocą indeksów (644)
- Kolumny indeksowane: polecenie create index (645)
- Indeksy na kolumnach o wartościach null (647)
- Indeksy złożone (647)
- Określanie parametrów sposobu przechowywania dla indeksów, kluczy podstawowych i kluczy unikalnych (649)
- Dyrektywa przestrzeni: pctfree (649)
- Charakterystyka sposobu przechowywania: storage (651)
- Komentarze dla tabel i kolumn (654)
- Podsumowanie (656)
- Modelowanie związków encji (658)
- Elementy diagramu związków encji (659)
- Typowe związki encji (661)
- Związki jeden do wielu (661)
- Jeden do wielu w tej samej tabeli: złączenia rekurencyjne (662)
- Związki jeden do jeden (663)
- Związki wielowarstwowe: jeden do wielu do wielu (664)
- Związki wiele do wielu i tabele przecięć (666)
- Inne kombinacje (667)
- Podsumowanie (669)
- Związki wymagane i opcjonalne (672)
- Związek wymagany wiele do opcjonalny jeden (673)
- Związek opcjonalny wiele do opcjonalny jeden (674)
- Związek opcjonalny jeden do opcjonalny jeden (674)
- Związek wymagany jeden do wymagany jeden (675)
- Związek wymagany nadrzędny do opcjonalny podrzędny (681)
- Podsumowanie (684)
- Etapy projektowania bazy danych (686)
- Estetyka projektu bazy danych (686)
- Oszczędność i efektywność (687)
- Prostota i wydajność (687)
- Inne wymiary (689)
- Normalizacja danych (689)
- Pierwsza postać normalna: brak powtarzających się grup (690)
- Druga postać normalna: zależność wszystkich atrybutów od jednoznacznego identyfikatora (691)
- Trzecia postać normalna: Żaden atrybut nie będący częścią klucza nie zależy od innego atrybutu nie będącego częścią klucza (692)
- Denormalizacja (695)
- Manipulacja zdenormalizowanymi tabelami za pomocą kolumn zsynchronizowanych (696)
- Fałszywe tablice (697)
- Przykład pełnego modelu (698)
- Encje i związki (700)
- Konwertowanie modeli związków encji do modeli fizycznych (703)
- Podsumowanie (710)
Rozdział 33. Przywileje (713)
- Użytkownicy bazy danych (714)
- Ochrona obiektów i danych bazy danych (716)
- Inne przywileje do obiektów: all, alter, index, references i execute (721)
- Przwileje które mogą być przypisywane do obiektów (722)
- Przyznawanie dostępu do obiektów na poziomie kolumny (722)
- Zapytania o przywileje kolumnowe do Słownika Danych (727)
- Zmiana charakterystyki użytkownika i udostępnianie zasobów bazy danych (728)
- Przyznawanie przywileju create table (728)
- Domyślne przestrzenie tabel i udziały (729)
- Ustawianie domyślnych i tymczasowych przestrzeni tabel oraz udziałów (731)
- Przyznawanie dalszych przywilejów (732)
- Przywileje mające wpływ na pracę użytkownika w jego własnym schemacie (733)
- Przywileje mające wpływ na schematy wszystkich (735)
- Przywileje administratora baz danych (738)
- Odbieranie przywilejów (739)
- Podsumowanie (740)
- Tworzenie ról i przypisywanie rolom przywilejów (742)
- Przypisywanie ról użytkownikom, uaktywnianie ról oraz ustawianie ról domyślnych (744)
- Inne opcje set role i default role (749)
- Implementowanie bezpieczeństwa poprzez role i proces uaktywniania (749)
- Przyznawanie przywilejów publicznych (752)
- Role predefiniowane (755)
- Podsumowanie (759)
- Kontrola dostępu do wierszy poprzez widoki (761)
- Tworzenie widoków kontrolujących dostęp do wiersza (762)
- Dostęp do wierszy poprzez widoki kontrolujące dostęp do wierszy (764)
- Podsumowanie (767)
- Pola informujące o utworzeniu i aktualizacji (770)
- Wyzwalacze bazy danych (770)
- Tabele przebiegu transakcji (774)
- Użycie funkcji auditingu wbudowanych do RDBMS (780)
- Podsumowanie (780)
Część XI Optymalizacja (783)
Rozdział 37. Optymalizacja wydajności wykonywania poleceń: faza rozbioru (785)
- Przetwarzanie zapytań SQL (786)
- Kursory (786)
- Rozbiór (787)
- Wykonanie (787)
- Zamykanie kursora (788)
- Wpływ na ponowne użycie kursorów (788)
- Otrzymywanie identycznych poleceń (789)
- Zmienne związane (789)
- Użycie zmiennych związanych (790)
- Dane statystyczne poleceń SQL ze Słownika Danych (793)
- Zmienne związane o różnych nazwach (795)
- Białe znaki (797)
- Komentarze w tekście SQL (799)
- Optymalizacja wydajności a rzeczywistość (800)
- Podsumowanie (801)
- Narzędzia Oracle zwiększające wydajność (804)
- Instalacja SQL Station (806)
- Użycie Plan Analyzer (814)
- Analiza prostego zapytania (815)
- Analiza posortowanego zapytania (818)
- Kryteria decydujące o użyciu indeksu lub pełnego skanowania tabeli (822)
- Optymalizacja pracy z wieloma tabelami (823)
- Sprzężenie sortująco-scalające (sort merge) (823)
- Sprzężenie zagnieżdżonych pętli (nested loop) (824)
- Sprzężenie mieszające (hash) (825)
- Kryteria wydajności (826)
- Podsumowanie (828)
- Jakość danych (829)
- Praca z danymi pochodzącymi z innych systemów (831)
- Twarde fakty z życia analityków danych: niepoprawne dane mogą doprowadzić do tego, że wypadniesz z biznesu (832)
- Etapy porządkowania danych (834)
- Testowanie danych pod kątem integralności (836)
- Kody selektywne (836)
- Zakresy kodów i sprawdzanie wiarygodności (839)
- Sprawdzanie wartości NULL (840)
- Sprawdzanie pod względem unikalności (842)
- Sprawdzanie wartości klucza obcego (849)
- Kopiowanie rekordów i włączanie ograniczeń (851)
- Niezgodne schematy kodowania (852)
- Aktualizacja za pomocą wyrażenia decode (852)
- Użycie tabeli słownikowej (854)
- Praca z powtórzonymi wierszami reprezentującymi historię danych (861)
- Nadpisywanie danych (861)
- Eliminowanie zbędnych wierszy (862)
- Zmiany w strukturach organizacyjnych (865)
- Podsumowanie (868)