SQL

Book description

SQL jest linqua franca dla profesjonalistów zajmujących się przetwarzaniem danych. To wyjątkowo dojrzałe narzędzie, z którego korzysta już kilka pokoleń inżynierów i programistów. Wydaje się jednak, że zbyt często ten język nie jest należycie wykorzystywany: wielu użytkowników posługuje się nim na co dzień, ale mało kto wychodzi poza stosunkowo proste zapytania. Tymczasem z możliwości nowoczesnego SQL mogą skorzystać nie tylko osoby zajmujące się bazami danych, ale także analitycy danych, analitycy biznesowi, statystycy czy osoby zajmujące się wizualizacją danych.

To drugie, gruntownie zaktualizowane wydanie nieocenionego zbioru receptur, podanych tak, aby maksymalnie ułatwić rozwiązywanie codziennych problemów związanych z budową zapytań SQL. Uwzględniono tu kilka wariantów języka SQL, zaimplementowanych w systemach Oracle, DB2, SQL Server, MySQL i PostgreSQL. W książce znalazły się propozycje zastosowania takich nowoczesnych rozwiązań jak funkcje okna, wspólne wyrażenia tablicowe i rekurencyjne zapytania hierarchiczne. Nie zabrakło receptur opracowanych specjalnie dla analityków danych, umożliwiających zastosowanie mediany odchylenia bezwzględnego i prawa Benforda, a także wyszukiwanie danych tekstowych na podstawie brzmienia słów.

W tym wydaniu znajdziesz receptury, dzięki którym:

łatwiej opanujesz podstawy SQL
dobrze wykorzystasz funkcje okna
zastosujesz wspólne wyrażenia tablicowe (CTE) do tworzenia czytelniejszych rozwiązań
zwiększysz użyteczność SQL w analizie danych
skuteczniej obsłużysz dane liczbowe i ciągi znaków

