Spis treści. Spis treści 3



Podobne dokumenty
SQL. Leksykon kieszonkowy

Bazy danych. Andrzej Łachwa, UJ, /15

Projektowanie bazy danych

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

Harmonogramowanie projektów Zarządzanie czasem

Użytkowanie elektronicznego dziennika UONET PLUS.

API transakcyjne BitMarket.pl

Język SQL : przyjazny podręcznik / Larry Rockoff. Wyd. 2. Gliwice, cop Spis treści

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

Kancelaris - Zmiany w wersji 2.50

DE-WZP JJ.3 Warszawa,

Gdynia: Księgowość od podstaw Numer ogłoszenia: ; data zamieszczenia: OGŁOSZENIE O ZAMÓWIENIU - usługi

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

PODRĘCZNIK UŻYTKOWNIKA

2.Prawo zachowania masy

Komentarz technik ochrony fizycznej osób i mienia 515[01]-01 Czerwiec 2009

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

PERSON Kraków

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Baza danych. Baza danych jest to zbiór danych powi zanych mi dzy sob pewnymi zale no ciami.

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Zmiany w wersji 1.18 programu VinCent Office.

Opis modułu analitycznego do śledzenia rotacji towaru oraz planowania dostaw dla programu WF-Mag dla Windows.

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego ZAPYTANIE OFERTOWE

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Instrukcja programu PControl Powiadowmienia.

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

1 Jeżeli od momentu złożenia w ARR, odpisu z KRS lub zaświadczenia o wpisie do ewidencji działalności

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Ogłoszenie Zarządu o zwołaniu Nadzwyczajnego Walnego Zgromadzenia Akcjonariuszy Yellow Hat S.A. z siedzibą w Warszawie

Regulamin rekrutacji w projekcie,,grupa PoMocowa SENIORÓW - usługi społeczne osób starszych dla osób starszych

Bojszowy, dnia r. Znak sprawy: GZOZ/P1/2010 WYJAŚNIENIE TREŚCI SIWZ

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Moduł. Rama 2D suplement do wersji Konstruktora 4.6

Sprawozdanie z działalności Rady Nadzorczej TESGAS S.A. w 2008 roku.

Konfiguracja programu Outlook 2007 do pracy z nowym serwerem poczty (Exchange)

Spring MVC Andrzej Klusiewicz 1/18

1. Podstawy budowania wyra e regularnych (Regex)

Projekty uchwał na Nadzwyczajne Walne Zgromadzenie i3d S.A. z siedzibą w Gliwicach zwołane na dzień 10 grudnia 2013 r.:

PLAN POŁĄCZENIA SPÓŁEK

Procedura weryfikacji badania czasu przebiegu 1 paczek pocztowych

Wtedy wystarczy wybrać właściwego Taga z listy.

PROGRAM ZAPEWNIENIA I POPRAWY JAKOŚCI AUDYTU WEWNĘTRZNEGO

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Nowe funkcjonalności

InsERT GT Własne COM 1.0

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Poznań: Usługa ochrony szpitala Numer ogłoszenia: ; data zamieszczenia: OGŁOSZENIE O ZAMÓWIENIU - usługi

Projektowanie Systemów Inf.

Wiedza niepewna i wnioskowanie (c.d.)

Obowiązuje od 30 marca 2015 roku

GENERALNY INSPEKTOR OCHRONY DANYCH OSOBOWYCH

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Jakie są te obowiązki wg MSR 41 i MSR 1, a jakie są w tym względzie wymagania ustawy o rachunkowości?

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

2) Drugim Roku Programu rozumie się przez to okres od 1 stycznia 2017 roku do 31 grudnia 2017 roku.

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Promocja i identyfikacja wizualna projektów współfinansowanych ze środków Europejskiego Funduszu Społecznego

UCHWAŁA NR./06 RADY DZIELNICY PRAGA PÓŁNOC M. ST. WARSZAWY

Warunki Oferty PrOmOcyjnej usługi z ulgą

Aneks nr 8 z dnia r. do Regulaminu Świadczenia Krajowych Usług Przewozu Drogowego Przesyłek Towarowych przez Raben Polska sp. z o.o.

Konfiguracja historii plików

Zarządzanie Zasobami by CTI. Instrukcja

Zasady wizualizacji PROW

K P K P R K P R D K P R D W

Nowości w module: BI, w wersji 9.0

