Praktyki mistrza SQL. Programowanie zaawansowane - Helion
Tytuł oryginału: Joe Celko's SQL for Smartie: Advanced SQL Programming, 5th Edition
TÅ‚umaczenie: Tomasz Walczak
ISBN: 978-83-283-2530-2
stron: 752, Format: 164x239, okładka: twarda
Data wydania: 2016-10-17
Księgarnia: Helion
Cena książki: 119,00 zł
SQL jest narzÄ™dziem stworzonym specjalnie na potrzeby baz danych. Nauka tego jÄ™zyka wymaga dogÅ‚Ä™bnego zrozumienia mechanizmów relacyjnych baz danych. Co wiÄ™cej, w przypadku dużych zbiorów danych lub zbiorów danych wymagajÄ…cych szczególnego traktowania pozornie nieznaczne usterki kodu SQL mogÄ… prowadzić do istotnych problemów w użytkowaniu aplikacji.
Niniejsza książka jest przeznaczona dla aktywnych programistów SQL. Przedstawia zaawansowane techniki i idiomy programistyczne z obszaru tego jÄ™zyka. Pokazano w niej również, w jaki sposób można rozwiÄ…zywać problemy, które czÄ™sto pojawiajÄ… siÄ™ w bazach danych. Prezentowane tu rozwiÄ…zania można implementować we wÅ‚aÅ›ciwie wszystkich systemach bazodanowych korzystajÄ…cych z SQL. To klasyczny podrÄ™cznik, systematycznie uaktualniany, który doczekaÅ‚ siÄ™ prawdziwego uznania wÅ›ród specjalistów.
W książce omówiono miÄ™dzy innymi:
- transakcje i kontrolÄ™ wspóÅ‚bieżnoÅ›ci
- tabele i normalizacjÄ™ danych oraz widoki, tabele pomocnicze i tymczasowe
- dane, operacje na danych, w tym na adresach IP, datach, danych tekstowych
- zaawansowane techniki tworzenia kwerend
- hierarchiÄ™ w SQL, kolejki i macierze w SQL
- nowoÅ›ci w wydaniu: model z podwójnym zapisem czasu, funkcje agregujÄ…ce, rozwiÄ…zywanie problemów z instrukcjami DDL i wiele innych zagadnieÅ„
Skoro znasz SQL, to stań się jego ekspertem!
Joe Celko — uznany ekspert w dziedzinie baz danych. Z jego konsultacji korzystaÅ‚y m.in. sÅ‚użby medyczne, NASA, siÅ‚y zbrojne USA. Autor wysoko cenionych książek dotyczÄ…cych SQL. NapisaÅ‚ również ponad 1200 artykuÅ‚ów w prasie informatycznej i akademickiej. WiÄ™kszość tych tekstów dotyczyÅ‚a danych i baz.
Osoby które kupowały "Praktyki mistrza SQL. Programowanie zaawansowane", wybierały także:
- Microsoft SQL Server. Kurs video. Tworzenie zaawansowanych zapytań 199,00 zł, (59,70 zł -70%)
- SQL. Kurs video. Od zera do bohatera. Modyfikowanie danych 159,00 zł, (47,70 zł -70%)
- SQL. Kurs video. Od zera do bohatera. Odczytywanie danych 159,00 zł, (47,70 zł -70%)
- SQL. Kurs video. Projektowanie i implementacja baz danych 79,00 zł, (23,70 zł -70%)
- Instalacja i konfiguracja baz danych. Kurs video. Przygotowanie do egzaminu 70-765 Provisioning SQL Databases 299,00 zł, (89,70 zł -70%)
Spis treści
Praktyki mistrza SQL. Programowanie zaawansowane -- spis treści
Wprowadzenie do wydania piÄ…tego (13)
CZĘŚĆ I. MECHANIZMY ZWIĄZANE Z DEKLAROWANIEM DANYCH (15)
1. Bazy danych a systemy plików (17)
- 1.1. Instrukcja Schema (19)
- 1.2. Tabele jako encje (24)
- 1.3. Tabele jako relacje (24)
- 1.4. Wiersze a rekordy (26)
- 1.5. Kolumny a pola (27)
2. Transakcje i kontrola wspóÅ‚bieżnoÅ›ci (31)
- 2.1. Sesje (32)
- 2.2. Transakcje i model ACID (32)
- 2.3. Kontrola wspóÅ‚bieżnoÅ›ci (34)
- 2.4. Poziomy izolacji (36)
- 2.5. Pesymistyczna kontrola wspóÅ‚bieżnoÅ›ci (38)
- 2.6. Optymistyczna kontrola wspóÅ‚bieżnoÅ›ci za pomocÄ… izolacji snapshotów (39)
- 2.7. Logiczna kontrola wspóÅ‚bieżnoÅ›ci (42)
- 2.8. Twierdzenie CAP (42)
- 2.9. Model BASE (43)
- 2.10. Spójność po stronie serwera (45)
- 2.11. ObsÅ‚uga bÅ‚Ä™dów (46)
- 2.12. Pasywne i aktywne zakleszczenie (46)
3. Tabele (49)
- 3.1. Instrukcja CREATE TABLE (50)
- 3.2. Definicje kolumn (52)
- 3.3. Kolumny obliczane (63)
- 3.4. Ograniczenia [NOT] DEFERRABLE (64)
- 3.5. Instrukcje CREATE DOMAIN i CREATE SEQUENCE (65)
- 3.6. Konstrukcje zwiÄ…zane z zestawem znaków (72)
4. Klucze, lokalizatory i generowane wartości (75)
- 4.1. Typy kluczy (76)
- 4.2. Praktyczne wskazówki zwiÄ…zane z denormalizacjÄ… (79)
5. Normalizacja (85)
- 5.1. Zależności funkcyjne i wielowartościowe (88)
- 5.2. Pierwsza postać normalna (1NF) (88)
- 5.3. Druga postać normalna (2NF) (93)
- 5.4. Trzecia postać normalna (3NF) (94)
- 5.5. Postać normalna z kluczem podstawowym (EKNF) (95)
- 5.6. Postać normalna Boyce'a-Codda (BCNF) (96)
- 5.7. Czwarta postać normalna (4NF) (98)
- 5.8. Piąta postać normalna (5NF) (99)
- 5.9. Postać normalna z kluczem dziedziny (DKNF) (101)
- 5.10. Praktyczne wskazówki z zakresu normalizacji (108)
- 5.11. Nadmiarowość, gdy nie jest używana postać normalna (109)
6. Widoki, tabele pochodne i inne tabele wirtualne (115)
- 6.1. Widoki w kwerendach (116)
- 6.2. Widoki modyfikowalne i tylko do odczytu (117)
- 6.3. Typy widoków (118)
- 6.4. ObsÅ‚uga widoków w silnikach bazodanowych (124)
- 6.5. Klauzula WITH CHECK OPTION (128)
- 6.6. Usuwanie widoków (133)
- 6.7. Tabele ze zmaterializowanymi wynikami kwerend (134)
7. Tabele pomocnicze (137)
- 7.1. Tabela Series (138)
- 7.2. Pomocnicze tabele wyszukiwania (143)
- 7.3. Zaawansowane tabele pomocnicze z funkcjami (153)
- 7.4. Globalne tabele stałych (164)
- 7.5. Uwagi na temat przekształcania kodu proceduralnego na tabele (171)
8. Inne obiekty schematu (177)
- 8.1. Instrukcja CREATE SCHEMA (179)
- 8.2. Tabele schematu (180)
- 8.3. Tabele tymczasowe (180)
- 8.4. Instrukcja CREATE ASSERTION (180)
- 8.5. Instrukcja CREATE DOMAIN (181)
- 8.6. Instrukcja CREATE COLLATION (182)
- 8.7. Instrukcja CREATE TRANSLATION (183)
- 8.8. Instrukcja CREATE PROCEDURE (183)
- 8.9. Wyzwalacze (183)
- 8.10. Model działania wyzwalaczy (184)
9. BÅ‚Ä™dy, których należy unikać w instrukcjach DDL (193)
- 9.1. Stosowanie skrótu "tbl" i powiÄ…zane bÅ‚Ä™dy (193)
- 9.2. PodziaÅ‚ atrybutów (196)
- 9.3. Problemy z przeciążaniem projektu (197)
- 9.4. Nadmiarowość wynikająca z braku postaci normalnej (201)
CZĘŚĆ II. TYPY DANYCH (205)
10. Dane liczbowe w SQL-u (207)
- 10.1. Dokładne liczbowe typy danych (208)
- 10.2. Przybliżone liczbowe typy danych (213)
- 10.3. Konwersje typów liczbowych (215)
- 10.4. Arytmetyka oparta na czterech funkcjach (217)
- 10.5. Przekształcanie wartości na NULL i dokonywanie odwrotnych konwersji (219)
- 10.6. Funkcje matematyczne (222)
- 10.7. Adresy IP (226)
11. Znakowe typy danych w SQL-u (229)
- 11.1. Problemy z Å‚aÅ„cuchami znaków w SQL-u (230)
- 11.2. Standardowe funkcje znakowe (232)
- 11.3. CzÄ™sto dostÄ™pne rozszerzenia od producentów (234)
- 11.4. Tablice Cuttera (242)
12. SQL-owe typy danych zwiÄ…zane z czasem (243)
- 12.1. Uwagi na temat standardów zwiÄ…zanych z kalendarzem (244)
- 12.2. Natura modeli danych zwiÄ…zanych z czasem (247)
- 12.3. SQL-owe typy danych zwiÄ…zane z czasem (248)
- 12.4. Typy danych z rodziny INTERVAL (255)
- 12.5. Kwerendy z operacjami arytmetycznymi na datach (256)
- 12.6. Stosowanie wartości NULL do oznaczania "wieczności" (257)
- 12.7. Predykat OVERLAPS() (258)
- 12.8. Ograniczenia zwiÄ…zane ze zmianami stanu (260)
- 12.9. Tabele z kalendarzem (265)
13. Wielokolumnowe elementy danych (269)
- 13.1. Elementy danych w postaci wektorów i wspóÅ‚rzÄ™dnych (269)
- 13.2. Hierarchiczne elementy danych (276)
14. Wartości NULL - brakujące dane w SQL-u (283)
- 14.1. Puste i brakujÄ…ce tabele (285)
- 14.2. Brakujące wartości w kolumnach (285)
- 14.3. Kontekst i brakujące wartości (287)
- 14.4. Porównywanie wartoÅ›ci NULL (288)
- 14.5. Wartości NULL i logika (289)
- 14.6. Wartości NULL a obliczenia matematyczne (293)
- 14.7. Funkcje związane z wartościami NULL (294)
- 14.8. WartoÅ›ci NULL a jÄ™zyki gÅ‚ówne (294)
- 14.9. Wskazówki projektowe zwiÄ…zane z wartoÅ›ciami NULL (295)
- 14.10. Uwagi na temat różnych rodzajów wartoÅ›ci NULL (298)
15. Operacje na tabelach (301)
- 15.1. Instrukcja DELETE FROM (301)
- 15.2. Instrukcja INSERT INTO (307)
- 15.3. Instrukcja UPDATE (309)
- 15.4. Uwaga na temat bÅ‚Ä™dów w popularnych rozszerzeniach producentów (317)
- 15.5. Instrukcja MERGE (318)
16. Operacje na zbiorach (321)
- 16.1. UNION i UNION ALL (322)
- 16.2. Operatory INTERSECT i EXCEPT (325)
- 16.3. Uwagi na temat opcji ALL i SELECT DISTINCT (330)
- 16.4. Równość i podzbiory wÅ‚aÅ›ciwe (331)
CZĘŚĆ III. MECHANIZMY Z POZIOMU WIERSZY I KOLUMN (333)
17. Operatory porównywania (operatory theta) (335)
- 17.1. Konwersja typów danych (336)
- 17.2. Porównywanie wierszy w SQL-u (338)
- 17.3. Operator IS [NOT] DISTINCT FROM (340)
- 17.4. Operatory monadyczne (341)
18. Predykaty dotyczÄ…ce wyników podkwerend (345)
- 18.1. Predykat UNIQUE (345)
- 18.2. Predykat [NOT] IN() (347)
- 18.3. Predykat [NOT] EXISTS() (357)
- 18.4. [SOME | ANY] (365)
- 18.5. ALL (365)
19. Predykaty BETWEEN i OVERLAPS (369)
- 19.1. Predykat BETWEEN (369)
- 19.2. Predykat OVERLAPS (372)
20. Rodzina wyrażeń CASE (383)
- 20.1. Wyrażenie CASE (383)
- 20.2. Wyrażenia w postaci podkwerend i stałe (391)
21. Predykaty LIKE i SIMILAR TO (393)
- 21.1. Sztuczki zwiÄ…zane ze wzorcami (394)
- 21.2. Wyniki dla wartoÅ›ci NULL i pustych Å‚aÅ„cuchów znaków (396)
- 21.3. Operator LIKE nie oznacza równoÅ›ci (396)
- 21.4. Rozbudowywanie predykatu LIKE za pomocą złączenia (396)
- 21.5. Wyrażenia CASE i predykaty LIKE (397)
- 21.6. Predykat SIMILAR TO (397)
- 21.7. Sztuczki zwiÄ…zane z Å‚aÅ„cuchami znaków (399)
22. Podstawowa instrukcja SELECT (403)
- 22.1. Wyrażenia CTE (404)
- 22.2. Klauzula FROM (405)
- 22.3. Klauzula WHERE (405)
- 22.4. Klauzula GROUP BY (406)
- 22.5. Klauzula HAVING (406)
- 22.6. Klauzula SELECT (407)
- 22.7. Klauzula ORDER BY (407)
- 22.8. Wyrażenie z zagnieżdżonymi kwerendami a ortogonalność (407)
23. Podstawowe funkcje agregujÄ…ce (409)
- 23.1. Funkcje z rodziny COUNT() (410)
- 23.2. Funkcja SUM() (414)
- 23.3. Funkcja AVG() (415)
- 23.4. Funkcje zwracajÄ…ce ekstrema (419)
- 23.5. Funkcja agregujÄ…ca LIST() (427)
- 23.6. Funkcja agregujÄ…ca wyznaczajÄ…ca dominantÄ™ (429)
- 23.7. Funkcja agregujÄ…ca zwracajÄ…ca medianÄ™ (430)
- 23.8. Funkcja agregujÄ…ca PRD() (432)
24. Zaawansowane statystyki opisowe (437)
- 24.1. Funkcje dla tabel dwukolumnowych (437)
- 24.2. Korelacja (439)
25. Używanie SQL-a do agregacji w systemach OLAP (441)
- 25.1. Kwerendy a raporty (441)
- 25.2. Operatory grupowania (442)
- 25.3. Klauzula okna (445)
- 25.4. Funkcje agregujÄ…ce oparte na oknie (449)
- 25.5. Funkcje porzÄ…dkowe (449)
- 25.6. Rozszerzenia udostÄ™pniane przez producentów (452)
- 25.7. Kartka z historii (456)
26. Zaawansowane instrukcje SELECT (459)
- 26.1. Podkwerendy skorelowane (459)
- 26.2. Wrostkowe złączenia wewnętrzne (464)
- 26.3. Złączenia zewnętrzne (465)
- 26.4. Operator UNION JOIN (477)
- 26.5. Skalarne wyrażenia SELECT (479)
- 26.6. Dawna i nowa składnia złączeń (480)
- 26.7. ZÅ‚Ä…czenia z ograniczeniami (481)
- 26.8. ZÅ‚Ä…czenia T dr. Codda (490)
- 26.9. Brakujące wartości w danych (496)
- 26.10. BrakujÄ…ce i mieszane dane w wierszach (501)
CZĘŚĆ IV. STRUKTURY DANYCH W SQL-U (503)
27. Grafy w SQL-u (505)
- 27.1. Podstawowe cechy grafów (506)
- 27.2. Ścieżki w grafie (510)
- 27.3. Grafy acykliczne jako zbiory zagnieżdżone (517)
- 27.4. Model wykorzystujÄ…cy macierz sÄ…siedztwa (519)
- 27.5. Punkty w wielokÄ…cie (520)
- 27.6. Geometria taksówkowa (521)
- 27.7. Klasy równoważnoÅ›ci i kliki (524)
- 27.8. Podsumowanie (532)
28. Drzewa i hierarchie w SQL-u (533)
- 28.1. Listy sÄ…siedztwa (534)
- 28.2. Znajdowanie korzenia (535)
- 28.3. Znajdowanie liści (536)
- 28.4. OkreÅ›lanie poziomów w drzewie (536)
- 28.5. Operacje na drzewach (537)
- 28.6. Model oparty na zbiorach zagnieżdżonych (538)
- 28.7. Znajdowanie korzenia i liści (541)
- 28.8. Wyszukiwanie poddrzew (541)
- 28.9. Wyszukiwanie poziomów i Å›cieżek w drzewie (542)
- 28.10. Funkcje w modelu wykorzystującym zbiory zagnieżdżone (545)
- 28.11. Usuwanie wierzchoÅ‚ków i poddrzew (546)
- 28.12. PrzeglÄ…d funkcji dotyczÄ…cych drzew (548)
- 28.13. Wstawianie i aktualizowanie elementów drzew (554)
- 28.14. Przekształcanie list sąsiedztwa na zbiory zagnieżdżone (558)
- 28.15. PrzeksztaÅ‚canie zbiorów zagnieżdżonych na listy sÄ…siedztwa (558)
- 28.16. Porównywanie wierzchoÅ‚ków i struktur (559)
29. Kolejki (563)
- 29.1. Podstawowe instrukcje DDL (563)
- 29.2. Procedury Enqueue, Dequeue i Empty (564)
- 29.3. Zmienianie uporzÄ…dkowania (565)
- 29.4. Kolejki i matematyka (566)
- 29.5. Kolejki priorytetowe (567)
- 29.6. Kolejki FIFO i LIFO (568)
30. Macierze w SQL-u (573)
- 30.1. Tablice oparte na nazwanych kolumnach (574)
- 30.2. Tablice oparte na kolumnach z indeksem (577)
- 30.3. Operacje na macierzach w SQL-u (579)
- 30.4. Spłaszczanie tabeli do postaci tablicy (583)
- 30.5. Porównywanie tablic zapisanych jako tabele (585)
- 30.6. Inne operacje na macierzach (587)
CZĘŚĆ V. TYPOWE KWERENDY (589)
31. Partycjonowanie i agregowanie danych w kwerendach (591)
- 31.1. Pokrycie i partycje (591)
- 31.2. Zaawansowane grupowanie, agregowanie z uwzględnieniem okien i funkcje OLAP w SQL-u (596)
32. Podsekwencje, obszary, serie, luki i wyspy (613)
- 32.1. Znajdowanie podobszarów o wielkoÅ›ci (n) (614)
- 32.2. Numerowanie obszarów (615)
- 32.3. Wyszukiwanie obszarów o maksymalnej wielkoÅ›ci (617)
- 32.4. Kwerendy z granicami (621)
- 32.5. Kwerendy dotyczÄ…ce serii i sekwencji (621)
- 32.6. Sumowanie ręcznie generowanych sekwencji wartości (626)
- 32.7. Przestawianie i przesuwanie wartości na liście (629)
- 32.8. Eliminowanie luk na listach liczb (630)
- 32.9. "Zawijanie" listy liczb (630)
- 32.10. Pokrycia (631)
- 32.11. Klasy równoważnoÅ›ci i kliki (635)
33. Aukcje (645)
- 33.1. Rodzaje ofert (645)
- 33.2. Typy aukcji (646)
- 33.3. Stosowanie modeli LIFO i FIFO w magazynach (648)
- 33.4. Problem pakowania (653)
34. Dzielenie relacji (655)
- 34.1. Dzielenie z resztÄ… (656)
- 34.2. Dzielenie bez reszty (658)
- 34.3. Uwaga na temat wydajności (659)
- 34.4. Dzielenie Todda (659)
- 34.5. Dzielenie z użyciem złączeń (662)
- 34.6. Dzielenie z wykorzystaniem operatorów zbiorów (662)
- 34.7. Dzielenie Romleya (663)
- 34.8. Wyrażenia logiczne w dzieleniu relacji (666)
35. Kwerendy zwiÄ…zane z czasem (669)
- 35.1. Obliczenia matematyczne na czasie (670)
- 35.2. Kalendarze (674)
- 35.3. Szeregi czasowe (677)
- 35.4. Daty w formacie juliańskim (691)
- 35.5. Inne funkcje zwiÄ…zane z czasem (694)
- 35.6. Okresy obejmujÄ…ce wiele dni (694)
- 35.7. Reprezentowanie czasu w tabelach (698)
- 35.8. Funkcje LEAD() i LAG() (700)
- 35.9. Problemy z rokiem 2000 - przeglÄ…d historyczny (701)
CZĘŚĆ VI. KWESTIE ZWIĄZANE Z IMPLEMENTACJĄ I KODOWANIEM (707)
36. Programowanie proceduralne, mieszane i deklaratywne w SQL-u (709)
- 36.1. SÅ‚owa majÄ… znaczenie (710)
- 36.2. PorzÄ…dkowanie kodu (711)
37. Poziomy zagnieżdżania w SQL-u (717)
- 37.1. Tabele pochodne (718)
- 37.2. Reguły tworzenia nazw kolumn (719)
- 37.3. Reguły określania zasięgu (720)
- 37.4. Dostępne nazwy tabel (722)
- 37.5. Wyrażenia CTE (723)
- 37.6. Tabele z klauzulÄ… LATERAL (723)
- 37.7. Wskazówki programistyczne (725)
38. Zagnieżdżony SQL, dynamiczny SQL z interfejsem CLI oraz SQL/PSM (727)
- 38.1. Zagnieżdżony SQL (728)
- 38.2. SQL/CLI (729)
- 38.3. Dynamiczny SQL (729)
- 38.4. Historia standardu SQL/PSM (729)
- 38.5. Parametry w formacie CSV (738)
Skorowdz (744)