2. JZ& * IV OA£. Ł/nj
e) Producent A kupuje producenta B. Należy w bazie zmienić wszystkie produkty wytwarzane przez B tak, aby ich producentem był teraz A.
1) Dla ka2dego PC należy zwiększyć dwukrotnie jego pamięć operacyjną oraz dodać jeden gigabajt dysku. (Warto pamiętać o tym, że kilka atrybutów można zmieniać jedną instrukcją UPDATE).
!g) W każdym laptopie producenta E należy zwiększyć o jeden cal przekątną ekranu oraz zmniejszyć jego cenę o 100 S.
Ćwiczenie 5.6.2. Posługując się następującym schematem bazy danych z ćwiczenia 4.1.3:
Klasy (klasa, typ, kraj, liczbaDział, działo, wyporność) Okręt (nazwa, klasa, wodowanie)
Bitwa (nazwa, dat.a)
Rezultat (okręt, bitwa, wynik)
należy zapisać w SQL modyfikacje zdefiniowane poniżej. Wynik działania instrukcji należy' obliczyć na podstawie danych opisanych w tym samym ćwiczeniu.
*a) Dwa brytyjskie okręty klasy Nelson Nelson oraz Rodncy - były zwodowane w 1927 r., miały po dziewięć dział 16-calowych oraz wyporność 34 000 ton. Należy te dane dołączyć do bazy danych, b) Dwa z trzech włoskich okrętów klasy Vittorio Vencto - Yittorio Ycneto oraz Italia - były zwodowane w 1940 r., trzeci statek w tej klasie Roma został zwodowany w 1942 r. Wszystkie miały po dziewięć dział 15-ca-lowych oraz wyporność 41 000 ton. Należy te dane dołączyć do bazy danych.
*c) Należy z relacji Okręty usunąć wszystkie okręty, które zatonęły podczas bitew.
*d) Należy zmodyfikować relację K I asy w ten sposób, żeby kalibry dział były podane w centymetrach (jeden cal = 2,5 centymetra), a wyporność w tonach metrycznych (jedna tona metryczna ~ 1,1 tony), e) Należy z bazy usunąć wszystkie klasy, w których jest mniej niż trzy okręty.
\V bieżącym podrozdziale opiszemy sposoby definiowania danych, czyli tę część języka SQL, która służy do definiowania struktur danych przechowywanych w bazie. Natomiast te fragmenty’ SQI., o których była mowa dotychczas, czyli zapytania i modyfikacje, często są nazywane manipulowaniem danymi.
W bieżącym podrozdziale zajmiemy się zagadnieniem deklaracji schematów relacyjnych. Określimy sposób opisyyvania w schemacie nowych relacji, które w SQL są nazywane tabelami. Opis schematu relacji w SQI. obejmuje nazwy atrybutów, ich typy oraz pewne więzy, na przykład klucze. W podrozdziale 5.8 przedstawimy perspektywy, czyli relacje „wirtualne”, takie, które nic są zapisywane w bazie jako zbiory danych. Bardziej złożone aspekty dotyczące więzów relacji omówimy w rozdziale 6.
Zacznijmy od określenia podstawowych ty pów danych, które są dostępne w języku SQL. Każdy atrybut musi mieć przypisany typ.
1. Teksty o stałej lub zmiennej długości. Typ CHAR (n) oznacza tekst o ustalonej długości n znaków. Oznacza to, że jeśli typem atrybutu jest CHAR (n), to składowa każdej krotki, odpowiadająca temu atrybutowi, będzie tekstem o długości n znaków. Z kolei VARCHAR(n) oznacza tekst o długości co najwyżej n znaków'. Składowa atrybutu tego typu są napisami o długości od 0 do w znaków. W języku SQL obowiązują rozsądne zasady traktowania wartości typu tekstowego. Jeśli zadeklaruje się typ o stałej długości, to tekst o mniejszej liczbie znaków od zadeklarowanej zostanie uzupełniony spacjami. Jeśli na przykład składowej atrybutu ty pu CHAR (5) zostanie przypisana wartość ;ala\ to w bazie zostanie zapisany tekst 'ala' uzupełniony dwiema spacjami. Ale przy porównywaniu wartości tej składowej z innym napisem te spacje będą pomijane (zobacz p. 5.1.3).
2. Ciągi binarne o stałej lub zmiennej długości. Są one podobne do tekstów znakowych o stałej lub zmiennej długości, ale ich wartościami są ciągi wrartości bitów, a nie znaków. Typ BIT (ni oznacza ciąg bitów o długości n, natomiast bit varying (n) oznacza ciąg o długości co najwyżej n bitów.
3. Typ INT lub TNTFGER (są to synonimy) określa typowe wartości całkowite. Typ SHORTINT także oznacza wartości całkowite, ale w tym przypadku dopuszczalna liczba cyfr może być mniejsza, zależnie od implementacji (podobnie jak to występuje w przypadku typów int oraz short int w języku C).
4. Liczby zmiennopozycyjne można przedstawiać na kilka różnych sposobów'. Można używać w tym przypadku typów FLOAT lub REAL (są one synonimami). Do zapisywania wartości z większą dokładnością stosuje się typ DOUBLE PRECISION, przy czym jego znaczenie jest podobne jak w języku C. W języku SQL istnieje również typ, który oznacza liczby rzeczywiste stałopozycyjnc. Na przykład DEC imał (n, c) oznacza wartości zapisywane na n pozycjach dziesiętnych, przy czym zakłada się, żc kropka oddzielająca część całkowitą od ułamkowej znajduje się na pozycji d+1, licząc od prawej strony. A więc na przykład 0123.45 jest poprawną wartością dla typu DEC IMAŁ (6, 2).