Details zum E-Book

Mistrzowski SQL. 61 technik pisania wydajnego kodu SQL

Mistrzowski SQL. 61 technik pisania wydajnego kodu SQL

John L. Viescas, Douglas J. Steele, Ben G. Clothier

E-book

Bazy danych umożliwiają bezpieczne przechowywanie i użytkowanie danych. Dobrze napisana baza danych pracuje szybko i wydajnie. Najlepsze relacyjne bazy danych są nierozłącznie związane z językiem SQL, zatem aby profesjonalnie podejść do tego tematu, trzeba ten język dobrze opanować. SQL może wydawać się trudny i złożony, a co więcej, dla poszczególnych baz istnieją specyficzne dialekty SQL, niemniej jednak wspaniałe zalety najlepszych baz danych dostępne są tylko dla tych, którzy opanują sztukę pisania efektywnego kodu SQL.

Niniejsza książka jest świetnym kompendium przeznaczonym dla osób o podstawowej znajomości SQL. Dzięki niej poznasz najlepsze współczesne techniki pisania w tym języku. Każdą z nich poparto realistycznymi (i przydatnymi!) przykładami. Innymi słowy, znajdziesz tu zrozumiale objaśnione sztuczki ekspertów i mnóstwo użytecznego kodu. Poza zagadnieniami składni omówiono również tematykę optymalizacji projektu bazy, a także zarządzania hierarchiami i metadanymi. Wyjątkowość tej książki polega na tym, że zawarty w niej materiał bez trudu zastosujesz do baz: IBM DB2, Microsoft Access, Microsoft SQL Server, MySQL, Oracle Database czy PostgreSQL.

Spośród 61 zagadnień ujętych w książce warto wspomnieć o:

  • zasadach projektowania modelu danych
  • sposobach na efektywne wykorzystanie indeksów i więzów integralności
  • metodach szybkiego wyszukiwania danych z zastosowaniem algebry relacyjnej
  • stosowaniu podzapytań i złączeń
  • tajnikach tabel kalkulacyjnych
  • zbiorach zagnieżdżonych i domknięciach podległości

Przekonaj się, jak szybki i wydajny może być Twój kod SQL!


John L. Viescas — zajmuje się bazami danych od ponad 45 lat. Rozwiązywał problemy baz Access i SQL Server w firmach każdej wielkości. W Applied Data Research prowadził zespół rozwijający systemy bazodanowe IBM dla komputerów mainframe.

Douglas J. Steele — od ponad 40 specjalizuje się w bazach danych i modelowaniu danych. Przez 17 lat był nagradzany tytułem MVP Microsoftu.

Ben G. Clothier — MVP od roku 2009, jest architektem rozwiązań w znanej firmie programistycznej IT Impact. Wszyscy trzej są autorami i współautorami cenionych książek o bazach danych.

Przedmowa (11)

Podziękowania (13)

O autorach (15)

O korektorach merytorycznych (17)

Wprowadzenie (19)

  • Krótka historia SQL (19)
  • Bazy danych, które wzięliśmy pod uwagę (23)
  • Przykładowe bazy (24)
  • Gdzie znaleźć przykłady (24)
  • Podsumowanie rozdziałów (25)

Rozdział 1: Projektowanie modelu danych (27)

  • Zagadnienie 1: Sprawdzenie, czy wszystkie tabele posiadają klucz główny (27)
  • Zagadnienie 2: Eliminacja nadmiarowego przechowywania danych (31)
  • Zagadnienie 3: Pozbywanie się powtarzających się grup (34)
  • Zagadnienie 4: Przechowywanie jednej właściwości w kolumnie (37)
  • Zagadnienie 5: Dlaczego przechowywanie danych wyliczeniowych zazwyczaj nie jest dobrym pomysłem (40)
  • Zagadnienie 6: Definiowanie kluczy obcych do ochrony integralności referencyjnej (44)
  • Zagadnienie 7: Upewnij się, że relacje między tabelami mają sens (48)
  • Zagadnienie 8: Gdy 3NF to za mało, normalizuj dalej (51)
  • Zagadnienie 9: Wykorzystanie denormalizacji w magazynach danych (57)