WYJASNIENIA I MODYFIKACJA SPECYFIKACJI ISTOTNYCH WARUNKÓW ZAMÓWIENIA

Ogłoszenie o zwołaniu Zwyczajnego Walnego Zgromadzenia Spółki MOJ S.A. z siedzibą w Katowicach na dzień 27 czerwca 2016 r.

4.3. Struktura bazy noclegowej oraz jej wykorzystanie w Bieszczadach

Plan połączenia ATM Grupa S.A. ze spółką zależną ATM Investment Sp. z o.o. PLAN POŁĄCZENIA

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

Olsztyn, dnia 30 lipca 2014 r. Poz UCHWAŁA NR LIII/329/2014 RADY GMINY JONKOWO. z dnia 26 czerwca 2014 r.

Microsoft Management Console

INSTRUKCJA WYPEŁNIANIA SPRAWOZDANIA CZĘŚCIOWEGO LUB KOŃCOWEGO

Warszawa: Dostawa kalendarzy na rok 2017 Numer ogłoszenia: ; data zamieszczenia: OGŁOSZENIE O ZAMÓWIENIU - dostawy

JAK INWESTOWAĆ W ROPĘ?

REGULAMIN przeprowadzania okresowych ocen pracowniczych w Urzędzie Miasta Mława ROZDZIAŁ I

Program Google AdSense w Smaker.pl

14.Rozwiązywanie zadań tekstowych wykorzystujących równania i nierówności kwadratowe.

MUP.PK.III.SG /08 Lublin, dnia r.

Warszawska Giełda Towarowa S.A.