Table of contents

  1. Przedmowa
    1. Dla kogo jest przeznaczona ta książka?
    2. O czym w tej książce nie pisaliśmy?
    3. Systemy i wersje
    4. Tabele wykorzystane w tej książce
    5. Konwencje stosowane w książce
      1. Konwencje typograficzne
      2. Konwencje prezentacji kodów
    6. Podziękowania do wydania drugiego
    7. Podziękowania do wydania pierwszego
  2. Rozdział 1. Odczytywanie rekordów
    1. 1.1. Odczytywanie wszystkich wierszy i kolumn tabeli
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    2. 1.2. Odczytywanie podzbioru wierszy tabeli
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    3. 1.3. Odnajdywanie wierszy spełniających wiele warunków
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    4. 1.4. Odczytywanie podzbioru kolumn tabeli
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    5. 1.5. Definiowanie sensownych nazw kolumn
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    6. 1.6. Odwołania do aliasów kolumn w klauzuli WHERE
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    7. 1.7. Konkatenacja wartości kolumn
      1. Problem
      2. Rozwiązanie
        1. DB2, Oracle, PostgreSQL
        2. MySQL
        3. SQL Server
      3. Omówienie
    8. 1.8. Stosowanie logiki warunkowej w wyrażeniu SELECT
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    9. 1.9. Ograniczanie liczby zwracanych wierszy
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL i PostgreSQL
        3. Oracle
        4. SQL Server
      3. Omówienie
    10. 1.10. Zwracanie n losowych rekordów tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. PostgreSQL
        4. Oracle
        5. SQL Server
      3. Omówienie
    11. 1.11. Odnajdywanie wartości pustych (NULL)
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    12. 1.12. Przekształcanie wartości pustych w rzeczywiste
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    13. 1.13. Poszukiwanie wzorców
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    14. 1.14. Podsumowanie
  3. Rozdział 2. Sortowanie wyników zapytań
    1. 2.1. Zwracanie wyników zapytań posortowanych w określonym porządku
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    2. 2.2. Sortowanie zbioru wynikowego według zawartości wielu pól
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    3. 2.3. Sortowanie według podłańcuchów
      1. Problem
      2. Rozwiązanie
        1. DB2, MySQL, Oracle i PostgreSQL
        2. SQL Server
      3. Omówienie
    4. 2.4. Sortowanie wymieszanych danych alfanumerycznych
      1. Problem
      2. Rozwiązanie
        1. Oracle, SQL Server i PostgreSQL
        2. DB2
        3. MySQL
      3. Omówienie
    5. 2.5. Obsługa wartości pustych w zapytaniach sortujących
      1. Problem
      2. Rozwiązanie
        1. DB2, MySQL, PostgreSQL oraz SQL Server
        2. Oracle
      3. Omówienie
    6. 2.6. Sortowanie według klucza zależnego od danych
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    7. 2.7. Podsumowanie
  4. Rozdział 3. Praca z wieloma tabelami
    1. 3.1. Umieszczanie jednego zbioru wierszy ponad drugim
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    2. 3.2. Łączenie wzajemnie powiązanych wierszy
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    3. 3.3. Odnajdywanie wspólnych wierszy pomiędzy dwiema tabelami
      1. Problem
      2. Rozwiązanie
        1. MySQL i SQL Server
        2. DB2, Oracle i PostgreSQL
      3. Omówienie
    4. 3.4. Uzyskiwanie z jednej tabeli tylko tych wartości, które nie występują w innej tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2, PostgreSQL i SQL Server
        2. Oracle
        3. MySQL
      3. Omówienie
        1. DB2, PostgreSQL i SQL Server
        2. Oracle
        3. MySQL
    5. 3.5. Uzyskiwanie z jednej tabeli tylko tych wierszy, dla których nie istnieją odpowiedniki w innej tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2, MySQL, PostgreSQL, Oracle, SQL Server
      3. Omówienie
    6. 3.6. Dodawanie złączeń do zapytań bez konieczności modyfikowania pozostałych, już istniejących złączeń
      1. Problem
      2. Rozwiązanie
      3. Omówienie
      4. Patrz także
    7. 3.7. Określanie, czy dwie tabele zawierają te same dane
      1. Problem
      2. Rozwiązanie
        1. DB2 i PostgreSQL
        2. Oracle
        3. MySQL i SQL Server
      3. Omówienie
        1. DB2, Oracle i PostgreSQL
        2. MySQL i SQL Server
    8. 3.8. Identyfikowanie i eliminowanie iloczynów kartezjańskich
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    9. 3.9. Stosowanie złączeń w zapytaniach wykorzystujących funkcje agregujące
      1. Problem
      2. Rozwiązanie
        1. MySQL i PostgreSQL
        2. DB2, Oracle i SQL Server
      3. Omówienie
        1. MySQL i PostgreSQL
        2. DB2, Oracle i SQL Server
    10. 3.10. Stosowanie złączeń zewnętrznych w zapytaniach wykorzystujących funkcje agregujące
      1. Problem
      2. Rozwiązanie
        1. DB2, MySQL, PostgreSQL i SQL Server
      3. Omówienie
    11. 3.11. Zwracanie brakujących danych z wielu tabel
      1. Problem
      2. Rozwiązanie
        1. DB2, MySQL, PostgreSQL i SQL Server
        2. Oracle
      3. Omówienie
    12. 3.12. Wykorzystywanie wartości NULL w operacjach i porównaniach
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    13. 3.13. Podsumowanie
  5. Rozdział 4. Wstawianie, aktualizowanie i usuwanie
    1. 4.1. Wstawianie nowych rekordów
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    2. 4.2. Wstawianie wartości domyślnych
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    3. 4.3. Zastępowanie wartości domyślnych wartością NULL
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    4. 4.4. Kopiowanie wierszy pomiędzy tabelami
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    5. 4.5. Kopiowanie definicji tabel
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle, MySQL i PostgreSQL
        3. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle, MySQL i PostgreSQL
        3. SQL Server
    6. 4.6. Wstawianie wierszy do wielu tabel jednocześnie
      1. Problem
      2. Rozwiązanie
        1. Oracle
        2. DB2
        3. MySQL, PostgreSQL oraz SQL Server
      3. Omówienie
        1. Oracle
        2. DB2
        3. MySQL, PostgreSQL oraz SQL Server
    7. 4.7. Blokowanie możliwości wstawiania wartości do wybranych kolumn
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    8. 4.8. Modyfikowanie rekordów tabeli
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    9. 4.9. Aktualizowanie danych pod warunkiem istnienia w tabeli określonych wierszy
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    10. 4.10. Aktualizowanie wartości według zawartości innej tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. PostgreSQL, SQL Server i MySQL
    11. 4.11. Scalanie rekordów
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    12. 4.12. Usuwanie wszystkich rekordów z tabeli
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    13. 4.13. Usuwanie rekordów spełniających określone kryteria
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    14. 4.14. Usuwanie pojedynczych rekordów
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    15. 4.15. Usuwanie wierszy naruszających integralność referencyjną
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    16. 4.16. Usuwanie powtarzających się rekordów
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    17. 4.17. Usuwanie rekordów na podstawie danych z innej tabeli
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    18. 4.18. Podsumowanie
  6. Rozdział 5. Zapytania przetwarzające metadane
    1. 5.1. Generowanie listy tabel wchodzących w skład schematu bazy danych
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL, MySQL i SQL Server
      3. Omówienie
    2. 5.2. Generowanie listy kolumn danej tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL, MySQL i SQL Server
      3. Omówienie
    3. 5.3. Generowanie listy indeksowanych kolumn danej tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
    4. 5.4. Generowanie listy ograniczeń zdefiniowanych dla tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL, MySQL i SQL Server
      3. Omówienie
    5. 5.5. Generowanie listy kluczy obcych pozbawionych indeksów
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
    6. 5.6. Generowanie kodu języka SQL za pomocą wyrażeń tego języka
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    7. 5.7. Opisywanie widoków słownika danych w bazie danych Oracle
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    8. 5.8. Podsumowanie
  7. Rozdział 6. Praca z łańcuchami
    1. 6.1. Przechodzenie pomiędzy znakami łańcucha
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    2. 6.2. Umieszczanie apostrofów w stałych łańcuchowych
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    3. 6.3. Zliczanie wystąpień znaku w łańcuchu wejściowym
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    4. 6.4. Usuwanie z łańcucha niechcianych znaków
      1. Problem
      2. Rozwiązanie
        1. DB2, Oracle, PostgreSQL i SQL Server
        2. MySQL
      3. Omówienie
    5. 6.5. Oddzielanie danych numerycznych od danych znakowych
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. SQL Server
      3. Omówienie
    6. 6.6. Określanie, czy łańcuch jest ciągiem alfanumerycznym
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle i PostgreSQL
        4. SQL Server
      3. Omówienie
        1. DB2, Oracle, PostgreSQL i SQL Server
        2. MySQL
    7. 6.7. Określanie inicjałów na podstawie całych imion i nazwisk
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle i PostgreSQL
        4. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle i PostgreSQL
        3. MySQL
    8. 6.8. Sortowanie kolumn według wybranych fragmentów łańcuchów
      1. Problem
      2. Rozwiązanie
        1. DB2, Oracle, MySQL i PostgreSQL
        2. SQL Server
      3. Omówienie
    9. 6.9. Sortowanie danych według liczb zapisanych w łańcuchach
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
      3. Omówienie
    10. 6.10. Tworzenie listy wartości oddzielonych przecinkami z danych zawartych w wierszach tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL i SQL Server
      3. Omówienie
        1. MySQL
        2. PostgreSQL i SQL Server
        3. Oracle
    11. 6.11. Konwertowanie danych oddzielonych przecinkami na wielowartościową listę IN
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
      3. Omówienie
        1. DB2 i SQL Server
        2. MySQL
        3. Oracle
        4. PostgreSQL
    12. 6.12. Sortowanie znaków w łańcuchach w porządku alfabetycznym
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
      3. Omówienie
        1. SQL Server
        2. MySQL
        3. Oracle
        4. PostgreSQL i DB2
    13. 6.13. Identyfikowanie łańcuchów, które można traktować jak liczby
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
      3. Omówienie
        1. DB2, Oracle i PostgreSQL
        2. MySQL
    14. 6.14. Odnajdywanie n-tego podłańcucha na liście oddzielonej przecinkami
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. MySQL
        3. SQL Server
        4. Oracle
        5. PostgreSQL
    15. 6.15. Przetwarzanie adresów IP
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
      3. Omówienie
    16. 6.16. Porównywanie łańcuchów znaków na podstawie brzmienia
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    17. 6.17. Wyszukiwanie tekstu niepasującego do wzorca
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    18. 6.18. Podsumowanie
  8. Rozdział 7. Praca z liczbami
    1. 7.1. Wyznaczanie wartości średniej
      1. Problem
      2. Rozwiązanie
      3. Omówienie
      4. Patrz także
    2. 7.2. Identyfikacja minimalnej i maksymalnej wartości w kolumnie
      1. Problem
      2. Rozwiązanie
      3. Omówienie
      4. Patrz także
    3. 7.3. Sumowanie wartości składowanych w kolumnie
      1. Problem
      2. Rozwiązanie
      3. Omówienie
      4. Patrz także
    4. 7.4. Zliczanie wierszy tabeli
      1. Problem
      2. Rozwiązanie
      3. Omówienie
      4. Patrz także
    5. 7.5. Zliczanie różnych wartości w kolumnie
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    6. 7.6. Generowanie sum bieżących
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    7. 7.7. Generowanie iloczynów bieżących
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    8. 7.8. Wygładzanie serii wartości
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    9. 7.9. Wyznaczanie wartości modalnej (dominanty)
      1. Problem
      2. Rozwiązanie
        1. DB2, MySQL, PostgreSQL i SQL Server
        2. Oracle
      3. Omówienie
        1. DB2, MySQL, PostgreSQL i SQL Server
        2. Oracle
      4. Patrz także
    10. 7.10. Wyznaczanie mediany
      1. Problem
      2. Rozwiązanie
        1. DB2 i PostgreSQL
        2. SQL Server
        3. MySQL
        4. Oracle
      3. Omówienie
        1. Oracle, PostgreSQL, SQL Server i DB2
        2. MySQL
    11. 7.11. Określanie procentowego udziału w wartości łącznej
      1. Problem
      2. Rozwiązanie
        1. MySQL i PostgreSQL
        2. DB2, Oracle i SQL Server
      3. Omówienie
        1. MySQL i PostgreSQL
        2. DB2, Oracle i SQL Server
    12. 7.12. Agregowanie kolumn zawierających wartości NULL
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    13. 7.13. Wyznaczanie wartości średnich z wyłączeniem wartości spoza określonego przedziału
      1. Problem
      2. Rozwiązanie
        1. MySQL i PostgreSQL
        2. DB2, Oracle i SQL Server
      3. Omówienie
        1. MySQL i PostgreSQL
        2. DB2, Oracle i SQL Server
    14. 7.14. Wyodrębnianie liczb z łańcuchów alfanumerycznych
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle, SQL Server i PostgreSQL
        3. MySQL
      3. Omówienie
    15. 7.15. Modyfikowanie wartości uwzględnianych w sumach bieżących
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    16. 7.16. Znajdowanie wartości odstających metodą mediany odchylenia bezwzględnego
      1. Problem
      2. Rozwiązanie
        1. SQL Server
        2. PostgreSQL i DB2
        3. Oracle
        4. MySQL
      3. Omówienie
    17. 7.17. Wyszukiwanie anomalii przy użyciu prawa Benforda
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    18. 7.18. Podsumowanie
  9. Rozdział 8. Działania na datach
    1. 8.1. Dodawanie i odejmowanie dni, miesięcy i lat
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
    2. 8.2. Określanie liczby dni pomiędzy dwiema datami
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle i PostgreSQL
        3. MySQL i SQL Server
      3. Omówienie
    3. 8.3. Określanie liczby dni roboczych pomiędzy dwiema datami
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
      3. Omówienie
    4. 8.4. Określanie liczby miesięcy lub lat dzielących dwie daty
      1. Problem
      2. Rozwiązanie
        1. DB2 i MySQL
        2. Oracle
        3. PostgreSQL
        4. SQL Server
      3. Omówienie
        1. DB2, MySQL i PostgreSQL
        2. Oracle i SQL Server
    5. 8.5. Określanie liczby sekund, minut lub godzin dzielących dwie daty
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. SQL Server
        4. Oracle i PostgreSQL
      3. Omówienie
    6. 8.6. Zliczanie wystąpień poszczególnych dni tygodnia w roku
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. MySQL
        3. Oracle
        4. PostgreSQL
        5. SQL Server
    7. 8.7. Określanie różnicy dat między rekordem bieżącym a następnym
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. MySQL i SQL Server
        3. Oracle
        4. PostgreSQL
      3. Omówienie
    8. 8.8. Podsumowanie
  10. Rozdział 9. Przetwarzanie dat
    1. 9.1. Określanie, czy dany rok jest rokiem przestępnym
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
    2. 9.2. Określanie liczby dni w roku
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
    3. 9.3. Wyodrębnianie jednostek czasu z dat wejściowych
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
    4. 9.4. Określanie pierwszego i ostatniego dnia miesiąca
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
    5. 9.5. Określanie wszystkich dat występowania konkretnego dnia tygodnia w ciągu danego roku
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
    6. 9.6. Określanie dat pierwszego i ostatniego wystąpienia określonego dnia tygodnia w danym miesiącu
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2 i SQL Server
        2. Oracle
        3. PostgreSQL i MySQL
    7. 9.7. Tworzenie kalendarza
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. MySQL, PostgreSQL i SQL Server
    8. 9.8. Generowanie dat rozpoczynających i kończących poszczególne kwartały danego roku
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. PostgreSQL, MySQL i SQL Server
    9. 9.9. Określanie daty początkowej i końcowej dla danego kwartału
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
    10. 9.10. Uzupełnianie brakujących dat
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
      3. Omówienie
        1. DB2
        2. Oracle
        3. PostgreSQL
        4. MySQL
        5. SQL Server
    11. 9.11. Przeszukiwanie według określonych jednostek czasu
      1. Problem
      2. Rozwiązanie
        1. DB2 i MySQL
        2. Oracle i PostgreSQL
        3. SQL Server
      3. Omówienie
    12. 9.12. Porównywanie rekordów według określonych fragmentów dat
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle i PostgreSQL
        3. MySQL
        4. SQL Server
      3. Omówienie
    13. 9.13. Identyfikacja wzajemnie pokrywających się przedziałów czasowych
      1. Problem
      2. Rozwiązanie
        1. DB2, PostgreSQL i Oracle
        2. MySQL
        3. SQL Server
      3. Omówienie
    14. 9.14. Podsumowanie
  11. Rozdział 10. Praca z przedziałami
    1. 10.1. Lokalizowanie przedziałów w ramach ciągów wartości
      1. Problem
      2. Rozwiązanie
      3. Omówienie
        1. DB2, MySQL, PostgreSQL, SQL Server i Oracle
    2. 10.2. Odnajdywanie różnic pomiędzy wierszami należącymi do tej samej grupy lub partycji danych
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    3. 10.3. Lokalizowanie początków i końców przedziałów wartości następujących bezpośrednio po sobie
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    4. 10.4. Uzupełnianie brakujących wartości w przedziale
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. PostgreSQL i MySQL
        4. SQL Server
      3. Omówienie
    5. 10.5. Generowanie kolejnych wartości liczbowych
      1. Problem
      2. Rozwiązanie
        1. DB2 i SQL Server
        2. Oracle
        3. PostgreSQL
      3. Omówienie
        1. DB2 i SQL Server
        2. Oracle
        3. PostgreSQL
    6. 10.6. Podsumowanie
  12. Rozdział 11. Zaawansowane przeszukiwanie
    1. 11.1. Podział zbioru wynikowego na strony
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    2. 11.2. Pomijanie n wierszy tabeli
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    3. 11.3. Stosowanie logiki alternatywy w zapytaniach wykorzystujących złączenia zewnętrzne
      1. Problem
      2. Rozwiązanie
      3. Omówienie
        1. DB2, MySQL, PostgreSQL i SQL Server
    4. 11.4. Identyfikacja par odwrotnych w przetwarzanym zbiorze wierszy
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    5. 11.5. Wybieranie n pierwszych rekordów
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    6. 11.6. Odnajdywanie rekordów z największymi i najmniejszymi wartościami
      1. Problem
      2. Rozwiązanie
        1. DB2, Oracle i SQL Server
      3. Omówienie
        1. DB2, Oracle i SQL Server
    7. 11.7. Badanie „przyszłych” wierszy
      1. Problem
      2. Rozwiązanie
      3. Omówienie
      4. Patrz także
    8. 11.8. Przenoszenie wartości wierszy
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    9. 11.9. Tworzenie rankingu rezultatów
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    10. 11.10. Eliminowanie powtórzeń
      1. Problem
      2. Rozwiązanie
        1. Klasyczne rozwiązania
      3. Omówienie
        1. Klasyczne rozwiązania
    11. 11.11. Odnajdywanie wartości skoczka
      1. Problem
      2. Rozwiązanie
        1. DB2 i SQL Server
        2. Oracle
      3. Omówienie
        1. DB2 i SQL Server
        2. Oracle
    12. 11.12. Generowanie prostych prognoz
      1. Problem
      2. Rozwiązanie
        1. DB2, MySQL i SQL Server
        2. Oracle
        3. PostgreSQL
      3. Omówienie
        1. DB2, MySQL i SQL Server
        2. Oracle
        3. PostgreSQL
    13. 11.13. Podsumowanie
  13. Rozdział 12. Raportowanie i przekształcanie danych
    1. 12.1. Konwertowanie zbioru wynikowego do postaci pojedynczego wiersza
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    2. 12.2. Konwertowanie zbioru wynikowego do postaci zbioru wielowierszowego
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    3. 12.3. Odwrotna transpozycja zbioru wynikowego
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    4. 12.4. Odwrotna transpozycja zbioru danych do postaci zbioru jednokolumnowego
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    5. 12.5. Eliminowanie powtórzeń ze zbioru wynikowego
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    6. 12.6. Przekształcanie zbioru wynikowego w celu ułatwienia obliczeń na wierszach
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    7. 12.7. Tworzenie bloków danych tej samej wielkości
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    8. 12.8. Tworzenie predefiniowanej liczby bloków danych
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    9. 12.9. Tworzenie histogramów poziomych
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle, PostgreSQL i MySQL
        3. SQL Server
      3. Omówienie
    10. 12.10. Tworzenie histogramów pionowych
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    11. 12.11. Zwracanie zbiorów wynikowych bez kolumn wykorzystywanych w procesie grupowania
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    12. 12.12. Wyznaczanie prostych sum częściowych
      1. Problem
      2. Rozwiązanie
        1. DB2 i Oracle
        2. SQL Server i MySQL
        3. PostgreSQL
      3. Omówienie
        1. DB2 i Oracle
        2. SQL Server i MySQL
        3. PostgreSQL
    13. 12.13. Wyznaczanie sum częściowych dla wszystkich możliwych kombinacji wyrażeń
      1. Problem
      2. Rozwiązanie
        1. DB2
        2. Oracle
        3. SQL Server
        4. PostgreSQL
        5. MySQL
      3. Omówienie
        1. Oracle, DB2 i SQL Server
        2. MySQL
    14. 12.14. Identyfikowanie wierszy niebędących sumami częściowymi
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    15. 12.15. Konwertowanie wierszy na wersję bitową za pomocą wyrażeń CASE
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    16. 12.16. Tworzenie tzw. macierzy rzadkich
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    17. 12.17. Grupowanie wierszy według określonych jednostek czasu
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    18. 12.18. Jednoczesne agregowanie danych według różnych grup i bloków
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    19. 12.19. Agregowanie zmiennych (ruchomych) przedziałów wartości
      1. Problem
      2. Rozwiązanie
        1. DB2 i Oracle
        2. MySQL
        3. PostgreSQL i SQL Server
      3. Omówienie
        1. DB2, MySQL i Oracle
        2. PostgreSQL i SQL Server
    20. 12.20. Obracanie zbioru wynikowego zawierającego sumy częściowe
      1. Problem
      2. Rozwiązanie
        1. DB2 i Oracle
        2. SQL Server
        3. PostgreSQL
        4. MySQL
      3. Omówienie
    21. 12.21. Podsumowanie
  14. Rozdział 13. Zapytania hierarchiczne
    1. 13.1. Wyrażanie relacji rodzic – potomek
      1. Problem
      2. Rozwiązanie
        1. DB2, Oracle i PostgreSQL
        2. MySQL
        3. SQL Server
      3. Omówienie
    2. 13.2. Wyrażanie relacji potomek – rodzic – dziadek
      1. Problem
      2. Rozwiązanie
        1. DB2, PostgreSQL i SQL Server
        2. MySQL
        3. Oracle
      3. Omówienie
        1. Oracle
    3. 13.3. Tworzenie hierarchicznego widoku tabeli
      1. Problem
      2. Rozwiązanie
        1. DB2, PostgreSQL i SQL Server
        2. MySQL
        3. Oracle
      3. Omówienie
        1. DB2, MySQL, PostgreSQL i SQL Server
        2. Oracle
    4. 13.4. Odnajdywanie wszystkich wierszy potomnych dla danego wiersza rodzica
      1. Problem
      2. Rozwiązanie
        1. DB2, PostgreSQL i SQL Server
        2. Oracle
      3. Omówienie
        1. DB2, MySQL, PostgreSQL i SQL Server
        2. Oracle
    5. 13.5. Określanie wierszy występujących w rolach liści, gałęzi i korzeni
      1. Problem
      2. Rozwiązanie
        1. DB2, PostgreSQL, MySQL i SQL Server
        2. Oracle
      3. Omówienie
        1. DB2, PostgreSQL, MySQL i SQL Server
        2. Oracle
    6. 13.6. Podsumowanie
  15. Rozdział 14. Rozmaitości
    1. 14.1. Tworzenie raportów krzyżowych za pomocą operatora PIVOT systemu SQL Server
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    2. 14.2. Odtwarzanie układu raportów krzyżowych za pomocą operatora UNPIVOT systemu SQL Server
      1. Problem
      2. Rozwiązanie
    3. 14.3. Transponowanie zbiorów wynikowych za pomocą klauzuli MODEL systemu Oracle
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    4. 14.4. Wyodrębnianie z łańcucha elementów o nieustalonym położeniu
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    5. 14.5. Znajdowanie liczby dni w roku (rozwiązanie alternatywne tylko dla systemu Oracle)
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    6. 14.6. Przeszukiwanie danych wejściowych pod kątem zawierania łańcuchów alfanumerycznych
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    7. 14.7. Konwertowanie liczb całkowitych na system dwójkowy w systemie Oracle
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    8. 14.8. Obracanie zbioru wynikowego z wartościami rankingowymi
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    9. 14.9. Wstawianie nagłówków kolumn w dwukrotnie obróconych zbiorach wynikowych
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    10. 14.10. Konwertowanie podzapytań skalarnych na podzapytania złożone w systemie Oracle
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    11. 14.11. Przenoszenie uszeregowanych danych do osobnych wierszy
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    12. 14.12. Wyznaczanie procentowych stosunków poszczególnych wartości względem sumy wszystkich wartości
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    13. 14.13. Testowanie występowania wartości w grupie
      1. Problem
      2. Rozwiązanie
      3. Omówienie
    14. 14.14. Podsumowanie
  16. Dodatek A Przypomnienie funkcji okna
    1. Grupowanie
      1. Definicja grupy w języku SQL
        1. Grupy nie mogą być puste
        2. Grupy i różne wartości
        3. Funkcja COUNT nigdy nie zwraca zera
      2. Paradoksy
      3. Relacje łączące klauzule SELECT i GROUP BY
    2. Tworzenie okien
      1. Prosty przykład
      2. Kolejność przetwarzania składników zapytań
      3. Partycje
      4. Skutki występowania wartości NULL
      5. Kiedy kolejność ma znaczenie…
      6. Klauzula ramkowania
      7. Ostatnie słowo o ramkowaniu
      8. Czytelność + Wydajność = Moc
      9. Generowanie zbiorów bazowych
  17. Dodatek B Wyrażenia tablicowe (CTE)
    1. Podzapytania
    2. Wyrażenia tablicowe
    3. Podsumowanie
      1. O autorach
      2. Kolofon

Product information

  • Title: SQL
  • Author(s): Anthony Molinaro
  • Release date: August 2021
  • Publisher(s): Helion
  • ISBN: 9788328378483