322
5. JĘZYK BAZ DANYCH SQL
To nowe zapytanie zostało przedstawione na rys. 5.11. Powoduje ono. że spośród utworzonych grup nie będą brane pod uwagę te, w których składowa roku jest większa lub równa 1930.
□
SELECT nazwisko, SUM(długość)
FROM FilmDyr, Film WHERF. proćucer.tC# = cert#
GROUP BY nazwisko HAVING MIN(rok) < 1930;
RYSUNPK5.il
Obliczenie długości filmów wyprodukowanych dawno przez poszczególnych producentów
Ćwiczenie 5.5.1. Korzystając z następującego schematu bazy danych:
Produkt( producent, model, typ)
PC(model, szybkość, ram, hd, cd, cena)
Laptop(mcćei, szybkość, ram, hd, ekran, cena)
Drukarka(model, kolor, typ, cena)
należy zapisać w SQL zapytania zdefiniowane poniżej, korzystając przy tym z danych zawartych w tym ćwiczeniu.
Kolejność klauzul w zapytaniach SQL
Obecnie znamy już wszystkie sześć rodzajów klauzul, które mogą występować w zapytaniach select-from-where w języku SQL: SELECT, FROM, WHERE, GROUP BY, HAV1NG i GROUP BY. Jedynie pierwsze dwie z nich są konieczne, aby zapytanie było {wprawnie zbudowane. Jeśli występują inne klauzule, to musi być zachowana kolejność, w jakiej je wymieniliśmy.
*a) Obliczyć średnią częstotliwość zegarów w FC.
b) Obliczyć średnią częstotliwość zegarów w laptopach, które kosztują ponad 2500 S.
c) Obliczyć średnią cenę PC produkowanych pr/ez producenta „A”.
!d) Obliczyć średnią cenę PC i laptopów wytwarzanych przez producenta ,,D:’. e) Dla każdej szybkości zegarów podać średnią cenę PC.
*!f) Dla każdego producenta określić średnią przekątną ekranu wytwarzanego laptopa.
!g) Podać producentów, którzy' wytwarzają co najmniej trzy różne modele PC. !h) Dla każdego producenta określić maksymalną cenę wytwarzanego przez niego PC.
*!i)Dla każdej częstotliwości PC większej niż 150 określić średnią cenę.
!!j) Dla każdego producenta drukarek określić średnią cenę wytwarzanych przez niego PC.
5.6. MODYFIKACJE BAZY DANYCH
Ćwiczenie 5.5.2. Posługując się następującym schematem bazv danych z ćwiczenia 4.1.3:
Klasy {klasa, typ, kraj, liczfcaOział, działo, wyporność)
Okręt (nazwa, klasa, wodowanie)
Bitwa (nazwa, data)
Rezultat (okręt, bitwa, wynik)
należy zapisać w SQL zapytania zdefiniowane poniżej, korzystając przy tym z danych zawartych w tym ćwiczeniu.
a) Określić numery klas okrętów.
b) Określić średnią liczbę dział w poszczególnych klasach.
!c) Określić średnią liczbę dział okrętów. Zauważmy, jaka jest różnica między zadaniem (b) a (c); czy należy brać pod uwagę liczby okrętów w poszczególnych klasach?
!d) Dla każdej klasy należy określić rok wodowania pierwszego okrętu.
!e) Dla każdej klasy należy określić, ile okrętów zatonęło podczas bitew.
!! 0 Dla każdej klasy, do której należą co najmniej trzy okręty, należy określić ile okrętów' zatonęło podczas bitew.
!!g) Ciężar (w funtach) pocisku wystrzeliwanego z działa morskiego wynosi około połowy sześcianu średnicy działa (wyrażonej w calach). Dla każdego kraju należy' podać średni ciężar pocisku na jego statkach.
Do tej pory omawialiśmy standardową postać zapytań SQL: instrukcję sclect-from-where. W SQL jest jeszcze wiele innych instrukcji, które nic służą do określania nowych relacji, ale do zmiany stanu bazy danych. W bieżącym rozdziale skoncentrujemy uwagę na trzech typach instrukcji, które służą do:
1. Wstaw iania nowych krotek do relacji.
2. Usuwania pewnych krotek z relacji.
3. Zmiany wartości pewnych składowych w określonych krotkach.
Te trzy typy operacji będziemy określać wspólnym mianem modyfikacji.
Instrukcja wstawiania w podstawowej postaci składa się z następujących elementów:
1. słowa kluczowego INSERT TNTO,
2. nazwy relacji Ry