INSTRUKCJA WebPTB 1.0

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Jak korzystać z Group Tracks w programie Cubase na przykładzie EWQLSO Platinum (Pro)

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Podstawa prawna: Ustawa z dnia 15 lutego 1992 r. o podatku dochodowym od osób prawnych (t. j. Dz. U. z 2000r. Nr 54, poz. 654 ze zm.

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

Praca na wielu bazach danych część 2. (Wersja 8.1)

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Szczegółowe zasady obliczania wysokości. i pobierania opłat giełdowych. (tekst jednolity)

Transkrypt:

Spis treści Wprowadzenie...n... 7 Struktura książki...ą...8 Informacje zwrotne...ą...9 Konwencje typograficzne...ą...9 Podziękowania...ą...10 Przykłady kodu...ą...11 Funkcje...n... 13 Funkcje przetwarzania daty...ą...15 Funkcje liczbowe i matematyczne...ą...22 Funkcje trygonometryczne...ą...25 Funkcje tekstowe...ą...26 Pozostałe funkcje...ą...33 Funkcje grupowania i sumowania... 34 Funkcje agregujące...ą...34 Klauzula GROUP BY...ą...35 Użyteczne techniki stosowania klauzuli GROUP BY...38 Klauzula HAVING...ą...39 Rozszerzenia klauzuli GROUP BY (Oracle)...41 Rozszerzenia klauzuli GROUP BY (SQL Server)...44 Konwersja typów danych...n 46 Funkcja ANSI/ISO CAST...ą...47 Funkcja ANSI/ISO EXTRACT...ą...48 Konwersja daty i czasu (Oracle)...ą...49 Konwersja wartości liczbowych (Oracle)...54 Pozostałe funkcje konwersji (Oracle)...ą57 Konwersja daty i czasu (DB2)...ą...58 Konwersja wartości liczbowych (DB2)...62 Inne funkcje konwersji (DB2)...ą...64 Konwersja daty i czasu (SQL Server)...ą64 Konwersja wartości liczbowych (SQL Server)...69 Spis treści 3

Inne funkcje konwersji (SQL Server)...ą.71 Konwersja daty i czasu (MySQL)...ą...72 Konwersja wartości liczbowych (MySQL)...77 Literały...n... 79 Literały tekstowe...ą...79 Literały liczbowe...ą...81 Literały daty i czasu...ą...81 Pobieranie danych...n... 83 Klauzula SELECT...ą...83 Słowa kluczowe ALL i DISTINCT...ą...93 Klauzula FROM...ą...95 Klauzula WHERE...ą...99 Klauzula GROUP BY...ą...99 Klauzula HAVING...ą...100 Klauzula ORDER BY...ą...100 Podzapytania...n... 101 Klauzula WITH...ą...102 Klauzula WITH i podzapytania skorelowane...104 Predykaty...n... 106 Predykaty porównań grupowych...ą...107 Większa liczba wartości po lewej stronie porównania (Oracle)...109 Predykaty EXISTS...ą...110 Predykaty IN...ą...110 Predykaty BETWEEN...ą...111 Predykaty LIKE...ą...112 Scalanie danych...n... 113 Uaktualnianie danych...n... 115 Proste uaktualnianie...ą...115 Nowe wartości pozyskiwane z podzapytań...116 Uaktualnianie danych za pośrednictwem kursora...117 Uaktualnianie danych za pomocą widoków i podzapytań...117 Uaktualnianie partycji (Oracle)...ą...118 Zwracanie uaktualnionych danych (Oracle)...118 Klauzula FROM instrukcji UPDATE (SQL Server)...119 4 SQL. Leksykon kieszonkowy

Unie...n... 120 Operacja UNION i UNION ALL...ą...120 Kolejność przetwarzania instrukcji...ą..122 Operacja EXCEPT (lub MINUS)...ą...123 Operacja INTERSECT...ą...125 Usuwanie danych...n... 127 Usuwanie wszystkich wierszy...ą...129 Usuwanie danych z widoków i podzapytań...130 Usuwanie danych z partycji (Oracle)...130 Zwracanie usuwanych danych (Oracle)...131 Podwójna klauzula FROM (SQL Server)...132 Wartości NULL...n... 133 Predykaty dla wartości NULL...ą...133 Wartości NULL w wyrażeniach CASE...135 Funkcje operujące wartościami NULL (Oracle)...135 Funkcje operujące wartościami NULL (DB2)...136 Funkcje operujące wartościami NULL (SQL Server)...137 Funkcje operujące wartościami NULL (MySQL)...137 Wprowadzanie danych...n... 138 Wprowadzanie pojedynczych wierszy...138 Obiekty docelowe podczas wprowadzania danych...140 Wprowadzanie danych do podzapytań...140 Wprowadzanie danych za pomocą ścieżek bezpośrednich (Oracle)...141 Zwracanie wprowadzonych wartości (Oracle)...142 Wprowadzenie danych do wielu tabel (Oracle)...143 Wyrażenia CASE...n... 145 Proste wyrażenia CASE...ą...145 Przeszukiwane wyrażenia CASE...ą...146 Wyrażenia regularne...n... 148 Wyrażenia regularne (Oracle)...ą...148 Wyrażenia regularne (SQL Server)...ą..151 Wyrażenia regularne (MySQL)...ą...151 Spis treści 5

Zapytania hierarchiczne...n 153 Klauzula WITH rekurencyjnych zapytań ANSI/ISO (DB2)...153 Składnia klauzuli CONNECT BY (Oracle)...155 Zapytania rekurencyjne...n.. 161 Zapytania retrospektywne (Oracle)... 161 Zarządzanie transakcjami... 162 Tryb automatycznego zatwierdzania...163 Rozpoczynanie transakcji...ą...164 Kończenie transakcji...ą...167 Przerwanie transakcji...ą...169 Przerwanie transakcji i powrót do wyznaczonego punktu...170 Złączanie tabel...n... 171 Koncepcja złączenia...ą...171 Złączenia bezwarunkowe...ą...173 Złączenia wewnętrzne...ą...174 Złączenia wyznaczane za pomocą nierówności...178 Złączenia zewnętrzne...ą...179 Skorowidz...n... 185 6 SQL. Leksykon kieszonkowy

Zmiana wielkości liter ciągu tekstowego Aby zamienić litery ciągu tekstowego na wielkie lub małe, należy zastosować odpowiednio funkcje lub. Serwer Oracle udostępnia również funkcję, której zadaniem jest ustanowienie wielkiej litery na początku każdego słowa ciągu tekstowego i zapewnienie, że pozostałe litery każdego słowa będą małymi literami. Baza danych DB2 obsługuje również inne nazwy dla funkcji i i. Pozostałe funkcje Wśród funkcji bazy danych Oracle są dostępne dwie, które nie spełniają kryteriów żadnej z wymienionych kategorii. Nie oznacza to jednak, że są mniej użyteczne. Funkcja ta zwraca największą wartość z listy wprowadzonych wartości. Danymi wejściowymi mogą tu być zarówno liczby, jak i daty bądź ciągi tekstowe. Funkcja ta zwraca najmniejszą wartość z listy wprowadzonych wartości. Danymi wejściowymi mogą tu być zarówno liczby, jak i daty bądź ciągi tekstowe. Funkcje grupowania i sumowania 34

Funkcje grupowania i sumowania Język SQL umożliwia grupowanie wierszy w zbiory, a następnie zestawianie uzyskanych wyników na wiele sposobów. Ostatecznie zwracany jest pojedynczy wiersz utworzony na bazie takiego zbioru. Uzyskanie wspomnianego rezultatu wymaga zastosowania klauzul lub oraz funkcji agregujących. Funkcje agregujące Funkcje agregujące pobierają jako dane wejściowe zbiór wartości, po jednej z każdego wiersza, i zwracają jedną wartość wyniku. Jedną z najczęściej wykorzystywanych funkcji agregujących jest. Jej zadanie polega na zliczaniu wszystkich niepustych wartości kolumny. Przedstawiona poniżej instrukcja zlicza wszystkie odsyłacze zapisane w tabeli. Dołączenie do polecenia słów kluczowych i pozwala na określenie, czy wszystkie niepuste (różne od ) wartości zostaną wykorzystane jako dane wejściowe oraz czy odrzucone zostaną wartości powtarzające się. Słowo kluczowe jest dołączane w sposób domyślny instrukcja jest tożsama z instrukcją. Funkcja ma szczególny charakter, gdyż umożliwia przekazanie jako argumentu symbolu gwiazdki ( ). Funkcje grupowania i sumowania 35

W przypadku zastosowania instrukcji zliczaniu podlegają wiersze, a nie wartości kolumn. Fakt występowania wartości w kolumnie nie ma tu żadnego znaczenia, ponieważ odrzucanie wartości pustych występuje jedynie podczas zliczania wartości kolumn, a nie wierszy jako całości. W tabeli 3. zostały zestawione najczęściej wykorzystywane funkcje agregujące. Większość producentów baz danych implementuje wszystkie z wymienionych funkcji. Na szczególną uwagę zasługuje w tym przypadku firma Oracle, która wyposaża swoje produkty w bardzo wiele funkcji agregujących, choć składnia ich wywołania często jest dość skomplikowana. Więcej informacji na ten temat znajduje się w dokumentacji serwera. Klauzula GROUP BY Użyteczność funkcji agregujących jest zauważalna dopiero wówczas, gdy zastosuje się je do grupy wierszy, a nie do wszystkich wierszy tabeli. W tym celu trzeba zastosować klauzulę. Kolejna z prezentowanych instrukcji umożliwia wyznaczenie liczby atrakcji turystycznych w każdym mieście. Tabela 3. Najczęściej wykorzystywane funkcje agregujące Funkcja Opis Zwraca wartość średnią ze zbioru liczb Zlicza wartości różne od danego zbioru Zwraca największą wartość ze zbioru Zwraca wartość mediany (wartość środkową) danego zbioru liczb. Zwracana wartość może być wynikiem interpolacji. Funkcja jest dostępna jedynie w bazie danych Oracle 36 SQL. Leksykon kieszonkowy

Zwraca najmniejszą wartość ze zbioru Zwraca wartość odchylenia standardowego dla zbioru wartości. W serwerze SQL Server w nazwie funkcji występuje tylko jedna litera Zwraca wartość sumy liczb zbioru Zwraca wartość wariancji dla zbioru wartości. W serwerze SQL Server funkcja ta ma nazwę. Nie występuje natomiast w bazach danych DB2 i MySQL Podczas wykonywania tego typu zapytania baza danych w pierwszej kolejności sortuje wiersze, a następnie grupuje je zgodnie z wyrażeniem określonym w klauzuli. Grupy mogą się niekiedy składać tylko z jednego wiersza. Grupowanie wymaga zazwyczaj przeprowadzenia pewnej formy sortowania danych. Niemniej, jak można zauważyć na powyższym przykładzie, sortowanie musi być wykonywane jedynie do pewnego etapu do chwili pogrupowania stosownych wierszy. Po utworzeniu grup każda funkcja agregująca jest wykonywana tylko raz na danej grupie. Wartość zastosowanej w tym przypadku funkcji jest wyznaczana oddzielnie dla każdej grupy. Funkcje grupowania i sumowania 37

Wszystkie kolumny, którym nie odpowiada żadna wartość funkcji agregującej, zostały zastąpione jednym wpisem. W praktyce sprowadzenie wielu wierszy do jednego wiersza wartości zagregowanych oznacza, że funkcja agregująca musi zostać zastosowana w odniesieniu do dowolnej kolumny nie objętej klauzulą. Użyteczne techniki stosowania klauzuli GROUP BY W dalszej części tego podrozdziału zostały opisane niektóre, częściej stosowane techniki budowania zapytań z klauzulą. 38 SQL. Leksykon kieszonkowy

Zmniejszenie liczby kolumn w klauzuli GROUP BY Niekiedy zachodzi konieczność umieszczenia danej kolumny w sekcji zapytania z klauzulą, ale bez umieszczania tej kolumny w klauzuli. Jako przykład można rozważyć przedstawione poniżej zapytanie, w którym nazwa miasta wynika z identyfikatora miasta. W takim przypadku, zamiast grupowania względem dwóch kolumn, znacznie korzystniejsze będzie przeprowadzenie grupowania jedynie względem kolumny. Skróceniu ulega w ten sposób klucz sortowania. Sortowanie grupujące będzie prawdopodobnie wykonane znacznie szybciej i zużyje mniej przestrzenni dyskowej. Jednym ze sposobów osiągnięcia zamierzonego efektu jest zastosowanie następującego zapytania. Kolumna została usunięta z klauzuli. Jednocześnie do sekcji zostało dodane wywołanie funkcji. Dzięki temu spełnione jest założenie, że wszystkie wyrażenia nie objęte klauzulą muszą być uwzględnione w funkcji agregującej. W rezultacie otrzymujemy tak samo użyteczną wartość nazwy miasta. Wynika to z faktu, że wszystkie nazwy miast należące do grupy miast o jednakowej wartości są takie same. Funkcja może więc zwrócić tylko tę jedną nazwę. Funkcje grupowania i sumowania 39

Grupowanie przed złączeniem W prezentowanych wcześniej przykładach zastosowania klauzuli definiowane były złączenia wykonywane przed operacją grupowania. Wykorzystanie podzapytań umożliwia wykonanie zapytania w inny sposób, tak by złączenie zostało wykonane po zakończeniu działania funkcji agregującej. Zaletą zastosowania tej wersji zapytania jest to, że złączenie jest wykonywane na znacznie mniejszej liczbie wierszy, niż gdyby było przeprowadzone przed agregacją danych. Dodatkową korzyścią jest zmniejszenie ilości potrzebnej przestrzeni dyskowej oraz pamięci operacyjnej. Wiersze poddawane grupowaniu nie zawierają bowiem żadnych informacji pochodzących z tabeli. Klauzula HAVING Klauzula nakłada ograniczenia na wiersze zwracane przez zapytanie zawierające klauzulę. Na przykład w celu pobrania nazw tylko tych miast, w których występuje więcej niż jedna atrakcja turystyczna, można zastosować instrukcję: Nigdy nie należy umieszczać w klauzuli warunku, który nie obejmuje funkcji agregacji. Rozważmy kolejne zapytanie, które 40 SQL. Leksykon kieszonkowy

udostępnia informacje na temat liczby atrakcji turystycznych Keweenaw Peninsula. Znacznie efektywniejsze jest zastosowane zapytania, w którym ograniczenia nakładane na nazwy miast są wyrażone za pomocą klauzuli. Klauzula zmniejsza liczbę wierszy podawanych działaniu klauzuli. Konieczne jest więc zapisanie mniejszej liczby wierszy i wykonanie mniejszej liczby operacji funkcji agregującej. Klauzula znajduje zastosowanie w przypadku filtrowania wierszy będących wynikiem operacji, jeśli filtrowaniu podlegają agregowane wartości. Rozszerzenia klauzuli GROUP BY (Oracle) W bazach danych Oracle zostało zaimplementowanych kilka użytecznych rozszerzeń klauzuli. Należą do nich:, oraz. Funkcje poszczególnych opcji zostały omówione w kolejnych podrozdziałach. Dodatkowo opisane zostały również pewne funkcje skalarne, które ułatwiają przetwa- Funkcje grupowania i sumowania 41

rzanie danych pozyskanych w wyniku zastosowania wspomnianych rozszerzeń. Rozszerzenie ROLLUP (Oracle) Rozszerzenie klauzuli o słowo kluczowe powoduje dodanie wiersza podsumowania do każdej grupy danych. Poniżej został zamieszczony wynik wykonania instrukcji. Wiersze pogrubione zostały wygenerowane w wyniku użycia opcji. Dołączenie klauzuli spowodowało wygenerowanie standardowego podsumowania względem miast. Słowo kluczowe odpowiada za dodanie podsumowań na wszystkich pozostałych poziomach wygenerowanych dla poszczególnych hrabstw i dla całego zestawienia. Hrabstwo Marquette ma pięć atrakcji turystycznych, natomiast całe zestawienie informuje o dwudziestu atrakcjach. 42 SQL. Leksykon kieszonkowy

Opcja nie musi być stosowana w odniesieniu do wszystkich kolumn klauzuli. Przykładowy, przedstawiony poniżej, fragment zapytania umożliwia zliczenie atrakcji wszystkich miast i wszystkich hrabstw, ale nie powoduje wygenerowania ogólnej wartości sumy, widocznej w poprzednim przykładzie. Rozszerzenie CUBE (Oracle) Dodanie do instrukcji słowa kluczowego powoduje wygenerowanie podsumowań dla wszystkich możliwych kombinacji kolumn wymienionych w zapytaniu oraz dołączenie ogólnej wartości sumy. Rozszerzenie GROUPING SETS (Oracle) Wprowadzona w bazie danych Oracle 9i opcja umożliwia wyznaczanie dowolnych obszarów grupowania. Funkcje grupowania i sumowania 43

Zastosowane w tym przykładzie rozszerzenie powoduje wykonanie funkcji agregującej dla hrabstw i miast. Uzyskanie takiego samego wyniku bez wykorzystania opcji wymagałoby zrealizowania dwóch zapytań. Funkcje związane z klauzulą GROUP BY (Oracle) Jako kolejne zostaną przedstawione funkcje, których stosowanie wraz z dostępnymi w bazie Oracle rozszerzeniami klauzuli bywa bardzo użyteczne. Funkcja ta zwraca wartość 1, jeśli wynikiem operacji, lub była wartość. W przeciwnym przypadku wynikiem jest wartość 0. Działanie tej funkcji jest podobne do funkcji. Różnica polega na tym, że w jej wyniku zwracany jest wektor 44 SQL. Leksykon kieszonkowy

bitów o wartościach 1 lub 0, zależnych od tego, czy odpowiadające im kolumny zawierają wartości, wygenerowane przez rozszerzenia klauzuli. Funkcja ta jest dostępna w bazie danych Oracle w wersji 9i i kolejnych. Funkcja ta umożliwia wyznaczenie duplikowanych wierszy, generowanych przez opcje, i. Wynikiem jej działania jest wartość z przedziału od 0 do n 1, odpowiadająca każdemu wierszowi zbioru o n duplikatach. Poprzez wykorzystanie zwracanej przez funkcję wartości można zdecydować o tym, ile zduplikowanych wierszy powinno pozostać w wyniku. Aby wyeliminować wszystkie duplikaty, wystarczy zastosować klauzulę. Rozszerzenia klauzuli GROUP BY (SQL Server) W serwerze SQL, podobnie jak w bazie danych Oracle, również zaimplementowane zostały rozszerzenia i. Niestety sposób ich wykorzystania jest nieco odmienny i mniej elastyczny. Rozszerzenie ROLLUP (SQL Server) Opcja dodaje wiersz podsumowania dla każdej grupy danych. Funkcje grupowania i sumowania 45

Uzyskany rezultat jest identyczny z prezentowanym podczas omawiania rozszerzenia bazy danych Oracle. Serwer SQL Server nie pozwala jednak na stosowanie opcji jedynie w odniesieniu do wybranych kolumn klauzuli. Rozszerzenie obejmuje wszystkie kolumny lub nie obejmuje żadnej z nich. Rozszerzenie CUBE (SQL Server) Opcja generuje podsumowania dla wszystkich kombinacji kolumn ujętych w klauzuli. Dodaje także ogólne podsumowanie. Uzyskany wynik nie odbiega w żaden sposób od rezultatu wykonania zapytania z opcją w bazie danych Oracle (opisanego wcześniej). Podobnie jak w przypadku rozszerzenia, nie można stosować opcji jedynie w odniesieniu do wybranych kolumn klauzuli. 46 SQL. Leksykon kieszonkowy