ullman160 (2)

ullman160 (2)



Teraz już widać, żc w wierszach od 2) do 6) jest tworzony zbiór tych nazw studiów, które występują w relacji film, ale nie należą do relacji Studio. Dzięki umieszczeniu w wierszu 2) słowa kluczowego DISTINCT wiadomo, żc każde studio występuje w tworzonym zbiorze tylko jeden raz, bez względu na to, ile filmów zostało tam wyprodukowanych. W końcu elementy tego zbioru, uzupełnione wartościami NUIjL jako składowymi atrybutów adres i prezC#, są wstawiane dzięki poleceniu z wiersza 1) do relacji Studio.

5.6.2. Usuwanie

Instrukcja usuwania składa się z:

1.    słowa kluczowego DELETE FROM,

2.    nazwy relacji, powiedzmy R,

3.    słowa kluczowego WHERE oraz

4.    warunku.

Synchronizacja wstawiania

Na rysunku 5.12 pokazano przykład, który doskonale ilustruje pewną subtelną cechę semantyki instrukcji SQL. W zasadzie przetwarzanie instrukcji z wierszy od 2) do 6) powinno zostać zakończone, zanim nastąpi wstawienie opisane w wierszu 1). Chodzi o to, żeby krotki dodawane do relacji studio nie zaburzyły warunku z wiersza 4). Jednakże ze względu na efektywność przetwarzania może się zdarzyć, żc każde nowe znalezione studio zostanie wstawione natychmiast po znalezieniu, w trakcie wykonywania instrukcji z wierszy od 2) do 6).

W tym konkretnym przykładzie nie ma znaczenia, czy nowe krotki są wstawiane natychmiast po znalezieniu, czy dopiero po znalezieniu wszystkich krotek. Jednakże bywają takie sytuacje, kiedy wynik zalety od sposobu wykonania wstawień. Widać to na przykładzie z rys. 5.12, jeśli usuniemy z wiersza 2) słowo kluczowe CISTINCT. Jeśli wykonamy polecenie z wierszy od 2) do 6), zanim cokolwiek zostanie wstawione, to nazwa występująca kilkakrotnie w relacji Film w' wyniku podzapytania również wystąpi wielokrotnie, a więc także zostanie kilkakrotnie w-stawiona do relacji studio. Jeśli natomiast nowe studio wstawimy do relacji Studio natychmiast po znalezieniu go podczas wykonywania polecenia z wierszy 2) do 6), ta nazwa nie zostanie wpisana ponownie. Stanie sic tak, ponieważ nazwa została już wstawiona do relacji Studio, zatem nie spełnia ona wrarunku wyszukiwania z wierszy od 4) do 6), a tym bardziej nic zostanie uwzględniona w wyniku zapytania z wierszy od 2) do 6).


A więc postać tę można zapisać schematycznie w następujący sposób:

DE LETE FROM R WHERE <warunck>;

W wyniku takiej instrukcji każda krotka relacji R, która spełnia warunek 4), zostanie z niej usunięta.

PRZYKŁAD 5.29

Informacja o tym, że Sydney Greenstreet występował w filmie Orzeł Maltański można usunąć z relacji:

GwiazdyW{tytułFilmu, rokFilmu, nazwiskoGwiazdy) stosując następującą instrukcję języka SQL:

DELETE FROM GwiazdyW

WHERE tytułFilmu = 'Orzeł Maltański' AND rokFilmu = 1942 AND

nazwiskoGwiazdy = 'Sydney Greenstreet';

Zauważmy, że w przeciwieństwie do instrukcji insert, w instrukcji DELETE nie można po prostu wypisać wartości składowych usuwanej krotki, a trzeba do jej określenia użyć klauzuli WHERE.

Wstawianie, usuwanie oraz duplikaty'

Wstawianie i usuwanie w ciekawy sposób współdziała z duplikatami krotek, które są dopuszczalne w relacjach systemu SQL. Przede wszystkim instrukcja insert wstawia nowa krotkę bez względu na to, czy taka krotka już występuje w relacji, czy jeszcze nie. Oznacza to na przykład, żc jeśli w relacji GwiazdyW istnieje już krotka z filmem Orzeł Maltański i aktorem Scdncycm Greenstreetem, to wykonanie instrukcji INSERT, opisanej w przy kładzie 5.29, spowoduje wstawienie kolejnej takiej samej krotki. Jeśli po tym wstawieniu zostanie wykonane usuwanie, które opisano w przykładzie 5.29, to obie krotki spełnią warunek z klauzuli WHERE, a więc obie krotki zostaną usunięte. Niespodzianką tutaj jest, żc wstawianie, po którym następuje usuwanie, daje w wyniku relacje, która jest inna niż. relacja GwiazdyW sprzed tych dwóch działań. Inna niespodzianka polega na tym, że instrukcja usuwania, w której opisuje się jedną krotkę, w efekcie usuwa więcej niż tylko jedną krotkę. W $QL nic ma możliwości usunięcia tylko jednej krotki, jeśli w relacji występuje kilka identycznych krotek.


PRZYKŁAD 5.30

Oto kolejny przykład użycia instrukcji usuwania. Tym razem z relacji

FiImDyr(nazwisko, adres, cert#, cenaSieci)


Wyszukiwarka

Podobne podstrony:
57604 ullman152 (2) !> JcZYlC BAĆ. LJANTi.il podzapytania zapisanego w wierszach od 7) do 9) mogł
ullman180 (2) Wiersze od 4) do 6) są odpowiednikiem drugiej, indukcyjnej reguły. Dwa podzadania są p
już liczę już liczę............... Połącz punkty od 1 do 14, a zobaczysz, na czym pływa tygrysek. Kt
IMGw23 (2) Widełkowa tabela plac (w każdej kategorii wysokość stawek ustalona jest w określonych ram
6b (21) mV„3I2 - mV,:/2 = Ua ; E»B - E„ = U Przyrost E. w czasie od t, do (2 jest równy pracy wykona
CCF20090321062 odpowiadających n wartościom k, od 1 do n, przy czym każdy z tych składników jest ró
DSC02215 Drewno klejone powssoje poprzez sWejerte ze sobą warstw drew-a o gtuboia zwykle od !> do
48465 skanuj0157 (2) czynnika (od 8 do D). Jest to tak zwane prawo malejącej krańcowej produkcyj noś
53314 tekst8    strofa wiersza    od ę, JP«/ł W jest dokładnym
czynnika (od B do D). Jest to tak zwane prawo malejącej krańcowej produkcyjności czynników wytwórczy

więcej podobnych podstron