Rozdział 2: Programowalność i projektowanie indeksów (61)

  • Zagadnienie 10: Podczas tworzenia indeksów weź pod uwagę wartości NULL (62)
  • Zagadnienie 11: Rozważne tworzenie indeksów w celu minimalizacji skanowania indeksów i tabel (66)
  • Zagadnienie 12: Wykorzystanie indeksów nie tylko do filtrowania (70)
  • Zagadnienie 13: Nie przesadź z wyzwalaczami (74)
  • Zagadnienie 14: Rozważ użycie indeksu filtrowanego do wykluczenia lub zawarcia podzbioru danych (78)
  • Zagadnienie 15: Wykorzystanie deklaratywnych więzów integralności zamiast sprawdzeń programistycznych (81)
  • Zagadnienie 16: Rozpoznanie, z jakiego dialektu SQL korzysta Twój produkt, i wykorzystanie tej informacji (83)
  • Zagadnienie 17: Kiedy wykorzystywać wartości wyliczane w indeksach (86)

Rozdział 3: Gdy nie możesz zmienić projektu (91)

  • Zagadnienie 18: Wykorzystanie widoków do uproszczenia tego, czego nie możesz zmienić (91)
  • Zagadnienie 19: Wykorzystanie ETL do zmiany danych nierelacyjnych w informacje (97)
  • Zagadnienie 20: Tworzenie tabel z podsumowaniem i ich utrzymywanie (101)
  • Zagadnienie 21: Wykorzystanie zapytania UNION do przestawienia nieznormalizowanych danych (104)

Rozdział 4: Filtrowanie i wyszukiwanie danych (111)

  • Zagadnienie 22: Algebra relacyjna i jej wykorzystanie w SQL (111)
  • Zagadnienie 23: Odszukiwanie rekordów niepasujących lub brakujących (117)
  • Zagadnienie 24: Kiedy do rozwiązania problemu wykorzystać klauzulę CASE (120)
  • Zagadnienie 25: Znane techniki rozwiązywania problemów z wieloma kryteriami (124)
  • Zagadnienie 26: Dzielenie danych, gdy konieczne jest idealne dopasowanie (129)
  • Zagadnienie 27: Poprawne filtrowanie zakresu dat dla kolumny zawierającej datę i czas (132)
  • Zagadnienie 28: Pisanie zapytań w taki sposób, aby system na pewno wykorzystał indeksy (136)
  • Zagadnienie 29: Poprawne filtrowanie "prawej" strony "lewego" złączenia (140)

Rozdział 5: Agregacje (143)

  • Zagadnienie 30: Jak działa GROUP BY (143)
  • Zagadnienie 31: Rozmiar klauzuli GROUP BY (150)
  • Zagadnienie 32: Wykorzystanie GROUP BY/HAVING do rozwiązywania skomplikowanych problemów (152)
  • Zagadnienie 33: Odszukiwanie wartości maksymalnych i minimalnych bez wykorzystania GROUP BY (157)
  • Zagadnienie 34: Unikanie błędnego wyniku funkcji COUNT() podczas korzystania z OUTER JOIN (162)
  • Zagadnienie 35: Uwzględnienie rekordów z wartością zerową podczas sprawdzania HAVING COUNT(x) < jakaś liczba (165)
  • Zagadnienie 36: Wykorzystanie DISTINCT do zliczania unikalnych wartości (168)
  • Zagadnienie 37: Jak korzystać z funkcji okna (171)
  • Zagadnienie 38: Tworzenie numerów wierszy i rankingu rekordów na podstawie innych rekordów (174)
  • Zagadnienie 39: Tworzenie ruchomej agregacji (176)

