ullman237 (2)

ullman237 (2)



S. ZORIENTOWANE OBIEKTOWO JĘZYK! ZAPYTAŃ

Jeśli ma to sens, to można tworzyć wyrażenia zawierające wiele kropek. Jeśli na przykład mój Film oznacza obiekt typu Film, to wyrażenie mój-Film.należyDo oznacza obiekt typu Studio, do którego ten film należy, a z kolei wyrażenie mój Film. należyDo. nazwa oznacza tekst z nazwą tego studia.

8.2.4. Wyrażenia typu Sclect-From-Where

W języku OQL można wyrażać zapytania podobnie jak w języku SQL, stosując składnię wyrażenia select-from-whcrc. Podajemy teraz przykład zapytania o rok produkcji filmu Przeminęło z wiatrem.

SELECT m.rok FROM Filmy m

WHERE m,tytuł = „Przeminęło z wiatrem";

Zauważmy, że poza podwójnym cudzysłowem przy stałej tekstowej to zapytanie jest takie jak w języku SQL. Nic jest tylko oczywiste, czy można oczekiwać, aby klauzula FROM w SQL:

FROM Filmy A3 m

była zapisana bez słowa kluczowego AS. Ale w języku OQL słowo kluczowe AS jest opcjonalne, tak jak w SQL. Wydaje sic, żc w OQL jest ono zupełnie zbędne, ponieważ tę frazę czyta się w sposób następujący: Fi Imy m oznacza, że m jest zmienną, która przyjmuje po kolei wartości obiektów z zasięgu Filmy; zasięg oznacza stan bieżący zbioru obiektów klasy Fi '.m.

Ogólna postać wyrażenia select-from-where w języku OQL składa się z następujących elementów.

1.    Słowo kluczowa SELECT, po którym występuje lista wyrażeń.

2.    Słowo kluczowe FROM, po którym występuje lista deklaracji zmiennych. Zmienną deklaruje się, podając:

a)    Wyrażenie, którego wartość jest typu kolekcja, tzn. jest to zbiór, wielozbiór itd.

b)    Opcjonalnie słowo kluczowe AS.

c)    Nazwa zmiennej.

Najczęściej wyrażenie (a) stanowi zasięg pewnej klasy: np. Filmy w naszym przykładzie jest zasięgiem dla klasy Film. Zasięg w tym kontekście stanowi analogię relacji w klauzuli “ROM w języku SQL. Ale w języku OQI. można w deklaracji zmiennej użyć dowolnego wyrażenia oznaczającego kolekcję, np. może to być kolejne wyrażenie typu select-from-where. W języku SQI.2 nie ma bezpośredniej analogii tego przypadku, ale niektóre komercyjne systemy SQL dopuszczają występowanie podzapytań w klauzuli FROM.

3. Słowo kluczowe WHERE i wyrażenie logiczne. W tym wyrażeniu, podobnie jak w wyrażeniach w klauzuli SELECT, można jako operandów używać tylko stałych i zmiennych zadeklarowanych w klauzuli FROM. Operatory relacji są takie jak w języku SQL z tym, że do oznaczenia „nierów ne” stosuje się !=, a nie < >. Operatory logiczne są takie same jak w języku SQL: and, OR i not.

W wyniku podzapytania powstaje wielozbiór obiektów. Powstaje on przez rozpatrywanie wszystkich możliwych wartości zmiennych określonych w klauzuli FROM, w pętli zagnieżdżonej. Jeśli jakaś kombinacja wartości tych zmiennych spełnia wyrażenie warunkowe klauzuli WHERE, to obiekt opisany w klauzuli SELECT zostaje dołączony do wiclozbioru będącego wynikiem instrukcji select-from-where.

PRZYKŁAD 8.5

Poniżej przedstawiamy bardziej złożone zapytanie OQL, które obrazuje strukturę select-from-where.

SELECT s.nazwisko

FROM Filmy m, m.gwiazdy s

WHERE m.tytuł = „Casablanca"

Wynikiem tego zapytania mają być nazwiska gwiazd występujących w filmie Casablanca. Zwróćmy uwagę na kolejność wyrazów w klauzuli FROM. Najpierw określa się m jako dowolny obiekt klasy Film, stwierdzając, że wartość m ma być pobrana z zasięgu klasy Filmy. Następnie dla każdej wartości m oczekujemy, że s będzie obiektem klasy Gwiazda, należącym do zbioru m.gwiazdy, czyli do zbioru gwiazd filmu m. Czyli w pętli zagnieżdżonej rozpatruje się wszystkie pary (m, s), takie że m jest filmem, a s jest gwiazdą z tego filmu. Szkic przetwarzania tego wyrażenia można przedstawić w następujący sposób:

DLA każdego m należącego do Filmy WYKONUJ

DLA każdego s należącego do m.gwiazdy WYKONUJ JEŚLI m.tytuł = „Casablanca" TO

dołącz s.nazwisko do wynikowego wiclozbioru

Klauzula where zawęża nasze rozważania do tych par, w których wartość zmiennej m jest obiektem klasy Film o tytule Casablanca. Następnie w klauzuli SELECT powstaje w ielozbiór (który w tym przypadku akurat będzie po prostu zbiorem) zawierający wszystkie wartości atrybutu nazwisko obiektów' gwiazdy, które są wartościami s w tych parach (m, s> spełniają-


Wyszukiwarka

Podobne podstrony:
44501 ullman253 (2) 512 8 ZORIENTOWANE OBIEKTOWO JĘZYK! ZAPYTAŃ Pozostałe funkcje można definiować a
42460 ullman241 (2) 488 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ Korzystamy tutaj z podzapytania po
73187 ullman254 (2) 514 s zorientowani: obiektowo języki zapytań traktowano by jako równe, jeśli wyg
43611 ullman239 (2) 484 S. ZORIENTOWANE OBIEKTOWO JE2YK! ZAPYTAŃ SELECT m FROM Filmy :r. WHERE m.nal
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
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
ullman245 (2) "ty u S ZORIENTOWANE OBIEKTOWO JfjZYKI ZAPYTAŃ Gdy mamy już listę, uporządkowaną

więcej podobnych podstron