Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00137 008292 11000382 na godz. na dobę w sumie
SQL. Leksykon kieszonkowy - książka
SQL. Leksykon kieszonkowy - książka
Autor: Liczba stron: 192
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-596-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> sql - programowanie
Porównaj ceny (książka, ebook, audiobook).

Podręczna pomoc dla programistów aplikacji bazodanowych

Język SQL jest podstawowym narzędziem programistów i operatorów baz danych. Posiada stosunkowo niewiele instrukcji, a jednak za jego pomocą można wykonywać wszystkie operacje na danych, tabelach i bazach. Często jednak podczas pracy trzeba przypomnieć sobie składnię instrukcji, znaczenie jej parametrów lub sposób korzystania z niej. Sprawę dodatkowo komplikuje to, że implementacje języka SQL w różnych systemach zarządzania bazami danych różnią się nieznacznie od siebie. Przetrząsanie kilkusetstronicowej dokumentacji zwykle zajmuje zbyt wiele czasu. Programistom, pracującym najczęściej pod presją czasu, potrzebne jest podręczne źródło podstawowych informacji.

Taką właśnie rolę pełni książka 'SQL. Leksykon kieszonkowy'. Zgromadzono w niej opisy poleceń języka w implementacjach dla najpopularniejszych systemów baz danych -- Oracle, DB2, MS SQL Server oraz MySQL. Opis każdego z poleceń jest zilustrowany przykładami, co dodatkowo ułatwia zrozumienie jego zastosowania. W książce opisano:

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl SQL. Leksykon kieszonkowy Autor: Jonathan Gennick T³umaczenie: Tomasz Pêdziwiatr ISBN: 83-7361-596-2 Tytu³ orygina³u: SQL Pocket Guide Format: B5, stron: 192 Podrêczna pomoc dla programistów aplikacji bazodanowych Jêzyk SQL jest podstawowym narzêdziem programistów i operatorów baz danych. Posiada stosunkowo niewiele instrukcji, a jednak za jego pomoc¹ mo¿na wykonywaæ wszystkie operacje na danych, tabelach i bazach. Czêsto jednak podczas pracy trzeba przypomnieæ sobie sk³adniê instrukcji, znaczenie jej parametrów lub sposób korzystania z niej. Sprawê dodatkowo komplikuje to, ¿e implementacje jêzyka SQL w ró¿nych systemach zarz¹dzania bazami danych ró¿ni¹ siê nieznacznie od siebie. Przetrz¹sanie kilkusetstronicowej dokumentacji zwykle zajmuje zbyt wiele czasu. Programistom, pracuj¹cym najczêġciej pod presj¹ czasu, potrzebne jest podrêczne ĥród³o podstawowych informacji. Tak¹ w³aġnie rolê pe³ni ksi¹¿ka „SQL. Leksykon kieszonkowy”. Zgromadzono w niej opisy poleceñ jêzyka w implementacjach dla najpopularniejszych systemów baz danych — Oracle, DB2, MS SQL Server oraz MySQL. Opis ka¿dego z poleceñ jest zilustrowany przyk³adami, co dodatkowo u³atwia zrozumienie jego zastosowania. W ksi¹¿ce opisano: • Funkcje grupowania i sumowania • Funkcje przetwarzaj¹ce dane • Polecenie SELECT wraz z podzapytaniami i funkcjami agreguj¹cymi • Sposoby uaktualniania i usuwania danych • Metody wprowadzania danych • Zarz¹dzanie transakcjami • Z³¹czenia tabel 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 722 4 lub .19 4. 722 4 EKæIAVGMUVQY[ .19 4 EKæIAVGMUVQY[ Serwer Oracle udostępnia również funkcję +0+6 #2 EKæIAVGMUVQY[ , 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 722 4 i .19 4 — 7 #5 i . #5 . 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. )4 #6 56 YCTVQħè=YCTVQħè? Funkcja ta zwraca największą wartość z listy wprowadzo- nych wartości. Danymi wejściowymi mogą tu być zarówno liczby, jak i daty bądź ciągi tekstowe. . #56 YCTVQħè=YCTVQħè? Funkcja ta zwraca najmniejszą wartość z listy wprowadzo- nych 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 zastosowa- nia klauzul )4172$; lub *#8+0) 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 1706. Jej zadanie polega na zliczaniu wszystkich niepustych war- tości kolumny. Przedstawiona poniżej instrukcja zlicza wszystkie odsyłacze zapisane w tabeli CVTCMELG. 5 . 6 1706 WTNACVTCMELK (41/CVTCMELG Dołączenie do polecenia słów kluczowych #.. i +56+0 6 pozwala na określenie, czy wszystkie niepuste (różne od 07..) wartości zostaną wykorzystane jako dane wejściowe oraz czy odrzucone zostaną wartości powtarzające się. 5 . 6 1706 +56+0 6KFAOKCUVC   1706 #..KFAOKCUVC (41/CVTCMELG Słowo kluczowe #.. jest dołączane w sposób domyślny — instruk- cja 1706 Y[TCľGPKG jest tożsama z instrukcją 1706 #..Y[TCľGPKG . Funkcja 1706 ma szczególny charakter, gdyż umożliwia prze- kazanie jako argumentu symbolu gwiazdki ( ). 5 . 6 1706 (41/CVTCMELG Funkcje grupowania i sumowania 35 W przypadku zastosowania instrukcji 1706 zliczaniu podle- gają wiersze, a nie wartości kolumn. Fakt występowania wartości 07.. w kolumnie nie ma tu żadnego znaczenia, ponieważ od- rzucanie 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ę za- sł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ów- czas, gdy zastosuje się je do grupy wierszy, a nie do wszystkich wierszy tabeli. W tym celu trzeba zastosować klauzulę )4172$;. Kolejna z prezentowanych instrukcji umożliwia wyznaczenie liczby atrakcji turystycznych w każdym mieście. 5 . 6OPCYCAOKCUVC 1706 (41/OKCUVCO+00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC )4172$;OPCYCAOKCUVC Tabela 3. Najczęściej wykorzystywane funkcje agregujące Funkcja #8) Z 1706 Z /#: Z / +#0 Z Opis Zwraca wartość średnią ze zbioru liczb Zlicza wartości różne od 07.. 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 /+0 Z 56 8 Z 57/ Z 8#4+#0 Z Zwraca najmniejszą wartość ze zbioru Zwraca wartość odchylenia standardowego dla zbioru wartości. W serwerze SQL Server w nazwie funkcji 56 8 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ę 8#4. Nie występuje natomiast w bazach danych DB2 i MySQL Podczas wykonywania tego typu zapytania baza danych w pierw- szej kolejności sortuje wiersze, a następnie grupuje je zgodnie z wyrażeniem określonym w klauzuli )4172$;. /WPKUKPI2KEVWTGF4QEMU /WPKUKPI8CNNG[5RWT /WPKUKPI5JKRYTGEM6QWTU )NCFUVQPG*QGIJ2GV CUMGV QORCP[ *CPEQEM3WKPE[5VGCO*QKUV *CPEQEM6GORNG,CEQD *CPEQEM(KPNCPFKC7PKXGTUKV[ )GTOHCUM5GPG[0CVKQPCN9KNFNKHG4GHWIG  Grupy mogą się niekiedy składać tylko z jednego wiersza. Gru- powanie wymaga zazwyczaj przeprowadzenia pewnej formy sortowania danych. Niemniej, jak można zauważyć na powyższym przykładzie, sortowanie musi być wykonywane jedynie do pew- nego 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 1706 jest wyznaczana oddzielnie dla każdej grupy. /WPKUKPI Funkcje grupowania i sumowania 37 /WPKUKPI /WPKUKPI )NCFUVQPG *CPEQEM *CPEQEM *CPEQEM )GTOHCUM  Wszystkie kolumny, którym nie odpowiada żadna wartość funkcji agregującej, zostały zastąpione jednym wpisem. /WPKUKPI )NCFUVQPG *CPEQEM )GTOHCUM  W praktyce sprowadzenie wielu wierszy do jednego wiersza wartości zagregowanych oznacza, że funkcja agregująca musi zo- stać zastosowana w odniesieniu do dowolnej kolumny nie objętej klauzulą )4172$;. 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ą )4172$;. 38 SQL. Leksykon kieszonkowy Zmniejszenie liczby kolumn w klauzuli GROUP BY Niekiedy zachodzi konieczność umieszczenia danej kolumny w sekcji 5 . 6 zapytania z klauzulą )4172$;, ale bez umieszcza- nia tej kolumny w klauzuli )4172$;. Jako przykład można roz- ważyć przedstawione poniżej zapytanie, w którym nazwa miasta wynika z identyfikatora miasta. 5 . 6OKFAOKCUVCPPCYCAOKCUVC 1706 (41/OKCUVCO+00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC )4172$;OKFAOKCUVCOPCYCAOKCUVC W takim przypadku, zamiast grupowania względem dwóch ko- lumn, znacznie korzystniejsze będzie przeprowadzenie grupowa- nia jedynie względem kolumny KFAOKCUVC. Skróceniu ulega w ten sposób klucz sortowania. Sortowanie grupujące będzie prawdo- podobnie wykonane znacznie szybciej i zużyje mniej przestrzenni dyskowej. Jednym ze sposobów osiągnięcia zamierzonego efektu jest zastosowanie następującego zapytania. 5 . 6OKFAOKCUVC/#: OPCYCAOKCUVC  1706 (41/OKCUVCO+00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC )4172$;OKFAOKCUVC Kolumna PCYCAOKCUVC została usunięta z klauzuli )4172$;. Jedno- cześnie do sekcji 5 . 6 zostało dodane wywołanie funkcji /#:. Dzięki temu spełnione jest założenie, że wszystkie wyrażenia nie objęte klauzulą )4172$; muszą być uwzględnione w funkcji agregującej. W rezultacie otrzymujemy tak samo użyteczną war- tość nazwy miasta. Wynika to z faktu, że wszystkie nazwy miast należące do grupy miast o jednakowej wartości KFAOKCUVC 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 )4172$; 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. 5 . 6OPCYCAOKCUVCCITNKEDCACVT (41/OKCUVCO+00 4,1+0 5 . 6KFAOKCUVC 1706 NKEDCACVT (41/CVTCMELG )4172$;KFAOKCUVC CIT 10OKFAOKCUVCCITKFAOKCUVC 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 pa- mięci operacyjnej. Wiersze poddawane grupowaniu nie zawierają bowiem żadnych informacji pochodzących z tabeli OKCUVC. Klauzula HAVING Klauzula *#8+0) nakłada ograniczenia na wiersze zwracane przez zapytanie zawierające klauzulę )4172 $;. 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ę: 5 . 6OPCYCAOKCUVC 1706 (41/OKCUVCO+00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC )4172$;OPCYCAOKCUVC *#8+0) 1706   Nigdy nie należy umieszczać w klauzuli *#8+0) 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. 5 . 6OPCYCAOKCUVC 1706 (41/OOKCUVC+00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC )4172$;OPCYCAOKCUVC *#8+0)OPCYCAOKCUVC+0  QRRGT*CTDQT  *CPEQEM  Znacznie efektywniejsze jest zastosowane zapytania, w którym ograniczenia nakładane na nazwy miast są wyrażone za pomocą klauzuli 9* 4 . 5 . 6OPCYCAOKCUVC 1706 (41/OOKCUVC+00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC 9* 4 OPCYCAOKCUVC+0  QRRGT*CTDQT  *CPEQEM )4172$;OPCYCAOKCUVC Klauzula 9* 4 zmniejsza liczbę wierszy podawanych działaniu klauzuli )4172$;. Konieczne jest więc zapisanie mniejszej liczby wierszy i wykonanie mniejszej liczby operacji funkcji agregującej. Klauzula *#8+0) znajduje zastosowanie w przypadku filtrowania wierszy będących wynikiem operacji )4172 $;, jeśli filtrowaniu podlegają agregowane wartości. Rozszerzenia klauzuli GROUP BY (Oracle) W bazach danych Oracle zostało zaimplementowanych kilka użytecznych rozszerzeń klauzuli )4172$;. Należą do nich: 41..72, 7$ oraz )4172+0) 5 65. Funkcje poszczególnych opcji zostały omówione w kolejnych podrozdziałach. Dodatkowo opisane zo- stały również pewne funkcje skalarne, które ułatwiają przetwa- Funkcje grupowania i sumowania 41 rzanie danych pozyskanych w wyniku zastosowania wspomnia- nych rozszerzeń. Rozszerzenie ROLLUP (Oracle) Rozszerzenie klauzuli )4172$; o słowo kluczowe 41..72 powoduje dodanie wiersza podsumowania do każdej grupy danych. 5 . 6JPCYCAJTCDUVYCOPCYCAOKCUVC  1706 CKFACVTCMELK NKEDC (41/ JTCDUVYCJ+00 4,1+0OKCUVCO 10JKFAJTCDUVYCOKFAJTCDUVYC +00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC )4172$;41..72 JPCYCAJTCDUVYCOPCYCAOKCUVC *#8+0) 1706 CKFACVTCMELK   Poniżej został zamieszczony wynik wykonania instrukcji. Wiersze pogrubione zostały wygenerowane w wyniku użycia opcji 41..72. 0# 9#A*4#$569#0# 9#A/+#56#.+ $#  #NIGT/WPKUKPI #NIGT *QWIJVQP*CPEQEM *QWIJVQP /CTSWGVVG+UJRGOKPI /CTSWGVVG/CTSWGVVG /CTSWGVVG  Dołączenie klauzuli )4172$; spowodowało wygenerowanie stan- dardowego podsumowania względem miast. Słowo kluczowe 41..72 odpowiada za dodanie podsumowań na wszystkich po- został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 41..72 nie musi być stosowana w odniesieniu do wszystkich kolumn klauzuli )4172$;. 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. )4172$;JPCYCAJTCDUVYC41..72 OPCYCAOKCUVC Rozszerzenie CUBE (Oracle) Dodanie do instrukcji słowa kluczowego 7$ powoduje wygene- rowanie podsumowań dla wszystkich możliwych kombinacji ko- lumn wymienionych w zapytaniu oraz dołączenie ogólnej wartości sumy. 5 . 6JPCYCAJTCDUVYCOPCYCAOKCUVC  1706 CKFACVTCMELK NKEDC (41/ JTCDUVYCJ+00 4,1+0OKCUVCO 10JKFAJTCDUVYCOKFAJTCDUVYC +00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC 9* 4 JPCYCAJTCDUVYC *QWIJVQP )4172$; 7$ JPCYCAJTCDUVYCOPCYCAOKCUVC  0# 9#A*4#$569#0# 9#A/+#56#.+ $#   *CPEQEM *QWIJVQP *QWIJVQP*CPEQEM Rozszerzenie GROUPING SETS (Oracle) Wprowadzona w bazie danych Oracle 9i opcja )4172+0)5 65 umo- żliwia wyznaczanie dowolnych obszarów grupowania. 5 . 6JPCYCAJTCDUVYCOPCYCAOKCUVC  1706 CKFACVTCMELK NKEDC Funkcje grupowania i sumowania 43 (41/ JTCDUVYCJ+00 4,1+0OKCUVCO 10JKFAJTCDUVYCOKFAJTCDUVYC +00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC )4172$; )4172+0)5 65 JPCYCAJTCDUVYCOPCYCAOKCUVC *#8+0) 1706 CKFACVTCMELK   0# 9#A*4#$569#0# 9#A/+#56#.+ $#  #NIGT *QWIJVQP /CTSWGVVG *CPEQEM +UJRGOKPI /CTSWGVVG /WPKUKPI Zastosowane w tym przykładzie rozszerzenie )4172+0)5 65 powo- duje wykonanie funkcji agregującej dla hrabstw i miast. Uzyska- nie takiego samego wyniku bez wykorzystania opcji )4172+0)5 65 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 )4172 $; bywa bardzo użyteczne. )4172+0) MQNWOPC Funkcja ta zwraca wartość 1, jeśli wynikiem operacji 7$ , 41..72 lub )4172+0)5 65 była wartość 07... W przeciwnym przypadku wynikiem jest wartość 0. )4172+0)A+ MQNWOPCMQNWOPC Działanie tej funkcji jest podobne do funkcji )4172+0). 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 odpo- wiadające im kolumny zawierają wartości 07.., wygenero- wane przez rozszerzenia klauzuli )4172 $;. Funkcja ta jest dostępna w bazie danych Oracle w wersji 9i i kolejnych. )4172A+ Funkcja ta umożliwia wyznaczenie duplikowanych wierszy, generowanych przez opcje 7$ , 41..72 i )4172+0)5 65. Wyni- kiem jej działania jest wartość z przedziału od 0 do n–1, od- powiadająca każdemu wierszowi zbioru o n duplikatach. Poprzez wykorzystanie zwracanej przez funkcję wartości można zdecydować o tym, ile zduplikowanych wierszy po- winno pozostać w wyniku. Aby wyeliminować wszystkie du- plikaty, wystarczy zastosować klauzulę *#8+0))4172A+ . Rozszerzenia klauzuli GROUP BY (SQL Server) W serwerze SQL, podobnie jak w bazie danych Oracle, również zaimplementowane zostały rozszerzenia 7$ i 41..72. Niestety sposób ich wykorzystania jest nieco odmienny i mniej elastyczny. Rozszerzenie ROLLUP (SQL Server) Opcja 41..72 dodaje wiersz podsumowania dla każdej grupy danych. 5 . 6JPCYCAJTCDUVYCOPCYCAOKCUVC  1706 CKFACVTCMELK NKEDC (41/ JTCDUVYCJ+00 4,1+0OKCUVCO 10JKFAJTCDUVYCOKFAJTCDUVYC +00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC )4172$;JPCYCAJTCDUVYCOPCYCAOKCUVC9+6*41..72 *#8+0) 1706 CKFACVTCMELK   Funkcje grupowania i sumowania 45 Uzyskany rezultat jest identyczny z prezentowanym podczas omawiania rozszerzenia 41..72 bazy danych Oracle. Serwer SQL Server nie pozwala jednak na stosowanie opcji 41..72 jedynie w odniesieniu do wybranych kolumn klauzuli )4172$;. Rozsze- rzenie obejmuje wszystkie kolumny lub nie obejmuje żadnej z nich. Rozszerzenie CUBE (SQL Server) Opcja 7$ generuje podsumowania dla wszystkich kombinacji kolumn ujętych w klauzuli )4172 $;. Dodaje także ogólne pod- sumowanie. 5 . 6JPCYCAJTCDUVYCOPCYCAOKCUVC  1706 CKFACVTCMELK NKEDC (41/ JTCDUVYCJ+00 4,1+0OKCUVCO 10JKFAJTCDUVYCOKFAJTCDUVYC +00 4,1+0CVTCMELGC 10OKFAOKCUVCCKFAOKCUVC 9* 4 JPCYCAJTCDUVYC *QWIJVQP )4172$;JPCYCAJTCDUVYCOPCYCAOKCUVC9+6* 7$  Uzyskany wynik nie odbiega w żaden sposób od rezultatu wyko- nania zapytania z opcją 7$ w bazie danych Oracle (opisanego wcześniej). Podobnie jak w przypadku rozszerzenia 41..72, nie można stosować opcji 7$ jedynie w odniesieniu do wybranych kolumn klauzuli )4172$;. 46 SQL. Leksykon kieszonkowy
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

SQL. Leksykon kieszonkowy
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: