Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00087 009781 10452215 na godz. na dobę w sumie
ABC języka SQL - książka
ABC języka SQL - książka
Autor: Liczba stron: 200
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-593-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> sql - programowanie
Porównaj ceny (książka, ebook, audiobook).
Bazy danych stały się głównym składnikiem systemów informatycznych. W zależności od producenta, przeznaczenia i ceny programy zarządzające bazami danych bardzo się od siebie różnią.

Jedynym punktem wspólnym dla wszystkich tych aplikacji jest wbudowana obsługa strukturalnego języka zapytań (ang. Structured Query Language).

SQL służy do tworzenia aplikacji bazodanowych i zarządzania nimi. Używając go, możemy:

  1. Wyszukiwać dane w bazie danych.
  2. Operować danymi -- wstawiać je, modyfikować i usuwać.
  3. Definiować dane -- dodawać nowe tabele, indeksy i perspektywy.
  4. Sterować danymi -- blokować użytkownikom dostęp do poufnych danych.
  5. Modyfikować schemat baz danych bez zmieniania istniejących aplikacji -- nowe kolumny i tabele mogą być zawsze dodane bez obawy, że zajdzie konieczność zmiany istniejących programów lub zdefiniowanych z góry ścieżek dostępu.
  6. Formułować zapytania w trybie interakcyjnym lub osadzać je w standardowych językach programowania, takich jak C lub Pascal.
Aby opanować SQL w stopniu wystarczającym do stworzenia i korzystania z bazy danych, wystarczy znajomość dziewięciu poleceń: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, GRANT i REVOKE.