Rozdział 6: Podzapytania (183)

  • Zagadnienie 40: Gdzie można wykorzystać podzapytania (183)
  • Zagadnienie 41: Różnica pomiędzy podzapytaniami skorelowanymi i nieskorelowanymi (188)
  • Zagadnienie 42: Wykorzystanie wspólnych wyrażeń tabelarycznych zamiast podzapytań (193)
  • Zagadnienie 43: Tworzenie bardziej wydajnych zapytań z wykorzystaniem złączeń zamiast podzapytań (199)

Rozdział 7: Pobieranie i analizowanie metadanych (203)

  • Zagadnienie 44: Jak korzystać z analizatora zapytań swojego systemu (203)
  • Zagadnienie 45: Pobieranie metadanych o Twojej bazie (213)
  • Zagadnienie 46: Jak działa plan zapytania (218)

Rozdział 8: Iloczyny kartezjańskie (227)

  • Zagadnienie 47: Utworzenie kombinacji rekordów pomiędzy dwiema tabelami i oznaczenie tych rekordów z drugiej tabeli, które niebezpośrednio odnoszą się do pierwszej (227)
  • Zagadnienie 48: Ustalanie rankingu rekordów na podstawie równych kwantyli (230)
  • Zagadnienie 49: Łączenie w pary rekordów tabeli ze wszystkimi innymi rekordami (235)
  • Zagadnienie 50: Wyświetlanie kategorii i liczby rekordów preferowanych (239)

Rozdział 9: Tabele kalkulacyjne (245)

  • Zagadnienie 51: Wykorzystanie tabeli kalkulacyjnej do generowania rekordów z wartością NULL na podstawie parametru (245)
  • Zagadnienie 52: Sekwencjonowanie za pomocą tabel kalkulacyjnych i funkcji okna (249)
  • Zagadnienie 53: Generowanie wielu rekordów na podstawie zakresów wartości w tabelach kalkulacyjnych (254)
  • Zagadnienie 54: Konwertowanie wartości w jednej tabeli na podstawie zakresu wartości w tabeli kalkulacyjnej (258)
  • Zagadnienie 55: Wykorzystanie tabeli z datami do uproszczenia obliczeń na datach (264)
  • Zagadnienie 56: Tworzenie tabeli kalendarza spotkań z datami zdefiniowanymi w zakresie (270)
  • Zagadnienie 57: Obracanie tabeli z wykorzystaniem tabeli kalkulacyjnej (272)

Rozdział 10: Modelowanie danych hierarchicznych (279)

  • Zagadnienie 58: Wykorzystanie modelu listy graniczenia jako punktu startu (280)
  • Zagadnienie 59: Wykorzystanie zagnieżdżonych zbiorów do wydajnego wyszukiwania przy sporadycznych aktualizacjach (282)
  • Zagadnienie 60: Wykorzystanie zmaterializowanej ścieżki, prostej w przygotowaniu i dającej ograniczone możliwości przeszukiwania (285)
  • Zagadnienie 61: Wykorzystanie domknięcia podległości dla zaawansowanego wyszukiwania (287)

Dodatek A: Typy, operatory i funkcje dla dat i czasu (293)

  • IBM DB2 (293)
  • Microsoft Access (297)
  • Microsoft SQL Server (299)
  • MySQL (302)
  • Oracle (307)
  • PostgreSQL (309)

Skorowidz (311)

  • Titel: Mistrzowski SQL. 61 technik pisania wydajnego kodu SQL
  • Autor: John L. Viescas, Douglas J. Steele, Ben G. Clothier
  • Originaler Titel: Effective SQL: 61 Specific Ways to Write Better SQL (Effective Software Development Series)
  • Übersetzung: Jakub Hubisz
  • ISBN: 978-83-283-3564-6, 9788328335646
  • Veröffentlichungsdatum: 2017-10-20
  • Format: E-book
  • Artikelkennung: missql
  • Verleger: Helion