dZ5 5. JĘZYK BAZ DANYCH SQL
jednocześnie zostanie usunięte kilka krotek, które spełniają warunek podany w klauzuli WHERE. W wyniku wykonania instrukcji:
DELETE FROM FilmDyr WHERE cenaSieci < 10000000;
zostaną usunięci wszyscy prezesi, których sieci są tanie, czyli ich cena jest niższa niż dziesięć milionów dolarów.
O
O usuwaniu i wstawianiu krotek można powiedzieć, że są to „modyfikacje” bazy danych, natomiast instrukcja update w SQL jest specyficznym rodzajem zmian w bazie, która polega na tym że jedna lub kilka istniejących w bazie krotek jest aktualizowanych przez zmianę wartości pewnych składowych tych krotek. Instrukcja UPDATE w SQI. składa się z następujących elementów:
1. słowa kluczowego update,
2. nazwy relacji, np. /?,
3. słowa kluczowego set,
4. listy wyrażeń, z których każde określa wartość pewnego atrybutu relacji
5. słowa kluczow-ego WHERE,
6. warunku.
Zatem postać instrukcji UPDATE można przedstaw ić następująco:
UPDATE R set <nowc przypisania> WHERE <warunek>;
Każde nowe przypisanie (pozycja 4) składa się z nazwy atrybutu, znaku równości oraz wyrażenia. Jeżeli przypisań jest więcej niż jedno, to są one oddzielane przecinkami.
W wyniku wykonania omawianej instrukcji zostają wyszukane te wszystkie krotki relacji R, które spełniają warunek 6). Następnie każda z krotek jest modyfikowana zgodnie z przypisaniami zdefiniowanymi w punkcie 4) w ten sposób, że składowym znajdującym się po lewych stronach przypisań, które odpowiadają atrybutom z lewych stron przypisań, zostają nadane wartości wyliczane zgodnie z opisem zawartym w prawych stronach przypisań.
PRZYKŁAD 5.31 Modyfikacja relacji
FilmDyr(nazwisko, adres, cert#, cenaSiec.i) ma polegać na poprzedzeniu nazwisk producentów tytułem Frez., jeśli producent jest jednocześnie prezesem studia. A zatem warunkiem tego, żeby została zmodyfikowana krotka, jest, aby wartość atrybutu cert# z relacji FilmDyr występowała jako wartość atrybutu prezC# wr relacji Studio. Instrukcja modyfikacji jest wobec tego następująca:
1) UPDATE FilmDyr
2) SET nazwisko 'Prez.' || nazwisko
3) WHERE cert# IN (SELECT prezC# FROM Studio);
W wierszu 3) następuje sprawdzenie, czy numer certyfikatu z krotki FilmDyr występuje jako numer certyfikatu prezesa w relacji Studio.
W wierszu 2) następuje modyfikacja wybranych krotek. Operator || służy do oznaczenia konkatenaeji napisów, a więc wyrażenie występujące po prawej stronic znaku równości w wierszu 2) wskazuje, że nową wartość atrybutu nazwisko powstaje przez dopisanie Frez. oraz spacji przed starą wartością składowej nazwisko w tej krotce. Tak powstały napis staje się nową wartością składowej nazwisko w wybranej krotce, w rezultacie przed nazwiskami prezesów w relacji Fi : mDyr pojawi się tytuł Prez.
□
Ćwiczenie 5.6.1. Posługując się schematem bazy danych z ćwiczenia 4.11:
Produkt(producent, model, typ!
PC(model, szybkość, ram, ha, cd, cena)
Laptop(model, szybkość, ram, hć, ekran, cena)
Drukarka(model, kolor, typ, cena)
należy zapisać w SQL zdefiniowane poniżej modyfikacje. Wynik działania instrukcji należy obliczyć na podstawie danych opisanych w tym samym ćwiczeniu.
a) Za pomocą dwóch instrukcji INSERT należy do bazy danych dołączyć informację o tym, że model PC 1100 jest wykonany przez producenta C, częstotliwość jego zegara wynosi 240 MHz, pamięć operacyjna 32 MB, dysk twardy ma pojemność 2,5 GB, CD-ROM ma szybkość 12x, a cena tego modelu wynosi 2499 S.
!b) Należ>r w bazie zamieścić informację o tym, że dla każdego PC istnieje laptop o tej samej częstotliwości zegara, pamięci operacyjnej i twardym dysku oraz z CD-ROM-em o szybkości 8x, przy czym numer jego modelu jest większy niż 1100, a cena wyższa o 500 S.
c) Z bazyr danych należy usunąć te wszystkie PC. których dyski są mniejsze niż 2 GB.
d) NaleZy usunąć te wszystkie laptopy, których producenci nie wytwarzają drukarek.