Książka została przygotowana tak, aby była przydatna zarówno dla uczniów i studentów, którzy chcieliby poznać temat projektowania i programowania baz danych (książka powstała na podstawie prowadzonych przez autora wykładów z teorii relacyjnych baz danych i języka SQL) jak i dla administratorów baz danych (książka zawiera kilkadziesiąt przykładów wykorzystania języka SQL do ułatwienia lub zautomatyzowania codziennych prac związanych z zarządzaniem bazami danych).

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

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TRE(cid:140)CI SPIS TRE(cid:140)CI ABC jŒzyka SQL KATALOG KSI¥flEK KATALOG KSI¥flEK KATALOG ONLINE KATALOG ONLINE ZAM(cid:211)W DRUKOWANY KATALOG ZAM(cid:211)W DRUKOWANY KATALOG TW(cid:211)J KOSZYK TW(cid:211)J KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAM(cid:211)W INFORMACJE ZAM(cid:211)W INFORMACJE O NOWO(cid:140)CIACH O NOWO(cid:140)CIACH ZAM(cid:211)W CENNIK ZAM(cid:211)W CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥flEK ONLINE FRAGMENTY KSI¥flEK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Autor: Marcin Szeliga ISBN: 83-7197-593-7 Format: B5, stron: 194 Bazy danych sta‡y siŒ g‡(cid:243)wnym sk‡adnikiem system(cid:243)w informatycznych. W zale¿no(cid:156)ci od producenta, przeznaczenia i ceny programy zarz„dzaj„ce bazami danych bardzo siŒ od siebie r(cid:243)¿ni„. Jedynym punktem wsp(cid:243)lnym dla wszystkich tych aplikacji jest wbudowana obs‡uga strukturalnego jŒzyka zapytaæ (ang. Structured Query Language). SQL s‡u¿y do tworzenia aplikacji bazodanowych i zarz„dzania nimi. U¿ywaj„c go, mo¿emy: wyszukiwa(cid:230) dane w bazie danych. operowa(cid:230) danymi (cid:151) wstawia(cid:230) je, modyfikowa(cid:230) i usuwa(cid:230). definiowa(cid:230) dane (cid:151) dodawa(cid:230) nowe tabele, indeksy i perspektywy. sterowa(cid:230) danymi (cid:151) blokowa(cid:230) u¿ytkownikom dostŒp do poufnych danych. modyfikowa(cid:230) schemat baz danych bez zmieniania istniej„cych aplikacji (cid:151) nowe kolumny i tabele mog„ by(cid:230) zawsze dodane bez obawy, ¿e zajdzie konieczno(cid:156)(cid:230) zmiany istniej„cych program(cid:243)w lub zdefiniowanych z g(cid:243)ry (cid:156)cie¿ek dostŒpu. formu‡owa(cid:230) zapytania w trybie interakcyjnym lub osadza(cid:230) je w standardowych jŒzykach programowania, takich jak C lub Pascal. Aby opanowa(cid:230) SQL w stopniu wystarczaj„cym do stworzenia i korzystania z bazy danych, wystarczy znajomo(cid:156)(cid:230) dziewiŒciu poleceæ: SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, GRANT i REVOKE. Ksi„¿ka zosta‡a przygotowana tak, aby by‡a przydatna zar(cid:243)wno dla uczni(cid:243)w i student(cid:243)w kt(cid:243)rzy chcieliby pozna(cid:230) temat projektowania i programowania baz danych (ksi„¿ka powsta‡a na podstawie prowadzonych przez autora wyk‡ad(cid:243)w z teorii relacyjnych baz danych i jŒzyka SQL) jak i dla administrator(cid:243)w baz danych (ksi„¿ka zawiera kilkadziesi„t przyk‡ad(cid:243)w wykorzystania jŒzyka SQL do u‡atwienia lub zautomatyzowania codziennych prac zwi„zanych z zarz„dzaniem bazami danych). Wstęp ...............................................................................................9 Podstawowe informacje o języku SQL................................................................. 9 Organizacja książki ............................................................................................. 10 Konwencje i oznaczenia...................................................................................... 11 Część I Instrukcja SELECT ................................................................. 13 Rozdział 1. Wybieranie danych z pojedynczej tabeli.............................................15 Tabele jako zbiory danych .................................................................................. 15 Wybieranie kolumn z tabeli ................................................................................ 17 Wyrażenia arytmetyczne..................................................................................... 19 Aliasy .................................................................................................................. 20 Literały ................................................................................................................ 21 Operator konkatenacji ......................................................................................... 22 Eliminacja duplikatów ........................................................................................ 23 Wartość NULL.................................................................................................... 24 Porządkowanie danych ....................................................................................... 26 Wybieranie wierszy z tabeli ................................................................................ 28 Operatory logiczne......................................................................................................28 Operatory języka SQL ................................................................................................32 Hierarchia operatorów ................................................................................................34 Rozdział 2. Wybieranie danych z wielu tabel .......................................................35 Złączenie równościowe....................................................................................... 36 Aliasy ..........................................................................................................................38 Złączenie nierównościowe .................................................................................. 38 Złączenia typu self-join....................................................................................... 39 Złącznie zewnętrzne............................................................................................ 40 Operatory teoriomnogościowe ............................................................................ 41 Operator UNION ........................................................................................................42 Operator INTERSEC ..................................................................................................43 Operator MINUS ........................................................................................................44 Porządkowanie danych ...............................................................................................45 Rozdział 3. Funkcje języka SQL ..........................................................................47 Funkcje tekstowe................................................................................................. 48 Funkcje zwracające wartość tekstową ........................................................................48 Funkcje zwracające wartość numeryczną ...................................................................53 C:AndrzejPDFABC jezyka SQL!Spis.doc 3 4 ABC języka SQL Funkcje matematyczne........................................................................................ 54 Funkcje daty i czasu ............................................................................................ 57 Funkcje konwersji ............................................................................................... 60 Rozdział 4. Grupowanie danych ..........................................................................63 Funkcje agregujące.............................................................................................. 64 Funkcja COUNT() ......................................................................................................64 Funkcja SUM() ...........................................................................................................65 Funkcja AVG() ...........................................................................................................65 Funkcje MIN() i MAX() .............................................................................................66 Funkcja STDDEV() ....................................................................................................66 Funkcja VARIANCE() ...............................................................................................67 Klauzula GROUP BY ......................................................................................... 67 Klauzula HAVING.............................................................................................. 69 Rozdział 5. Podzapytania ...................................................................................71 Podzapytania nie powiązane ............................................................................... 72 Podzapytania powiązane ..................................................................................... 72 Podzapytania zwracające jeden wiersz ............................................................... 73 Podzapytania zwracające wiele wierszy ............................................................. 74 Podzapytania z wyrażeniem IN ..................................................................................75 Podzapytania z wyrażeniem NOT IN .........................................................................76 Podzapytania z wyrażeniem EXIST ...........................................................................76 Podzapytania z wyrażeniem NOT EXIST ..................................................................78 Podzapytania z operatorami ALL i ANY ...................................................................78 Zagnieżdżanie podzapytań .................................................................................. 80 Podzapytania w klauzuli HAVING..................................................................... 80 Rozdział 6. Składnia instrukcji SELECT...............................................................83 Klauzule SELECT i FROM ................................................................................ 83 Klauzula WHERE ............................................................................................... 84 Klauzula GROUP BY ......................................................................................... 84 Klauzula HAVING.............................................................................................. 85 Operatory UNION, INTERSEC, MINUS .......................................................... 86 Klauzula ORDER BY ......................................................................................... 87 Pełna składnia instrukcji SELECT w języku PL/SQL........................................ 88 Część II Instrukcje CREATE, DROP, ALTER .......................................... 89 Rozdział 7. Projektowanie bazy danych ..............................................................91 Diagramy związków encji (obiektów) ................................................................ 92 Wyodrębnianie danych elementarnych............................................................... 94 Zależności funkcyjne ..................................................................................................94 Grupowanie danych w tabelach .......................................................................... 95 Normalizacja ....................................................................................................... 96 Pierwsza postać normalna 1PN...................................................................................96 Druga postać normalna 2PN .......................................................................................96 Trzecia postać normalna 3PN .....................................................................................96 Model bazy Firma ............................................................................................... 97 4 C:AndrzejPDFABC jezyka SQL!Spis.doc Spis treści 5 Rozdział 8. Definiowanie tabel ...........................................................................99 Tworzenie bazy danych ...................................................................................... 99 Tworzenie tabel................................................................................................... 99 Warunki integralności ...............................................................................................101 Klauzula DEFAULT .................................................................................................106 Tworzenie tabel poprzez zapytanie................................................................... 106 Indeksy .............................................................................................................. 108 Rozdział 9. Zmiana definicji tabel.....................................................................109 Dodawanie kolumn ........................................................................................... 109 Zmiana kolumny ............................................................................................... 110 Zmiana rozmiarów kolumny.....................................................................................110 Zmiana typu kolumny ...............................................................................................111 Zmiana nazwy tabeli .................................................................................................112 Zarządzanie warunkami integralności .............................................................. 112 Dodawanie warunków integralności.........................................................................113 Włączanie i wyłączanie warunków integralności .....................................................113 Usuwanie warunków integralności ...........................................................................113 Rozdział 10. Usuwanie tabel ..............................................................................115 Zmiana nazwy tabeli ......................................................................................... 116 Rozdział 11. Widoki ...........................................................................................119 Tworzenie widoków.......................................................................................... 119 Używanie widoków........................................................................................... 121 Ograniczenie zakresu modyfikowania danych poprzez widoki................................122 Usuwanie widoków........................................................................................... 123 Rozdział 12. Składnia instrukcji CREATE, DROP i ALTER.....................................125 Instrukcja CREATE .......................................................................................... 125 Instrukcja CREATE TABLE ....................................................................................125 Instrukcja CREATE VIEW.......................................................................................127 Instrukcja ALTER............................................................................................. 128 Instrukcja ALTER TABLE.......................................................................................128 Instrukcja DROP ............................................................................................... 130 Instrukcja DROP TABLE .........................................................................................130 Instrukcja DROP VIEW ...........................................................................................131 Instrukcje RENAME......................................................................................... 131 Część III Instrukcje INSERT, UPDATE i DELETE ................................... 133 Rozdział 13. Transakcje.....................................................................................135 Co to jest transakcja? ........................................................................................ 136 Przetwarzanie transakcyjne............................................................................... 136 Automatyczne zatwierdzanie transakcji ...................................................................137 Rozpoczynanie transakcji .........................................................................................137 Zatwierdzanie transakcji ...........................................................................................137 Wycofywanie transakcji............................................................................................138 Punkty zachowania............................................................................................ 138 C:AndrzejPDFABC jezyka SQL!Spis.doc 5 6 ABC języka SQL Rozdział 14. Wstawianie danych ........................................................................139 Weryfikacja danych .......................................................................................... 139 Wstawianie wierszy .......................................................................................... 140 Wstawianie wartości null ..........................................................................................141 Wstawianie wierszy wybranych w zapytaniu ................................................... 142 Eliminacja duplikatów wierszy.................................................................................143 Dane przykładowej bazy Firma ........................................................................ 143 Rozdział 15. Modyfikowanie danych ...................................................................147 Modyfikowanie danych w wielu kolumnach .................................................... 148 Modyfikowanie danych na podstawie danych wybranych w zapytaniu........... 149 Modyfikowanie danych wybranych w zapytaniu ............................................. 151 Rozdział 16. Usuwanie danych ...........................................................................153 Usuwanie danych wybranych w zapytaniu....................................................... 154 Instrukcja TRUNCATE .................................................................................... 155 Rozdział 17. Składnia instrukcji INSERT, UPDATE i DELETE ................................157 Instrukcja INSERT............................................................................................ 157 Klauzula INTO..........................................................................................................158 Instrukcja UPDATE .......................................................................................... 158 Klauzula WHERE .....................................................................................................159 Modyfikowanie danych w wielu kolumnach ............................................................159 Modyfikowanie danych na podstawie danych wybranych w zapytaniu...................159 Modyfikowanie danych wybranych w zapytaniu .....................................................160 Instrukcja DELETE........................................................................................... 160 Usuwanie danych wybranych w zapytaniu...............................................................161 Część IV Instrukcje GRANT, REVOKE ................................................... 163 Rozdział 18. Model bezpiecze9stwa baz danych..................................................165 Bezpieczeństwo informacji ............................................................................... 165 Przywileje .................................................................................................................166 Zasoby bazy danych..................................................................................................168 Monitorowanie bazy danych.....................................................................................169 Rozdział 19. Nadawanie uprawnie9 ....................................................................171 Zarządzanie użytkownikami ............................................................................. 171 Tworzenie konta użytkownika ..................................................................................171 Usuwanie konta użytkownika ...................................................................................172 Zmiana hasła użytkownika .......................................................................................173 Uprawnienia ...................................................................................................... 173 Nadawanie uprawnień systemowych ........................................................................173 Nadawanie uprawnień obiektowych .........................................................................174 Nadawanie uprawnień wszystkim użytkownikom....................................................175 Synonimy ..................................................................................................................175 Rozdział 20. Odbieranie uprawnie9 .....................................................................177 Tworzenie i usuwanie ról .................................................................................. 177 Odbieranie uprawnień systemowych ................................................................ 178 Odbieranie uprawnień obiektowych ................................................................. 178 Kolejność wykonywania poleceń GRANT i REVOKE ................................... 179 6 C:AndrzejPDFABC jezyka SQL!Spis.doc Spis treści 7 Rozdział 21. Składnia instrukcji GRANT, REVOKE ...............................................181 Instrukcja GRANT ............................................................................................ 181 Klauzule GRANT, TO ..............................................................................................182 Klauzula ON .............................................................................................................182 Klauzula WITH GRANT OPTION ..........................................................................183 Instrukcja REVOKE.......................................................................................... 183 Klauzule REVOKE, FROM......................................................................................183 Klauzula ON .............................................................................................................184 Klauzula CASCADE | RESTRICT...........................................................................184 Dodatki................................................................................................. 185 Dodatek A Postulaty Codda ............................................................................187 Dodatek B ABC modelu relacyjnych baz danych ...............................................189 Podstawowe pojęcia .......................................................................................... 189 Zasady dotyczące struktury danych .................................................................. 191 Zmienne wskaźnikowe..............................................................................................191 Zasady dotyczące przetwarzania danych .......................................................... 192 Zasady dotyczące integralności danych............................................................ 194 C:AndrzejPDFABC jezyka SQL!Spis.doc 7 Rozdział 5. Podzapytania lub zapytania zagnieżdżone to instrukcje 7//-8 umieszczone wewnątrz innych instrukcji 7//-8. Podzapytania mogą być używane w klauzuli ;/6/ do filtrowa- nia danych lub, co zostanie wyjaśnione w części trzeciej, w instrukcji 27/68 do kopiowa- nia danych z jednej tabeli do drugiej. Podzapytań używamy, gdy dane z pewnej tabeli są potrzebne w innym zapytaniu. Podobnie jak możemy zagnieżdżać wywołania funk- cji w innych funkcjach, tak samo możemy zagnieżdżać zapytania w innych zapytaniach. Wykorzystując podzapytania można osiągnąć podobny efekt, jaki osiągamy przez wpro- wadzenie zmiennych w proceduralnych językach programowania. Zamiast wykonania instrukcji i przechowania jej w zmiennej, wykonywane jest drugie wyrażenie wykorzy- stujące poprzedni wynik, co daje efekt zagnieżdżania pierwszej instrukcji w drugiej. SZBD wykonuje podzapytania, zaczynając od najbardziej wewnętrznej instrukcji 7/(cid:11) /-8, po to aby wynik tej instrukcji wykorzystać do wykonania zapytań zewnętrznych. Podzapytania dzielą się na:  Podzapytania powiązane i nie powiązane. Podzapytanie powiązane wymaga danych z zapytania otaczającego, zanim może być wykonane. Dane zwrócone przez podzapytanie powiązane wprowadzane są z powrotem do zapytania otaczającego. Natomiast podzapytanie nie powiązane wykonuje się przed zapytaniem otaczającym, a jego wyniki są przekazywane do zapytania otaczającego. Podzapytanie nie powiązane jest prostszym przykładem podzapytań, tyle tylko że w praktyce właściwie nie używanym).  Podzapytania zwracające jeden wiersz i zwracające wiele wierszy. Kryterium podziału stanowi tutaj liczba wierszy zwracanych przez wewnętrzną instrukcję 7//-8. W podzapytaniu nie może wystąpić klauzula 36./6 ,. Klauzula ta może być użyta tyl- ko raz dla całego zapytania. C:AndrzejPDFABC jezyka SQL5.doc 71 72 Część I  Instrukcja SELECT Podzapytania nie powiązane Zapytanie wykorzystujące nie powiązane podzapytanie przekazuje sterowanie do we- wnętrznej instrukcji 7//-8, obliczone w nim dane przekazuje do zapytania zewnętrznego i wykonuje je. Ogólny schemat podzapytań nie związanych przedstawiony jest poniżej. #$2+;+)392  8+,/+  2+;+)392 34/6+836 (cid:24)#$#$2+;+)392  8+,/+   ;+692/(cid:30) Na przykład, aby znaleźć nazwę najdroższego towaru, należy wykonać instrukcję: #$2+;+  $3;+6  -/2+)746/.+(cid:24)#$+(cid:24)-/2+)746/.+(cid:30)  83;+6(cid:30) Wyjaśnienie: SZBD najpierw wykonuje wewnętrzną instrukcję 7//-8: #$+(cid:24)-/2+)746/.+(cid:30)  83;+6(cid:30) W wyniku przeprowadzenia tej operacji otrzymujemy najwyższą cenę sprzedaży (7 500,00 zł). Następnie wykonywana jest instrukcja #$2+;+  $3;+6  -/2+)746/.+  po zrealizowaniu której otrzymamy nazwę najdroższego towaru. Tabela 5.1. Podzapytanie nie powiązane Nazwa Zegarek z pozytywką Podzapytania powiązane Częściej wykorzystywane zapytanie powiązane różni się od zapytania nie powiązanego tym, że pozycje z listy 7//-8 zapytania otaczającego są wykorzystane wewnątrz klauzuli ;/6/ podzapytania. Zapytania powiązane często porównywane są ze złączenia- mi, ponieważ zawartość tabeli występującej w podzapytaniu będzie porównywana z za- wartością tabeli z zapytania otaczającego, podobnie jak w zapytaniu złączającym. Różnica polega na tym, że zamiast warunku złączającego, powiązane podzapytanie od- wołuje się do zapytania zewnętrznego przez klauzulę ;/6/ zapytania wewnętrznego. 72 C:AndrzejPDFABC jezyka SQL5.doc Rozdział 5.  Podzapytania 73 Aby znaleźć wszystkie towary przypisane do tej samej grupy towarowej, co towar o na- zwie Discipline, napiszemy: #$2+;+,.)1694  $3;+6  .)1694(cid:24)#$.)1694  $3;+6  2+;+7-42/(cid:30) Tabela 5.2. Podzapytanie powiązane Nazwa Vroom Discipline Id_grupy Muzyka Muzyka Podczas wykonywania podzapytania powiązanego SZBD wykonuje kolejno następu- jące czynności: w pierwszej kolejności z bazy danych odczytywana jest zawartość wiersza, następnie wykonywane jest podzapytanie, a wartości z aktualnie wybranego wiersza zapytania otaczającego są wykorzystywane w klauzuli ;/6/ podzapytania. Kolejną operacją jest przekazywanie wyników podzapytania do klauzuli ;/6/. W przy- padku, gdy wyrażenie logiczne w warunku klauzuli ;/6/ ma wartość prawda, wiersz jest pobierany do zestawienia wynikowego, w przeciwnym wypadku jest pomijany. Podzapytania zwracające jeden wiersz Podzapytania tego typu można traktować jak zwykłe wyrażenia. W szczególności podzapytania tego typu mogą być wykorzystywane ze standardowymi operatorami porównań, np. z klauzulą ,//8;/2. Dlatego jeśli chcemy znaleźć, powiedzmy, te towa- ry, które zostały kupione za cenę niższą od średniej ceny zakupu towarów, należy wykonać polecenie: #$2+;+,-/2+)+949  $3;+6  -/2+)+949(cid:24)#$+:1(cid:24)-/2+)+949(cid:30)  $3;+6(cid:30) Wyjaśnienie: SZBD najpierw wykonuje wewnętrzną instrukcję 7//-8: #$+:1(cid:24)-/2+)+949(cid:30)  $3;+6 W jej wyniku otrzymujemy jedną wartość będącą średnią ceną zakupu towarów (5 073,6429 zł). Następnie SZBD sprawdza ceny zakupów wszystkich towarów z tabeli Towar i sprawdza, czy któraś z nich nie jest mniejsza od 5 073,64. Jeżeli tak, nazwa towaru zostaje dodana do tabeli wynikowej. C:AndrzejPDFABC jezyka SQL5.doc 73 74 Część I  Instrukcja SELECT Tabela 5.3. Podzapytanie zwracające jeden wiersz Nazwa Tajemnicze zioła na kaszel Magiczny napój na ból głowy Cena_zakupu 1 200,00 zł 2 000,00 zł Vroom Discipline Black White Palmy (dzikie) Pomarańcza (mechaniczna) Sofa błękitna Zegarek z pozytywką Wypłata dla Bjorga Wypłata dla Galadrieli Wypłata dla Gandalfa Mieszanka ziół wschodu 150,00 zł 590,00 zł 99,00 zł 222,00 zł 450,00 zł 500,00 zł 3 000,00 zł 3 000,00 zł 3 500,00 zł 4 000,00 zł 2 320,00 zł Podzapytania zwracające wiele wierszy Przypomnijmy sobie jedną z niedawno opisywanych instrukcji: #$2+;+,.)1694  $3;+6  .)1694(cid:24)#$.)1694  $3;+6  2+;+7-42/(cid:30) Proszę zauważyć, że jeśli w tabeli Towar znajdowałoby się więcej towarów o nazwie Discipline, to powyższe zapytanie nie miałoby sensu. Ponieważ wewnętrzne zapytanie zwróciłoby listę wartości, a nie pojedynczy wiersz, SZBD nie mógłby poprawnie obliczyć wyniku zapytania zewnętrznego i zamiast listy towarów z podanej grupy otrzymalibyśmy komunikat błędu. Przekształceniem tej instrukcji tak, aby podzapytanie mogło zwrócić dowolną liczbę wartości (włączając w to 0), a przy tym działało zgodnie z naszymi oczekiwaniami, zajmiemy się w bieżącym punkcie. Podzapytania zwracające listę wartości mogą być wykorzystane w wyrażeniach typu 2, 2382 oraz łącznie ze słowami kluczowymi /787, +2 lub +. 74 C:AndrzejPDFABC jezyka SQL5.doc Rozdział 5.  Podzapytania 75 Podzapytania z wyrażeniem IN Wyrażenie 2 jest wykorzystywane do sprawdzenia, czy wartość należy do pewnego zbioru. Podzapytanie może być wykorzystane do wybrania tego zbioru wartości. Prze- kształćmy naszą instrukcję tak, aby wykorzystać w podzapytaniu wyrażenie 2: #$2+;+,.)1694  $3;+6  .)1694(cid:24)#$.)1694  $3;+6  2+;+7-42/(cid:30) Tabela 5.4. Podzapytanie wykorzystujące wyrażenie in Nazwa Vroom Discipline Id_grupy Muzyka Muzyka Wynik działania obu instrukcji w tym przypadku jest identyczny, ale gdybyśmy chcieli znaleźć wszystkie towary sprzedawane na sztuki, to poprawna instrukcja musi wyglądać, tak jak zostało to pokazane poniżej (ponieważ w tabeli Towar znajduje się kilka towarów sprzedawanych na sztuki). #$2+;+,.)1694,/.2378+  $3;+6  .)1694(cid:24)#$.)1694  $3;+6  /.2378+78(cid:30) Tabela 5.5. Wyrażenie in zwracające listę wierszy Nazwa Vroom Discipline Black White Palmy (dzikie) Pomarańcza (mechaniczna) Sofa błękitna Zegarek z pozytywką Id_grupy Jednostka Muzyka Muzyka IT Film Film Sztuka Sztuka szt szt szt szt szt szt szt Wikszolć SZBD wymaga, aby kolumny wystpujące na lilcie wyboru wewntrznego (kolumny wystpujące w wewntrznych klauzulach ;/6/ lub +:21) wystpowały w tej samej kolejnolci w klauzuli 7//-8 zewntrznego zapytania. C:AndrzejPDFABC jezyka SQL5.doc 75 76 Część I  Instrukcja SELECT Podzapytania z wyrażeniem NOT IN Podzapytania mogą być również wykorzystane do tworzenia list w klauzuli 238 2. Wartość logiczna takiego wyrażenia jest prawdziwa, gdy wartość testowana nie należy do listy wartości. Nie zaleca si korzystania z wyraże* $ w podzapytaniach z powodu ich niskiej wydajnolci. W wikszolci wypadków można zamiast tego skorzystać z zapytania wykorzystującego złączenie zewntrzne. Przypuśćmy, że chcemy utworzyć listę grup towarowych, w których nie ma ani jed- nego towaru. W tym celu należy wyszukać nazwy tych grup towarowych, dla których w tabeli Towar nie ma ani jednego wpisu. #$2+;+  694+  .)694$(cid:24)#$.)694  $3;+6(cid:30) Tabela 5.6. Podzapytanie wykorzystujące wyrażenie not in Nazwa Pusta Foto Alternatywną metodę uzyskania tego wyniku przedstawię w następnym punkcie. Podzapytania z wyrażeniem EXIST W przypadku podzapytań czasami chcemy jedynie sprawdzić, czy wiersz spełniający podane warunki istnieje w bazie danych. Najprostszą metodą sprawdzenia, czy dany wiersz występuje w podanej tabeli jest użycie wyrażenia /78. Jeżeli podzapytanie zwraca dowolną wartolć, to klauzula /78 zwraca wartolć logiczną 869/ (prawda). Aby za pomocą operatora /78 znaleźć te towary, które są przypisane do jakichkol- wiek grup towarowych, napiszemy: #$+;+  $3;+6  #$(cid:24)#$.)694  694+  694+ .)1694$3;+6 .)694(cid:30) 76 C:AndrzejPDFABC jezyka SQL5.doc Rozdział 5.  Podzapytania 77 Tabela 5.7. Podzapytanie wykorzystujące wyrażenie exist Nazwa Tajemnicze zioła na kaszel Magiczny napój na ból głowy Vroom Discipline Black White Palmy (dzikie) Pomarańcza (mechaniczna) Sofa błękitna Zegarek z pozytywką Wypłata dla Bjorga Wypłata dla Galadrieli Wypłata dla Gandalfa Mieszanka ziół wschodu Częstym problemem administratora bazy danych jest znalezienie duplikatów rekordów (wielu wierszy danej tabeli zawierających dane o tym samym obiekcie). Przypuśćmy, że przez pomyłkę dodaliśmy do tabeli Pracownik dodatkowy wiersz zawierający powtó- rzone dane o Galadrieli. Jedynie dane przechowywane w kolumnie Id_Pracownika (ponieważ wartości tej kolumny uzupełniane są przez SZBD automatycznie) są unikalne. Jednym z rozwiązań tego problemu może być poniższe podzapytanie zawierające operator /78 #$6   6+-3;2  #$# (cid:24)#$8   6+-3;2 6+-3;2)79,    6+-3;2)79, 8 6+-3;2 8  6+-3;2)79, +;73 6+-3;2 +;73  6+-3;2)79, .) 6+-3;2+ 6+-3;2 .) 6+-3;2+(cid:30) Wyjaśnienie: SZBD odczytuje po kolei wszystkie wiersze w tabeli Pracownik, sprawdzając, dla których wartości atrybutów Imię i Nazwisko są identyczne. Następnie sprawdza, dla których z wyselekcjonowanych wierszy wartości atrybutu Id_Pracownika są różne. Jeżeli istnieje wiersza spełniający te kryteria, zostaje on wybrany przez zewnętrzną instrukcję #$. Tabela 5.8. Wykorzystanie operatora exist do wyszukiwania duplikatów danych ID_Pracownika Imię Nazwisko Ulica Miasto Stanowisko Data_zatrudnienia 4 5 Galadriela Yavanna Szybka 2/5 Śródziemie Sprzedawca 1999-08-04 Galadriela Yavanna Szybka 2/5 Śródziemie Sprzedawca 1999-08-04 C:AndrzejPDFABC jezyka SQL5.doc 77 78 Część I  Instrukcja SELECT Podzapytania z wyrażeniem NOT EXIST Jeżeli interesuje nas brak pewnego wiersza w bazie danych, a nie jego występowanie, mo- żemy sprawdzić to za pomocą wyrażenia 238 /78. Aby za pomocą operatora 238 /78 znaleźć te towary, które nie są przypisane do jakichkolwiek grup towarowych, napiszemy: #$+;+  $3;+6  $#$(cid:24)#$.)694  694+  694+ .)1694$3;+6 .)694(cid:30) Tabela 5.9. Podzapytanie wykorzystujące wyrażenie not exist Nazwa Golgothian Podzapytania z operatorami ALL i ANY Operatory + i +2 mogą być stosowane w podzapytaniach zwracających wiele wier- szy. Podaje się je w klauzulach ;/6/ i +:21 razem z operatorem porównania. Operator ANY W przypadku użycia operatora +2 wartość z bieżącego wiersza jest porównywana z każdą wartością podzapytania w oparciu o operator porównania. Jeśli jedno z porównań zwraca wartość prawda, to całe porównanie jest traktowane jako prawda. Innymi słowy, wiersz zostanie wybrany, jeżeli wyrażenie jest zgodne z co najmniej jedną wartością wybraną w podzapytaniu. Aby wybrać towary, których cena zakupu jest większa niż najniższa cena zakupu dowol- nego towaru, należy wykonać instrukcję: #$+;+,/2+)+949  $3;+6  -/2+)+949(cid:24)#$#$$-/2+)+949 063$3;+6(cid:30) Wyjaśnienie: Minimalna cena zakupu wynosi 99 zł. SZBD sprawdza ceny zakupu wszystkich towa- rów i, jeżeli jest ona większa niż 99 złotych, zwraca dany wiersz w wyniku zapytania. Słowo kluczowe #$$ zapobiega wybieraniu przez niektóre SZBD wielokrotnie tych samych wierszy (cena zakupu Sofy jest większa od ceny zakupu kilku innych towarów). Poniższa instrukcja wykorzystuje operator +2 do wybrania nazw tylko tych towarów, których jednorazowo sprzedano więcej niż 20 jednostek. #$.)$3;+69  4/6+-+  3/.2378/(cid:24)#$#$$3/.2378/  4/6+-+  3/.2378/ (cid:30).)$49 78 C:AndrzejPDFABC jezyka SQL5.doc Rozdział 5.  Podzapytania 79 Wyjaśnienie: SZBD sprawdza, czy ilość jednostek dla każdej przeprowadzonej operacji jest większa niż 20, następnie sprawdza, czy operacja była operacją sprzedaży i, jeżeli oba warunki są spełnione (operator +2.), zwraca w wyniku nazwę towaru. Tabela 5.10. Podzapytanie wykorzystujące operator any Nazwa Tajemnicze zioła na kaszel Magiczny napój na ból głowy Cena_zakupu 1 200,00 zł 2 000,00 zł Vroom Discipline Palmy (dzikie) Pomarańcza (mechaniczna) Sofa błękitna Zegarek z pozytywką Wypłata dla Bjorga Wypłata dla Galadrieli Wypłata dla Gandalfa Golgothian Mieszanka ziół wschodu 150,00 zł 590,00 zł 222,00 zł 450,00 zł 500,00 zł 3 000,00 zł 3 000,00 zł 3 500,00 zł 4 000,00 zł 50 000,00 zł 2 320,00 zł Tabela 5.11. Złożone podzapytanie wykorzystujące operator any Id_Towaru Tajemnicze zioła na kaszel Magiczny napój na ból głowy Mieszanka ziół wschodu Operator ALL W przypadku użycia operatora + warunek musi być spełniony przez wszystkie wartości wybrane w podzapytaniu. Innymi słowy, jeśli wykonujemy porównanie oparte na równości, to wartość z lewej strony równania musi być równa każdej wartości wy- niku podzapytania, żeby wynik całości też był prawdziwy. Aby wybrać nazwy wszystkich towarów, których cena sprzedaży przewyższyła cenę sprzedaży któregokolwiek z towa- rów zakwalifikowanych do grupy Muzyka, należy wykonać instrukcje: #$+;+,/2+)746/.+  $3;+6  /2+)746/.+(cid:24)#$#$$/2+)746/.+  $3;+6  .)694 (cid:30) C:AndrzejPDFABC jezyka SQL5.doc 79 80 Część I  Instrukcja SELECT Wyjaśnienie: Najwyższa cena sprzedaży towarów z grupy Muzyka wynosi 900 zł. Zapytanie zwróci listę tych towarów, których cena sprzedaży jest wyższa niż 900 zł. Tabela 5.12. Podzapytanie wykorzystujące operator all Nazwa Cena_sprzedazy Tajemnicze zioła na kaszel Magiczny napój na ból głowy Sofa błękitna Zegarek z pozytywką Mieszanka ziół wschodu 2 000,00 zł 3 320,00 zł 1 400,00 zł 7 500,00 zł 3 050,00 zł Zagnierdranie podzapyta(cid:23) Możliwe jest wielokrotne zagnieżdżanie podzapytań. Podzapytanie może być zagnieżdżo- ne zarówno w standardowym zapytaniu, jak i w innym podzapytaniu. Jedyne ograniczenie ilości poziomów zagnieżdżeń wynika z wydajności zapytania. W praktyce ograniczeniem przy zagnieżdżaniu zapytań jest wyłącznie czas ich obliczania przez SZBD. Podzapytania w klauzuli HAVING Język SQL umożliwia stosowanie podzapytań zarówno w klauzuli ;/6/, jak i w klauzuli +:21. Aby wybrać grupę towarową, w której towary mają najniższą średnią cenę sprzedaży, napiszemy: #$.)694,:1(cid:24)-/2+)746/.+(cid:30)  $3;+6   .)694  :1(cid:24)-/2+)746/.+(cid:30)(cid:24)#$2(cid:24) (cid:24)-/2+)746/.+(cid:30)(cid:30)  $3;+6(cid:30)1 1 Niektóre SZBD nie umożliwiają zagnieżdżania funkcji agregujących. W takim wypadku próba wykonania instrukcji #$2(cid:24) (cid:24)-/2+)746/.+(cid:30)(cid:30)  $3;+6 zakończy się błędem. 80 C:AndrzejPDFABC jezyka SQL5.doc Rozdział 5.  Podzapytania 81 Wyjaśnienie: SZBD oblicza średnią cenę sprzedaży towarów dla poszczególnych grup, a następnie wybiera tę grupę, dla której obliczona wartość jest równa najniższej z obliczonych średnich cen sprzedaży. Tabela 5.12. Podzapytanie w klauzuli having Id_Grupy Expr1001 Wewnętrzne 0,00 zł C:AndrzejPDFABC jezyka SQL5.doc 81
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

ABC języka SQL
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ą: