53669 ullman151 (2)

53669 ullman151 (2)



308 5. JEŻYK BAZ DANYCH SQL T

5.3.2. Warunki obejmujące relacje

W języku SQL istnieje szereg operatorów, które można zastosować do relacji R i otrzymać wynik będący wartością logiczną. Jako najbardziej typowy przykład rozpatrzmy pewną relację R, która pow staje w wyniku podzapy-tania select-from-where. Niektóre operator)': IN, ALL i ANY wymagają, aby została podana również pewna wartość skalarna s i aby w tym przypadku byłą relacją jednoargumentową. Poniżej przedstawiamy definicje operatorów:

1.    EXISTS R oznacza warunek, który jest spełniony wtedy i tylko wtedy, gdy relacja R nie jest pusta.

2.    s IN R jest prawdą wtedy i tylko wtedy, gdy s jest równe pewnej wartości należącej do R. W tym przypadku R musi być relacją jednoargumentową. Istnieją jednak rozszerzenia operatorów TN oraz NOT IN na przypadki, gdy wr schemacie relacji R występuje więcej niż jeden atrybut, a .sjest krotką; będzie o tym mowa w p. 5.3.3.

3.    s > ALL R jest prawdą wtedy i tylko wtedy, gdy s jest większe od wszystkich wartości jednoargumentowej relacji R. Operator > można zastąpić każdym z pięciu pozostałych arytmetycznych operatorów porównania, znaczenie będzie właściwe dla danego operatora. Na przykład s<> ALL R ma takie samo znaczenie jak 5 not in R.

4.    s > ANY R jest prawdą wtedy i tylko wtedy, gdy s jest większe od co najmniej jednej wartości w jednoargumentowej relacji R. Podobnie jak poprzednio operator > można zastąpić każdym z pięciu pozostałych arytmetycznych operatorów porównania. Wynik porównania s = ANY R jest taki sam jak wynik porównania s TN R.

Z operatorów t;xiS?S, all oraz ANY można tworzyć operatory o znaczeniu przeciwnym (tzn. nic istnieje, nic wszystkie, żaden) przez poprzedzenie wyrażenia spójnikiem logicznym NOT, czyli tak jak to się robi w przypadku każdego wyrażenia logicznego. Wyrażenie NOT EXISTS R jest prawdziw-e wtedy i tylko wtedy, gdy R jest relacją pustą. Z kolei wyrażenie NOT s > ALL jest praw'dziwre wtedy i tylko wtedy gdy s nie jest maksymalną w'artością w R, a NOT s > ANY R jest prawdziwe wtedy i tylko wtedy, gdy j jest minimalną wartością w' R. Wkrótce przedstawimy kilka przykładów użycia tych operatorów.

5.3.3. Wyrażenia dotyczące krotek

W języku SQL krotki są reprezentowane przez listy wrartości skalarnych ujęte w' nawiasy. Jako przykłady można wskazać (123/ ' foo') lub (nazwisko, adres, sieć). W pierwszym przykładzie składowe są wartościami stałymi, w drugim - nazwami atrybutów. Nic można na tej samej liście umieszczać wartości stałych oraz atrybutów.

Jeśli w krotce i liczba składowych jest taka sama jak liczba atrybutów w' relacji R, to porównywanie / i R w wyrażeniach, opisywanych w bieżącym rozdziale, ma rację bytu. Przykłady właściwie sformułowanych wyrażeń to IN R lub t <> ANY R. To drugie porównanie oznacza, że w relacji R istnieje krotka, która jest różna od krotki t. Trzeba pamiętać o tym, że przy porównywaniu krotki z elementami relacji R składowe są łączone do pary zgodnie z kolejnością atrybutów określoną dla relacji R.

1)    SELECT nazwisko

2)    EROM FiimDyr

3)    WHERE cert# IN

4)    (SELECT    producenrC*

5)    FROM    Film

6)    WHERE    (tytuł, rok.)    IN

7)    (SELECT tytułFilmu, rokFilmu

8)    FROM GwiazdyW

9)    WHERE nazwiskoGwiazdy    'Harriscn Ford'

10)    )

11) ~ );

RYSUNEK 5.5

Wyszukiwanie producentów filmów z Harrisonem Fordem

PRZYKŁAD 5.18

Na rysunku 5.5 przedstawiono zapytanie, którego wynik zawiera nazwiska producentów filmów z udziałem Harrisona Forda. Zapytanie dotyczy danych zapisanych w następujących trzech relacjach:

Film(tytuł, rok, długość, czyKolor, nazwaStudia, producentC#}

GwiazdyW(tytułFilmu, rokFilmu, nazwiskoGwiazdy)

FiimDyr(nazwisko, adres, cert#, cenaSieci)

Zapytanie jest złożone z zapytania „głównego”, podzapytania zapytania głównego i trzeciego zapytania zagnieżdżonego w podzapytaniu.

Analizę rozpoczniemy od najbardziej zagnieżdżonego zapylania, a następnie będziemy rozpatrywać zapytania bardziej zewnętrzne. A więc o czym mówią wiersze od 7) do 9)? To zapytanie powoduje, że są przeglądane wszystkie krotki relacji GwiazdaW i do jego wyniku należą wszystkie krotki zawierające stałą ' Harrison Ford' jako składową atrybutu nazwiskoGwiazdy. Wynik obejmuje tylko wartości atrybutów' cytułFilmu i rok-Fiimu z wybranych krotek. Przypomnijmy, że te dwa atrybuty razem, a nie sam tytuł, stanowią klucz dla filmów', a więc, aby jednoznacznie określić, o który film chodzi, trzeba dysponować obiema wartościami. Wynikiem


Wyszukiwarka

Podobne podstrony:
ullman142 (2) 290 5. JEŻYK BAZ DANYCH SQL drugiego tekstu. Podobnie jak to występowało w przypadku t
ullman158 (2) 322 5. JĘZYK BAZ DANYCH SQL To nowe zapytanie zostało przedstawione na rys. 5.11. Powo
ullman161 (2) dZ5 5. JĘZYK BAZ DANYCH SQL jednocześnie zostanie usunięte kilka krotek, które spełnia
70987 ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrz
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrzec, że
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman146 (2) 5. JĘZYK BAZ DANYCH SQL zmienną krotkową i kropką. A więc zmienna krotkowa jest inną n
ullman176 (2) 5. jęZYK. BAZ DANYCH SQL Złączenie naturalne w języku $QL2 ma dokładnie takie same wła
ullman140 (2) 286 $. jąZYK BAZ DANYCH SQL PRZYKŁAD 5.3 Poniższy przykład dotyczy lego samego zapytan
ullman141 (2) 288 5 JĘZYK BAZ DANYCH SQI. W przykładzie 5.1 występuje porównanie: nazwaStudia = Dis

więcej podobnych podstron