ullman240 (2)

ullman240 (2)



HOO 8 ZORIENTOWANE OBIEKTOWO Jl-ZYKl ZAPYTAŃ

!e) Należy znaleźć nazwy bitew, w których zatonęły okręty z co najmniej dwóch różnych państw.

!!f) Należy podać nazwy tych wszystkich bitew, w których nie umieszczono żadnych danych o zniszczonych okrętach.

8.3. Dodatkowe postacie wyrażeń w języku OQL

W bieżącym rozdziale przyjrzymy się jeszcze innym operatorom, obok select-from-wherc, pomocnym przy tworzeniu wyrażeń. Do tych operatorów zaliczamy kwantyfikatory logiczne - dla-każdego oraz istnieje - operatory agregowania i grupowania oraz operatory algebry zbiorów - suma, przecięcie oraz różnica.

8.3.1. Wyrażenia kwantyfikowane

Można sprawdzić, czy wszystkie albo co najmniej jeden element zbioru spełnia pewien warunek. Aby sprawdzić, czy wszystkie elementy zbioru spełniają warunek C(x), gdzie * jest zmienną, używamy następującego wyrażenia OQL:

FOR ALL * IN S: C(x)

Wynik tego wyrażenia wynosi TRUE, jeśli wszystkie elementy x ze zbioru S po kolei spełniają warunek C(x), a FAL SE w przeciwnym przypadku.

Z kolei wyrażenie

EXISTS x IN S: C(x)

ma wartość TRUE, jeśli w S występuje co najmniej jeden taki element x, że warunek C(x) ma wartość TRUE, w przeciwnym razie wyrażenie przyjmuje wartość FALSE.

PRZYKŁAD 8.10

Na rysunku 8.5 przedstawiamy kolejny sposób wyrażenia zapytania „znajdź wszystkie gwiazdy filmów Disneya”. Tutaj uwagę koncentrujemy na gwieź-dzie s i pytamy, czy są takie filmy m produkcji Disneya, w których ona występuje. W wierszu 3) zapisano polecenie rozpatrzenia wszystkich filmów ze zbioru filmów s. występuj eW, który określa zbiór tych wszystkich filmów-, w których dana gwiazda s wystąpiła. Następnie w wierszu 4) sprawdzamy, czy film m został wyprodukowany przez Disneya. Jeśli znajdzie się chociaż jeden taki film /w, to wartością wyrażenia EXISTS z wierszy 3) i 4) będzie TRUE, inaczej będzie ona równa FALSE.

1)    SELECT s

2)    FROM Gwiazdy s

3)    WHERE EXISTS m IN s.WystępujeW:

4)    m.należyDo.nazwa - „Disney"

RYSUNEK 8.5

Korzystanie z zapytania egzystencjalnego

1)    SELECT s

2)    FROM Gwiazdy s

3)    WHERE FOR ALL m TN s.WystępujeW:

4)    m.należyDo.nazwa = „Disney"

RYSUNEK 8.6

Korzystanie z zapylania z kwantyfikatorcm ogólnym

PRZYKŁAD 8.11

Skorzystamy teraz z operatora dia-każdego do zapisu zapytania o te gwiazc filmowe, które wystąpiły wyłącznic w filmach produkowanych przez Disney W naszym przypadku ten zbiór będzie pusty. Można do tego zapytania doi czyć jeszcze jeden warunek, żeby do tego zbioru dołączać tylko te gwiazd które wystąpiły' chociaż w jednym filmie, ale tę poprawkę pozostawimy ■ wykonania jako ćwiczenie. Zapytanie zostało przedstawione na rys. 8.6.

8.3.2. Wyrażenia agregujące

W języku OQL można korzystać z takich samych pięciu operator* agregowania jak w'języku SQL, tzn.: AVG, COUNT, SUM, MIN i MAX. Jedna! w języku SQL były one stosowane do poszczególnych kolumn tabi a w języku OQL te same operatory stosuje się do kolekcji, których clemei muszą być określonego typu. A więc: COUNT można stosować do dowol kolekcji, SUM oraz AVG można zastosować tylko do kolekcji typów arytr tycznych, jak np. ty p integer, a z kolei MIN i max można zastosować do lekcji elementów typu. który daje się porządkować (np. typ całkowity tekstowy).

PRZYKŁAD 8.12

Przy' wyliczaniu średniej długości filmu trzeba utworzyć wielozbiór zav rający długości wszystkich filmów. Zauważmy, że nic należy w tym pi padku tworzyć zbioru, ponieważ wówczas dwie takie same długości dw rożnych filmów zostałyby potraktowane jako jedna. Zapytanie ma nastę jącą postać:

AVG (SELECT m.dłuyość FROM Filmy m)


Wyszukiwarka

Podobne podstrony:
ullman240 (2) HOO 8 ZORIENTOWANE OBIEKTOWO Jl-ZYKl ZAPYTAŃ !e) Należy znaleźć nazwy bitew, w których
76123 ullman242 (2) 8. ZORIENTOWANE OBIEKTOWO JŁ-ZYKI ZAPYTAŃ Zajmijmy się teraz klauzulą SELECT. Dl
ullman242 (2) 8. ZORIENTOWANE OBIEKTOWO JŁ-ZYKI ZAPYTAŃ Zajmijmy się teraz klauzulą SELECT. Dla każd
52682 ullman256 (2) 518 S ZORIENTOWANE OBIEKTOWO JI-ZYKI ZAPYTAŃ8.6.4. Ćwiczenia do podrozdziału 8.6
43611 ullman239 (2) 484 S. ZORIENTOWANE OBIEKTOWO JE2YK! ZAPYTAŃ SELECT m FROM Filmy :r. WHERE m.nal
42460 ullman241 (2) 488 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ Korzystamy tutaj z podzapytania po
44501 ullman253 (2) 512 8 ZORIENTOWANE OBIEKTOWO JĘZYK! ZAPYTAŃ Pozostałe funkcje można definiować a
24504 ullman238 (2) 482 S ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ T cych klauzulę WHERE. Te nazwiska s
70029 ullman243 (2) 492 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ lect-from-whcre; przedstawiono ją n
73187 ullman254 (2) 514 s zorientowani: obiektowo języki zapytań traktowano by jako równe, jeśli wyg
ullman245 (2) "ty u S ZORIENTOWANE OBIEKTOWO JfjZYKI ZAPYTAŃ Gdy mamy już listę, uporządkowaną

więcej podobnych podstron