5. )£.Ć1K BAZ. ŁJAMYL-M SOL
Ćwiczenie 5.1.3. Należy zapisać w SQL podane poniżej polecenia, które odnoszą się do bazy danych zdefiniowanej w ćwiczeniu 4.1.1:
Produkt(producent, model, typ)
PC(model, szybkość, ram, hd, cd, cena)
Laptop (model, szybkość, ram, lici, ekran, cena)
Drukarka(model, kolor, typ, cena)
Należy także podać wyniki zapytań, korzystając z. danych z ćwiczenia 4.1.1.
*a) Określić numer modelu, częstotliwość zegara oraz pojemność dysku twardego tych wszystkich PC, które kosztują poniżej 1600 S.
'•b) Należy powtórzyć zadanie a), ale tym razem w nagłówku kolumny szybkość należy' umieścić słowo megaher tz, a w nagłówku kolumny hd słowo
gigabajty.
c) Należy wyszukać wszystkich producentów drukarek.
d) Należy wyszukać numer modelu, wielkość pamięci operacyjnej oraz przekątnej ekranu tych laptopów, które kosztują ponad 2000 $.
*e) Należy w relacji Drukarka wyszukać wszystkie krotki z kolorowymi drukarkami. Należy przy tym pamiętać, że atrybut kolor ma typ logiczny, f) Określić numer modelu, częstotliwość zegara oraz pojemność dysku twardego tych wszystkich PC, które maja CD-ROMy o parametrach 6x lub 8x oraz kosztują poniżej 2000 S. Można założyć, że atrybut cd jest ty pu tekstowego.
Ćwiczenie 5.1.4. Należy zapisać w SQL podane poniżej polecenia, które odnoszą się do bazy danych zdefiniowanej w ćwiczeniu 4.1.3:
Klasy (klasa, r.yp, kraj, liczbaDz.iai, działo, wyporność) Okręt (nazwa, klasa, wodowanie)
Bitwa (nazwa, data)
Rezultat (okręt, bitwa, wynik)
Należy także podać wyniki zapytań, korzystając z danych z ćwiczenia 4.1.3.
a) Należy podać nazwę klasy okrętów' oraz kraj dla wszystkich klas okrętów, które mają co najmniej 10 dział.
b) Należy określić nazwy wszystkich okrętów' zwodowanych przed rokiem 1918, a kolumnę wynikową należy nazwać nazwyOkrętów.
c) Należy określić wszystkie nazwy' okrętów, które utonęły oraz podać, w wyniku jakiej bitwy' to nastąpiło.
d) Wyszukać te wszystkie okręty, których nazwy są identyczne jak nazwy klas do których należą.
e) Znaleźć nazwy wszystkich okrętów, które zaczynają się od litery „R”.
!f) Wyszukać nazwy wszystkich okrętów, które są złożone z co najmniej trzech wyrazów (np. King Georga V).
Moc algebry relacji wynika przede wszystkim z tego, że umożliwia ona łączenie dwóch lub większej liczby relacji za pomocą operatorów złączenia, iloczy nu kartezjańskiego, przecięcia, sumy i różnicy. W języku SQL także można korzystać z tych wszystkich pięciu operatorów. Bezpośrednio są też dostępne operatory' z teorii mnogości: suma, przecięcie oraz różnica; będzie o tym mowa w rozdziale 5.2.5. Ale najpierw dowiemy się, w jaki sposób w języku SQL można uzyskać wynik złączenia lub iloczynu kartezjańskiego za pomocą instrukcji sclect-from-where.
W języku SQL w bardzo prosty' sposób tworzy się zapytania dotyczące wielu relacji: nazwy bowiem tych relacji, których dotyczy zapytanie, umieszcza się po prostu w klauzuli FROM. W ten sposób klauzule SET.ECT oraz WHE-RE mogą wskazać atrybuty relacji w klauzuli FROM.
PRZYKŁAD 5.10
Załóżmy, że trzeba odszukać dane producenta filmu Gwiezdne Wojny. Trzeba w tym celu przeszukać dwie relacje:
Film (tytuł, rek, długość, czyKolor, nazwaStudia, producent C#}
FimDyr(nazwisko, adres, cert#, cenaSieci)
Numer certyfikatu producenta występuje w relacji Fi lm, a więc można je uzyskać w wyniku prostego zapytania o dane z relacji Film. Potem można utworzyć kolejne zapytanie, tymi razem obejmujące dane z relacji FilmDyr, w1 wyniku którego poznamy nazwisko osoby, która ma certyfikat o numerze wyszukanym w poprzednim zapytaniu.
Można jednak połączyć te dwa zapytania, tworząc jedno, w którym będą przeszukiwane pary krotek z relacji Film i FilmDyr, a które zapisuje się następująco:
SF.LFCT nazwisko FROM Film, FilmDyr
WHERE tytuł = 'Gwiezdne Wojny' AND producentC# cert#;