You are on page 1of 28

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Access 2003 PL. wiczenia


praktyczne. Wydanie II
Autorzy: Danuta Mendrala, Marcin Szeliga
ISBN: 83-246-0677-7
Format: A5, stron: 184
Przykady na ftp: 88 kB

Napisz wasn aplikacj bazodanow


Zaprojektuj tabele i zdefiniuj relacje pomidzy nimi
Utwrz formularze i kwerendy
Wygeneruj raporty z bazy
Microsoft Access to jedna z najpopularniejszych baz danych wykorzystywanych
w przedsibiorstwach. Od innych systemw zarzdzania bazami danych rni si tym,
e zawiera zintegrowane rodowisko programistyczne, za pomoc ktrego mona
zbudowa wasn aplikacj suc do manipulowania danymi zgromadzonymi w bazie.
Dziki kreatorom i narzdziom pomocniczym samodzielne utworzenie bazy danych oraz
takiej aplikacji jest stosunkowo atwe nawet dla uytkownikw, ktrzy nigdy wczeniej
nie pracowali z bazami danych.
Access 2003 PL. wiczenia praktyczne. Wydanie II to podrcznik przedstawiajcy
podstawowe zasady korzystania z Accessa i tworzenia wasnej aplikacji bazodanowej.
Przeczytasz w nim o projektowaniu i tworzeniu tabel, wizaniu ich relacjami oraz
wprowadzaniu danych. Zbudujesz kwerendy rnego typu i wykorzystasz je do
modyfikowania oraz wybierania informacji z tabel. W kolejnych wiczeniach
nauczysz si projektowa formularze i raporty oraz dzieli aplikacj na moduy.
Praca z plikami baz danych
Tworzenie tabel
Relacje
Operacje na danych z zastosowaniem kwerend
Projektowanie formularzy
Tworzenie raportw
Makropolecenia
Korzystanie z plikw w formacie XML

Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl

Poznaj moliwoci baz danych i zapomnij o notesach oraz tych karteczkach

Wstp
Rozdzia 1. Baza danych

5
9

Instalacja

Rozdzia 2. Tabele
Rozdzia 3. Relacje
Rozdzia 4. Kwerendy

27
49
67

Kwerendy wybierajce dane


Kwerendy krzyowe
Podzapytania
Kwerendy tworzce tabele
Kwerendy aktualizujce
Kwerendy doczajce
Kwerendy usuwajce

Rozdzia 5.
Rozdzia 6.
Rozdzia 7.
Rozdzia 8.
Rozdzia 9.
Dodatek A

Formularze
Raporty
Strony dostpu do danych
Makra
Moduy
Co nowego?

68
83
85
86
88
89
91

93
117
131
139
147
175

Podzielenie zapisanych w bazie danych pomidzy odpowiednie tabele wyeliminowao dane nadmiarowe, ale utrudnio
uytkownikom pobieranie interesujcych ich w danym momencie informacji. Na przykad, aby odczyta nazwisko reysera i tytuy
wyreyserowanych przez niego filmw, trzeba odwoa si do dwch
powizanych ze sob tabel. Rwnie modyfikowanie, wstawianie
i usuwanie danych zostao utrudnione (np. niemoliwe jest usunicie
rekordu z tabeli podrzdnej, jeeli klucz podstawowy tego rekordu
wystpuje cho raz w tabeli nadrzdnej).
Kolejny typ obiektw bazy danych programu Access kwerendy
eliminuje te niedogodnoci, poniewa pozwala na zautomatyzowanie operacji pobierania, modyfikowania i usuwania zapisanych
w tabelach danych, a take na wprowadzanie do tabel nowych informacji. Wszystkie systemy zarzdzania relacyjnymi bazami danych,
w tym Access, wykonuj wyej wymienione operacje za pomoc instrukcji strukturalnego jzyka zapyta (SQL), a kwerendy s wanie
zapisanymi w bazie danych instrukcjami tego jzyka.
W zalenoci od rodzaju wykonywanej przez kwerend operacji, dzieli
si je na:
q kwerendy wybierajce dane (instrukcje SELECT jzyka SQL),
q kwerendy krzyowe (instrukcje SELECT jzyka SQL uzupenione
o charakterystyczn dla SZBD Access funkcj TRANSFORM),
q kwerendy tworzce tabele (instrukcje SELECT INTO jzyka SQL),

68

Access 2003 PL wiczenia praktyczne

q kwerendy aktualizujce istniejce dane (instrukcje UPDATE jzyka

SQL),
q kwerendy doczajce dane (instrukcje INSERT INTO jzyka SQL),
q kwerendy usuwajce istniejce dane (instrukcje DELETE
jzyka SQL).

Najczciej wykorzystywan i najbardziej rozbudowan instrukcj


jzyka SQL jest instrukcja SELECT, ktrej w SZBD odpowiadaj kwerendy wybierajce dane (ten typ jest typem domylnym nowo tworzonych kwerend). Kwerendy tego typu pobieraj dane zapisane w tabelach, przeksztacaj je lub wyliczaj na ich podstawie dane pochodne
(np. na podstawie ceny towaru SZBD Access moe wyliczy warto
podatku).
W I C Z E N I E

4.1

Wybieranie kolumn z tabeli

Stosunkowo rzadko uytkownika interesuj wszystkie zapisane w tabeli


dane o danym obiekcie. Na przykad, jeeli w danym momencie interesuje go data produkcji filmu o okrelonym tytule, to prawdopodobnie
nie chce on zna nazwiska osoby, ktra go poyczya.
Aby za pomoc kreatora utworzy kwerend wybierajc dane zapisane
w okrelonych kolumnach tabeli:
1. Uruchom baz danych Filmoteka.
2. Z wywietlanej w gwnym oknie bazy danych listy typw
obiektw wybierz Kwerendy i dwukrotnie kliknij opcj Utwrz
kwerend za pomoc kreatora.
3. W polu kombi Tabele/Kwerendy wybierz tabel rdow

(tabel, w ktrej znajduj si pobierane w ramach kwerendy


dane). W tym przypadku bdzie to tabela Film.
4. Z listy dostpnych pl wybierz kolumny Tytul i DataPr
(rysunek 4.1).

Rozdzia 4. Kwerendy

69

Rysunek 4.1.
Pierwszym
krokiem pracy
kreatora kwerend
jest wybr danych
rdowych

5. Podaj nazw nowej kwerendy (Film_Tytul) i zakocz prac

kreatora, otwierajc kwerend. Na ekranie zostanie wywietlona


lista tytuw filmw i dat ich produkcji.
6. Wywietl kwerend w Widoku SQL (aby wywietli list

dostpnych dla kwerend widokw, naley klikn znajdujc


si w lewym grnym rogu ekranu, tu obok ikony Widok,
skierowan w d strzak). Tworzca kwerend instrukcja
jzyka SQL powinna wyglda nastpujco:
7. SELECT Film.Tytul, Film.DataPr
8. FROM Film;
9. Zamknij okno kwerendy.
W I C Z E N I E

4.2

Wyraenia arytmetyczne

Na podstawie przechowywanych w bazie danych SZBD moe wyliczy


dane pochodne. Dane te mog by wyliczone na podstawie danych
zapisanych w pojedynczych polach (np. podwojona cena zakupu filmw, ostatnia litera nazwiska reysera filmu) albo na podstawie danych
zapisanych w kilku polach. Aby pokaza t moliwo, dodamy do
definicji tabeli Film kolumn typu liczbowego (Zysk), w ktrej bdziemy zapisywa osignity z wypoyczania danego filmu zysk.
W tym celu:
1. Wywietl widok projektu tabeli Film.

70

Access 2003 PL wiczenia praktyczne

2. Kliknij prawym przyciskiem myszy na polu znajdujcym si

poniej pola Cena i z menu kontekstowego wybierz opcj


Wstaw wiersze.
3. W nowo powstaym polu wpisz nazw kolumny (Zysk),
okrel jej typ (Pojedyncza precyzja) i tytu (Zysk z wypozyczania).
4. Przecz tabel Film do widoku arkusza danych,

zapisz wprowadzone zmiany i wpisz przykadowe dane


do kolumny Zysk.
5. Zamknij okno arkusza danych tabeli Film, na licie typw

obiektw wybierz Kwerendy i dwukrotnie kliknij opcj Utwrz


kwerend w widoku projektu.
6. Dodaj do listy tabel rdowych kwerendy tabel Film i zamknij

okno Pokazywanie tabeli.


7. W pierwszym polu wywietlanej w dolnej czci ekranu tabeli

wybierz kolumn, w ktrej przechowywane s tytuy filmw


(rysunek 4.2).

Rysunek 4.2. Wybieranie kolumn rdowych w widoku projektu tabeli jest


rwnie atwe, jak za pomoc kreatora kwerend
Symbol * oznacza wszystkie kolumny. Tak wic, jeeli kwerenda
ma zwrci wszystkie dane zapisane w tabeli, moemy albo kolejno
zaznacza wszystkie kolumny, albo wybra ten symbol.
8. W drugim polu wybierz kolumn Cena.
9. Trzecia kolumna kwerendy bdzie zwracaa zaokrglon

do liczb cakowitych cen zakupu filmu. W tym celu w kolejnym

Rozdzia 4. Kwerendy

71

polu wpisz CINT(Cena) funkcja jzyka VBA CINT konwertuje


dane przekazane jako argument jej wywoania do typu liczb
cakowitych (ang. Integer).
10. W czwartej kolumnie kwerendy zwracane bd informacje
o zysku osignitym z wypoyczania filmu z listy kolumn
tabeli rdowej wybierz Zysk.
11. Ostania kolumna kwerendy bdzie zwracaa dane o zysku
(lub stracie) wyliczone jako rnica pomidzy cen zakupu
filmu a uzyskanym z jego wypoyczania zyskiem. W tym celu
w kolejnym polu wpisz ZyskCena. Projekt kwerendy pokazany
zosta na rysunku 4.3.

Rysunek 4.3. Kwerenda zwracajca dane rdowe i wyliczone


na ich podstawie dane pochodne
12. Aby uruchomi kwerend, nacinij znajdujc si na pasku

narzdzi kwerendy ikon Uruchom ( ). Na ekranie zostan


wywietlone dane przypominajce te pokazane na rysunku 4.4.
Rysunek 4.4.
Kwerenda
zwraca tytu filmu,
cen zakupu,
zaokrglon cen
zakupu, zysk
i rnic pomidzy
cen zakupu
a osignitym
zyskiem

72

Access 2003 PL wiczenia praktyczne

13. Przecz si do Widoku SQL. Tworzca kwerend instrukcja

jzyka SQL powinna wyglda nastpujco:


SELECT Film.Tytul, Film.Cena, CInt([Cena]) AS Wyr1, Film.Zysk,
[Zysk]-[Cena] AS Wyr2
FROM Film;

14. Zamknij okno kwerendy i zapisz j pod nazw Film_Zysk.


W I C Z E N I E

4.3

Literay

SZBD Access umoliwia rwnie dodawanie do wyniku kwerend


dodatkowych kolumn, zawierajcych we wszystkich polach t sam,
okrelon warto.
Aby utworzy kwerend, w ktrej tytu filmu zostanie oddzielony od daty
jego produkcji cigiem znakw nakrcony w :
1. Utwrz now kwerend w widoku projektu.
2. Jako tabel rdow wybierz tabel Film.
3. Jako pierwsz kolumn kwerendy wybierz kolumn Tytu,
jako trzeci kolumn DataPr.
4. W polu drugiej kolumny kwerendy wpisz cig znakw
"nakrcony w " (w programie Access cigi znakw musz by
umieszczane w cudzysowach, w innym wypadku bd
traktowane jako identyfikatory obiektw, nazwy zmiennych
lub zastrzeone sowa kluczowe). Gotowy projekt kwerendy
zosta pokazany na rysunku 4.5.

Rysunek 4.5. Kwerenda dodajca do zwracanych danych rdowych tekst


opisujcy te dane

Rozdzia 4. Kwerendy

73

5. Uruchom kwerend, a nastpnie przecz si do Widoku SQL.

Definicja kwerendy powinna wyglda nastpujco:


SELECT Film.Tytul, "nakrcony w " AS Wyr1, Film.DataPr
FROM Film;

6. Zamknij okno kwerendy i zapisz j pod nazw Film_DataPr.


W I C Z E N I E

4.4

czenie cigw znakw

Zgodnie z reguami teorii relacyjnych baz danych, projektujc tabel,


w poszczeglnych kolumnach zapisalimy niepodzielne, atomowe
informacje. Czasami jednak chcielibymy poczy w jednej kolumnie
dane przechowywane w kilku kolumnach.
Aby wywietli adres osoby w jednej kolumnie:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabel rdow wybierz tabel Osoba.
3. Jako pierwsz kolumn kwerendy wybierz kolumn Nazwisko.
4. W polu drugiej kolumny kwerendy wpisz wyraenie Miasto M "
" M UlicaNrDomu symbolem operatora konkatenacji (czenia

cigw znakw) w SZBD Access jest znak &, pojedyncza spacja


dodana pomidzy nazw miasta a ulicy poprawi czytelno
wyniku.
5. Uruchom kwerend, a nastpnie przecz si do Widoku SQL.

Definicja kwerendy powinna wyglda nastpujco:


SELECT Osoba.Nazwisko, Miasto & " " & UlicaNrDomu AS Wyr1
FROM Osoba;

6. Zamknij okno kwerendy i zapisz j pod nazw Osoba_Adres.


W I C Z E N I E

4.5

Eliminowanie duplikatw

Oczywicie w dobrze zaprojektowanej relacyjnej bazie danych te same


dane nie s wielokrotnie przechowywane. Jednak typ czcych poszczeglne tabele relacji powoduje, e niektre informacje mog by
zwrcone uytkownikowi kilkukrotnie. Na przykad, gdybymy chcieli
wywietli ca zawarto tabeli Film_Aktor, to dane o tym samym

74

Access 2003 PL wiczenia praktyczne

filmie zostan wywietlone tyle razy, ilu gra w nim wpisanych do


bazy aktorw, a dane tego samego aktora tyle razy, w ilu filmach
zagra.
Aby wyeliminowa z wyniku kwerendy duplikaty danych:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabel rdow wybierz tabel Film_Aktor.
3. Na pierwsz kolumn kwerendy wybierz kolumn IdFilmu.
4. Uruchom kwerend w wyniku zostanie wywietlona lista

tytuw filmw, w ktrych gra przynajmniej jeden aktor


(rysunek 4.6).
Rysunek 4.6.
Tytuy filmw,
w ktrych gra
kilku aktorw,
wywietlone
zostay
wielokrotnie

5. Wywietl kwerend w Widoku SQL.


6. Ustaw kursor za sowem SELECT i dopisz sowo kluczowe DISTINCT:
SELECT DISTINCT Film_Aktor.IdFilmu
FROM Film_Aktor;

7. Ponownie uruchom kwerend tym razem duplikaty tytuw

zostay automatycznie usunite z wyniku kwerendy (rysunek 4.7).


Rysunek 4.7.
Sowo kluczowe
DISTINCT
powoduje usunicie
z wyniku kwerendy
wszystkich
powtrze
8. Zamknij okno kwerendy i zapisz j pod nazw Filmy_zAktorami.

Rozdzia 4. Kwerendy

75

W I C Z E N I E

4.6

Sortowanie danych

Utworzone do tej pory kwerendy1 zwracay dane w takim porzdku,


w jakim informacje te zapisane byy w tabelach rdowych. Natomiast
uytkownicy bazy danych spodziewaj si informacji posortowanych
wedug okrelonych kryteriw, np. tytuw lub cen filmw czy nazwisk
ich reyserw.
Aby posortowa dane zwracane przez kwerend:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabel rdow wybierz tabel Film.
3. Pierwsz kolumn kwerendy bdzie kolumna Tytul,
drug Cena.
4. Rozwi pole Sortuj: kolumny Cena i wybierz z listy pozycj
Malejco.
5. Uruchom kwerend dane o filmach zostay posortowane
od najdroszego do najtaszego filmu.
6. Wywietl kwerend w Widoku SQL. Definicja kwerendy
powinna wyglda nastpujco:
SELECT Film.Tytul, Film.Cena
FROM Film
ORDER BY Film.Cena DESC;

7. Zapisz kwerend pod nazw Film_Cena.


W I C Z E N I E

4.7

Ograniczanie liczby wierszy

SZBD Access umoliwia nie tylko sortowanie zwracanych przez kwerendy danych, ale rwnie ograniczanie wynikw kwerendy do okrelonej w sposb bezwzgldny lub procentowy liczby wierszy.
Aby wywietli tytuy trzech przynoszcych najwiksze zyski filmw:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabel rdow wybierz tabel Film.
1

Wyjtkiem s posortowane przez kreatora odnonikw dane zwracane


przez kwerend Filmy_zAktorami.

76

Access 2003 PL wiczenia praktyczne

3. Pierwsz kolumn kwerendy bdzie kolumna Tytul,

drug Zysk.
4. Rozwi pole Sortuj: kolumny Zysk i wybierz z listy pozycj
Malejco.
5. W znajdujcym si na pasku narzdzi Projekt kwerendy polu
kombi Najwysze wartoci wpisz 3 (rysunek 4.8).

Rysunek 4.8. W praktyce ogranicza si liczb wczeniej posortowanych


danych w innym wypadku SZBD Access zwrciby informacje
o trzech, wybranych na podstawie pozycji wiersza w tabeli, filmach
6. Uruchom kwerend, a nastpnie przecz si do Widoku SQL.

Definicja kwerendy powinna wyglda nastpujco:


SELECT TOP 3 Film.Tytul, Film.Zysk
FROM Film
ORDER BY Film.Zysk DESC;

7. Zapisz kwerend pod nazw Film_Dochodowe.


W I C Z E N I E

4.8

Wybieranie filmw na podstawie ich tytuw

Dotychczas utworzone kwerendy zwracay wybrane kolumny, ale


wszystkie wiersze tabel rdowych2. Tymczasem uytkownikw
stosunkowo rzadko interesuj informacje o wszystkich filmach czy
osobach. Zamiast tego chcieliby na przykad dowiedzie si, kto poyczy film o okrelonym tytule czy pozna list filmw danego reysera.
2

Z wyjtkiem zwracajcej okrelon liczb danych kwerendy Film_Dochodowe.

Rozdzia 4. Kwerendy

77

Zrealizowanie tego zadania wymaga selekcjonowania (wybierania)


danych. Operacja ta przeprowadzana jest za pomoc zdefiniowanego
dla kwerendy warunku logicznego.
Aby wywietli dane filmu o okrelonym tytule:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabel rdow wybierz tabel Film.
3. Na kolejne kolumny kwerendy wybierz kolumny: Tytul, Cena,
IdGatunku, IdOsoby.
4. W polu Kryteria: kolumny Tytul wpisz warunek logiczny: Like
"*life*" (operator LIKE jest operatorem sprawdzania zgodnoci
cigu znakw, w tym przypadku tytuw filmw, z podanym
wzorcem. Zapisany w cudzysowie wzorzec jest zgodny z tytuami,
ktre zawieraj wyraz life wystpujcy przed i po tym sowie
znak gwiazdki zastpuje dowolny cig znakw).
Lista wszystkich operatorw jzyka SQL znajduje si w rozdziale 3.
5. Uruchom kwerend, a nastpnie przecz si do Widoku SQL.

Definicja kwerendy powinna wyglda nastpujco:


SELECT Film.Tytul, Film.Cena, Film.IdGatunku, Film.IdOsoby
FROM Film
WHERE (((Film.Tytul) Like "WliReW"));

6. Zapisz kwerend pod nazw Filmy_Life.


W I C Z E N I E

4.9

Wybieranie filmw na podstawie ich ceny

Aby wybra tytuy filmw, ktrych cena zakupy naley do przedziau


od 5 do 50 zotych:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabel rdow wybierz tabel Film.
3. Jako pierwsz kolumn kwerendy wybierz Tytul, jako drug
Cena.
4. W polu Kryteria: kolumny Cena wpisz warunek logiczny:
Between 5 And 50 (operator BETWEEN B AND sprawdza, czy dana
warto naley do okrelonego przedziau, i moe zosta
zastpiony ponisz koniunkcj >5 And <50).

78

Access 2003 PL wiczenia praktyczne

5. Uruchom kwerend chocia lista filmw zostaa ograniczona

do tych, za ktre zapacilimy wicej ni 5 i mniej ni 50 zotych,


to oprcz tytuw filmw zwracana jest ich cena. Ponownie
wywietl kwerend w widoku projektu.
6. Odznacz pole wyboru Poka: w kolumnie Cena i raz jeszcze

uruchom kwerend (rysunek 4.9).


Rysunek 4.9.
Kolumna przechowujca
dane wykorzystane
do wybierania wierszy
nie musi zosta
wywietlona w wyniku
kwerendy
7. Wywietl kwerend w Widoku SQL. Jej definicja powinna

wyglda nastpujco:
SELECT Film.Tytul
FROM Film
WHERE (((Film.Cena) Between 5 And 50));

8. Zamknij okno kwerendy i zapisz j pod nazw Filmy_5do50.


W I C Z E N I E

4.10

Wybieranie filmw na podstawie przynoszonego


przez nie zysku

SZBD umoliwia wybieranie danych nie tylko na podstawie zoonych


warunkw logicznych (warunkw logicznych, ktre skadaj si z kilku
poczonych operatorami AND lub OR warunkw), ale rwnie na podstawie warunkw, ktre odwouj si do wartoci przechowywanych
w tabelach.
Aby wywietli tytuy tych filmw, ktrych cena zakupu przekracza zyski
uzyskane z tytuu ich wypoyczenia:
1. Utwrz now kwerend w widoku projektu.
2. Na tabel rdow wybierz tabel Film.
3. Jako pierwsz kolumn kwerendy wybierz Tytul, jako drug

Cena.

Rozdzia 4. Kwerendy

79

4. W polu Kryteria: kolumny Cena wpisz warunek logiczny: >[zysk]

(nawias klamrowy informuje SZBD Access, e cig znakw


zysk ma by traktowany jako nazwa kolumny, a nie jako wyraz
jzyka polskiego).
5. Uruchom kwerend, a nastpnie wywietl j w Widoku SQL.
Jej definicja powinna wyglda nastpujco:
SELECT Film.Tytul
FROM Film
WHERE (((Film.Cena)>[zysk]));

6. Zapisz kwerend pod nazw Filmy_Zysk.


W I C Z E N I E

4.11

Wybieranie za pomoc kreatora danych


z poczonych tabel

Potrafimy ju nie tylko wybiera kolumny, ale rwnie wiersze zawierajce dane zwracane przez kwerendy. Wiemy rwnie, jak zwraca
wyliczone na podstawie innych wartoci dane i je porzdkowa. Kolejnym zadaniem jest wybieranie danych zapisanych w poczonych ze
sob tabelach.
Aby wywietli nazwiska reyserw i tytuy ich filmw:
1. Utwrz now kwerend za pomoc kreatora.
2. Z tabeli Film wybierz kolumn Tytul, z tabeli Rezyser
Nazwisko (rysunek 4.10).
Rysunek 4.10.
Pobieranie
danych
zapisanych
w poczonych
tabelach

80

Access 2003 PL wiczenia praktyczne

3. Podaj nazw nowo tworzonej kwerendy (Film_Rezyser),

uruchom j, a nastpnie wywietl w Widoku SQL. Struktura


kwerendy powinna wyglda nastpujco:
SELECT Film.Tytul, Rezyser.Nazwisko
FROM Rezyser INNER JOIN Film ON Rezyser.IdRezysera = Film.IdRezysera;
W I C Z E N I E

4.12

Wybieranie danych z poczonych tabel

Aby wywietli nazwiska aktorw grajcych w poszczeglnych filmach:


1. Utwrz now kwerend w widoku projektu.
2. Na tabele rdowe wybierz tabele: Film, Film_Aktor i Aktor.
3. Jako pierwsz kolumn kwerendy wybierz kolumn Tytul tabeli

Film, jako drug kolumn Nazwisko tabeli Aktor (rysunek 4.11).

Rysunek 4.11. Definicja kwerendy pobierajcej dane z trzech poczonych


ze sob tabel
4. Uruchom kwerend, a nastpnie wywietl tworzc j

instrukcj SQL. Powinna ona wyglda nastpujco:


SELECT Film.Tytul, Aktor.Nazwisko
FROM Film INNER JOIN (Aktor INNER JOIN Film_Aktor ON Aktor.IdAktora
= Film_Aktor.IdAktora) ON Film.IdFilmu = Film_Aktor.IdFilmu
ORDER BY Film.Tytul;

5. Zapisz kwerend pod nazw Filmy_Aktorzy.

Rozdzia 4. Kwerendy

81

W I C Z E N I E

4.13

Sumowanie zyskw z wypoyczania filmw

Kady SZBD, rwnie program Access, umoliwia wyliczanie wartoci


okrelonej liczby funkcji grupujcych, funkcji, ktre na podstawie
zbioru argumentw zwracaj jedn warto. Do funkcji grupujcych
zaimplementowanych w SZBD Access nale midzy innymi: SUMA
(funkcja zwraca sum przekazanych wartoci), MAKSIMUM (funkcja
zwraca najwiksz z przekazanych wartoci), MINIMUM (funkcja zwraca najmniejsz z przekazanych wartoci), REDNIA (funkcja zwraca
warto redni przekazanych wartoci), POLICZ (funkcja zwraca
liczb przekazanych wartoci).
Aby podsumowa zyski z wypoyczanych filmw:
1. Utwrz now kwerend w widoku projektu.
2. Na tabel rdow wybierz tabel Film.
3. Kliknij znajdujc si na pasku narzdzi Projekt kwerendy ikon
Sumy ( ).
4. Jedyn kolumn kwerendy bdzie kolumna Zysk. Ustaw kursor
w polu Podsumowanie: tej kolumny i z listy dostpnych funkcji
grupujcych wybierz SUMA (rysunek 4.12).

Rysunek 4.12. Po zaznaczeniu ikony Sumy w dolnej czci widoku


projektu kwerendy wywietlony zosta wiersz Podsumowanie:
5. Uruchom kwerend w wyniku zobaczysz jedn, wyliczon

na podstawie zbioru danych, warto.

82

Access 2003 PL wiczenia praktyczne

6. Przecz kwerend do Widoku SQL. Jej definicja powinna

wyglda nastpujco:
SELECT Sum(Film.Zysk) AS SumaORZysk
FROM Film;

7. Zapisz kwerend pod nazw Zyski_Suma.


W I C Z E N I E

4.14

Zliczenie filmw nalecych do rnych gatunkw

W poprzednim przykadzie wykorzystalimy funkcj grupujc do


wyliczenia jednej wartoci dla wszystkich zapisanych w tabeli danych.
Co najmniej rwnie czsto funkcje grupujce wykorzystywane s do
wyliczenia jednej wartoci dla okrelonej grupy danych, na przykad
filmw tego samego reysera czy nalecych do tego samego gatunku.
Aby policzy, ile filmw przypisanych jest do poszczeglnych gatunkw:
1. Utwrz now kwerend w widoku projektu.
2. Na tabele rdowe wybierz tabele: Film i Gatunek.
3. Kliknij znajdujc si na pasku narzdzi Projekt kwerendy
ikon Sumy.
4. Jako pierwsz kolumn kwerendy wybierz kolumn Nazwa
tabeli Gatunek.
5. Zwr uwag, e w wierszu Podsumowanie: tej kolumny
wywietlony zosta tekst Grupuj wedug oznacza to, e nazwa
gatunku bdzie podstaw dzielenia na odrbne grupy danych
rdowych funkcji grupujcej.
6. Jako drug kolumn kwerendy wybierz pole IdFilmu tabeli Film.
W polu Podsumowanie: dla tej kolumny wybierz funkcj POLICZ.
7. Uruchom kwerend na ekranie zostanie wywietlona lista
nazw gatunkw filmowych i liczba nalecych do poszczeglnych
gatunkw filmw (rysunek 4.13).
Rysunek 4.13.
Funkcje grupujce
mog rwnie
zwraca wartoci
dla poszczeglnych
grup danych

Rozdzia 4. Kwerendy

83

8. Wywietl kwerend w Widoku SQL. Jej definicja powinna

wyglda nastpujco:
SELECT Gatunek.Nazwa, Count(Film.IdFilmu) AS PoliczORIdFilmu
FROM Gatunek INNER JOIN Film ON Gatunek.IdGatunku = Film.IdGatunku
GROUP BY Gatunek.Nazwa;

9. Zapisz kwerend pod nazw Filmy_Gatunki.

Kwerenda krzyowa suy do wykonywania oblicze i jednoczesnej


zmiany struktury danych w celu ich atwiejszej analizy. Kwerendy
krzyowe obliczaj sum, redni, zliczaj dane lub przeprowadzaj
inne rodzaje podsumowa dla danych zgrupowanych wedug dwch
typw informacji jeden wzdu lewej, a drugi wzdu grnej krawdzi arkusza danych. Kwerendy tego typu wywietlaj te same informacje, co wykonujce analogiczne obliczenia kwerendy wybierajce, ale dziki grupowaniu ich zarwno w pionie, jak i w poziomie,
tworz czytelniejsze wyniki.
W I C Z E N I E

4.15

Kwerenda krzyowa

Najatwiej przekona si o zaletach kwerend krzyowych, porwnujc te same dane zwrcone przez kwerend wybierajc i kwerend
krzyow.
Aby wywietli liczb filmw poszczeglnych reyserw, pogrupowan
dodatkowo wedug ich gatunkw:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabele rdowe wybierz tabele: Film, Gatunek i Rezyser.
3. Kliknij znajdujc si na pasku narzdzi Projekt kwerendy ikon
Sumy.
4. Na pierwsz kolumn kwerendy wybierz kolumn Nazwisko
tabeli Rezyser, na drug kolumn Nazwa tabeli Gatunek.
W obu przypadkach w wierszu Podsumowanie: pozostaw
domyln warto (Grupuj wedug).

84

Access 2003 PL wiczenia praktyczne

5. Na trzeci kolumn kwerendy wybierz pole IdFilmu tabeli Film.

Poniewa chcemy policzy filmy, w polu Podsumowanie:


wybierz funkcj POLICZ.
6. Uruchom kwerend (rysunek 4.14).
Rysunek 4.14.
Wynik kwerendy
wybierajcej
dane pogrupowane
wedug dwch
wartoci szybko
staje si
nieczytelny
7. Zmie typ kwerendy na kwerend krzyow. W tym celu przecz

j do widoku projektu i z menu Kwerenda wybierz opcj


Kwerenda krzyowa.
8. W dolnej czci widoku projektu kwerendy wywietlony zosta
nowy wiersz: Krzyowe:. Ustaw kursor w kolumnie Nazwisko,
rozwi to pole i z listy dostpnych wartoci wybierz Nagwek
wiersza.
9. W polu Krzyowe: kolumny Nazwa wybierz warto Nagwek
kolumny, a w tym samym polu kolumny IdFilmu Warto.
10. Uruchom zmodyfikowan kwerend (rysunek 4.15).

Rysunek 4.15. Te same dane zwrcone przez kwerend krzyow s


o wiele czytelniejsze
11. Wywietl Widok SQL kwerendy. Jej definicja powinna wyglda

nastpujco:
TRANSFORM Count(Film.IdFilmu) AS PoliczORIdFilmu
SELECT Rezyser.Nazwisko
FROM Rezyser INNER JOIN (Gatunek INNER JOIN Film ON Gatunek.IdGatunku
= Film.IdGatunku) ON Rezyser.IdRezysera = Film.IdRezysera
GROUP BY Rezyser.Nazwisko
PIVOT Gatunek.Nazwa;

12. Zapisz kwerend pod nazw Film_Gatunek_Rezyser.

Rozdzia 4. Kwerendy

85

W SQL-u, jako jzyku strukturalnym, nie mona3 posugiwa si zmiennymi zamiast tego mamy do dyspozycji podzapytania. Podzapytanie
to instrukcja SELECT umieszczona w ramach innej instrukcji SELECT
na przykad, w klauzuli WHERE lub FROM. Dziki temu, e wynik
wewntrznego zapytania moe by odczytany przez zewntrzn instrukcj SELECT, moemy tworzy m.in. dynamiczne kryteria wyboru
poniej utworzymy kwerend ktra zwrci nazwiska tych osb,
ktre maj wypoyczonych wicej ni 10% wszystkich naszych filmw
(a wic kryterium wyboru bdzie dynamiczne, jeeli na stanie mamy
50 filmw, wybrane zostan osoby ktre poyczyy co najmniej 5 filmw,
jeeli na stanie bdziemy mie 100 filmw te, ktre poyczyy wicej
ni 10 itd.).
1. Utwrz now kwerend w widoku projektu.
2. W pierwszej kolejnoci musimy policzy wszystkie filmy:
a) Na tabel bazow wybierz tabel Film.
b) Liczb wszystkich filmw zwrci nam instrukcja SELECT
Count ([IdFilmu]) FROM film eby otrzyma 10% tej liczby,
w pierwszym polu wpisz : Wyr1: Policz([film].[IdFilmu])/10.
3. Uruchom kwerend ona bdzie wewntrzn instrukcj SELECT.
4. Przecz si do widoku SQL i wytnij (naciskajc kombinacj
Ctrl+X) utworzone w drugim punkcie zapytanie.
5. Pozostaje nam dodanie zewntrznej instrukcji SELECT zwracajcej
nazwiska tych osb, ktre wypoyczyy wicej filmw,
ni otrzymamy w wyniku wewntrznego zapytania:
a) Przecz si do widoku projektu.
b) Dodaj tabele Osoba i Film.
c) Do pierwszej (teraz pustej) kolumny przecignij kolumn
Nazwisko z tabeli Osoba.
d) Kliknij przycisk Suma i upewnij si, e w kolumnie Nazwisko
pojawi si wpis Grupuj wedug.
3

Przynajmniej w standardzie ANSI niektre wersje jzyka, jak np. PL/SQL


czy T-SQL zawieraj elementy proceduralne, mona w nich definiowa
zmienne czy za ich pomoc sterowa wykonaniem programu.

86

Access 2003 PL wiczenia praktyczne


e) Do drugiej kolumny przecignij kolumn IdFilmu z tabeli

Film i w polu Podsumowanie wybierz funkcj Policz.


f) Na razie kwerenda zwraca informacje o liczbie wypoyczonych

przez wszystkich filmw pora na ograniczenie tej listy


za pomoc podzapytania.
g) W polu Kryteria kolumny IdFilmu wpisz > i otwrz nawias.
Podzapytania musz by umieszczane w nawiasach
h) Wklej skopiowan do schowka instrukcj zwracajc 10%

liczby wszystkich filmw i zamknij nawias (rysunek 4.16).

Rysunek 4.16. Podzapytanie zwracajce nazwiska osb ktre wypoyczyy


wicej ni 10% wszystkich filmw
6. Uruchom kwerend i zapisz j pod nazw Podzapytanie.

Czasami, najczciej do celw diagnostycznych lub na potrzeby wykonania kopii wybranych danych, programowo tworzy si nowe tabele
bazy danych, zawierajce kopie danych zapisanych w innych tabelach.
Zadanie to realizuj kwerendy tworzce tabele.

Rozdzia 4. Kwerendy

87

W I C Z E N I E

4.16

Tworzymy tabele

Aby za pomoc kwerendy utworzy tabel, w ktrej zapisane zostan


informacje o filmach wybranego reysera:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabele rdowe wska tabele Film i Rezyser.
3. Zmie typ kwerendy na kwerend tworzc tabel. W tym celu
z menu Kwerenda wybierz opcj Kwerenda tworzca tabel.
4. Podaj nazw tworzonej tabeli (FilmyMachulskiego) i okrel nazw
bazy danych programu Access, w ktrej tabela zostanie utworzona
(rysunek 4.17).
Rysunek 4.17.
Domylnie tabela
z wybranymi
danymi utworzona
zostanie w biecej
bazie danych
5. Poniewa w nowej tabeli maj znale si wszystkie informacje

o filmach wybranego reysera, jako pierwsz kolumn kwerendy


wybierz symbol * tabeli Film, a aby ograniczy list kopiowanych
danych do filmw jednego reysera, jako drug kolumn kwerendy
wybierz kolumn Nazwisko tabeli Rezyser i w polu Kryteria:
tej kolumny wpisz Machulski.
6. Uruchom kwerend. Zostanie wywietlony komunikat
informujcy Ci o fakcie utworzenia nowej tabeli
i skopiowaniu do niej wybranych danych.
7. Przecz si do Widok SQL. Definicja nowej kwerendy powinna
wyglda nastpujco:
SELECT Film.W
INTO FilmyMacIulskielo
FROM Rezyser INNER JOIN Film ON Rezyser.IdRezysera = Film.IdRezysera
WHERE (((Rezyser.Nazwisko)= "MacIulski"));

8. Zapisz kwerend pod nazw Filmy_Machulskiego, na licie

typw obiektw bazodanowych wybierz Tabele i wywietl


zawarto automatycznie utworzonej tabeli.

88

Access 2003 PL wiczenia praktyczne

Kwerenda aktualizujca pozwala na automatyczn zmian zapisanych


w tabelach danych. Z reguy kwerendy tego typu wykorzystywane s
do zmiany wartoci wybranych rekordw, np. przecenienia towarw
nalecych do okrelonej grupy towarowej.
W I C Z E N I E

4.17

Modyfikujemy dane

Aby obniy o 10%. cen zakupu filmw wyprodukowanych przed


1 stycznia 1980 roku:
1. Utwrz now kwerend w widoku projektu.
2. Na tabel rdow wybierz tabel Film.
3. Zmie typ kwerendy na kwerend aktualizujc. W tym celu
z menu Kwerenda wybierz opcj Kwerenda aktualizujca.
4. Jako pierwsz kolumn kwerendy wybierz kolumn Cena
i w polu Aktualizacja do: tej kolumny wpisz wyraenie [cena]*0,9
w rezultacie cena filmw zostanie zmniejszona o 10%.
5. Jako drug kolumn kwerendy wybierz kolumn DataPr i w polu
Kryteria: tej kolumny wpisz warunek <#1980-01-01# w rezultacie
zmieniona zostanie cena nie wszystkich filmw, a tylko filmw
wyprodukowanych przed okrelon dat (rysunek 4.18).

Rysunek 4.18. Wykonanie kwerendy aktualizujcej bez okrelenia kryteriw


wyboru wierszy spowodowaoby uaktualnienie cen wszystkich filmw

Rozdzia 4. Kwerendy

89

6. Przed wykonaniem kwerendy moesz sprawdzi, ktrych filmw

bdzie dotyczya zmiana ceny. W tym celu wywietl kwerend


w Widoku arkusza danych.
7. Uruchom kwerend znowu zostanie wywietlone ostrzeenie,
informujce Ci o programowej zmianie danych w tabeli.
8. Wywietl instrukcj jzyka SQL tworzc kwerend.
Powinna ona wyglda nastpujco:
UPDATE Film SET Film.Cena = [Cena] W 0.9
WHERE (((Film.DataPr)<#1/1/1980#));

9. Zapisz kwerend pod nazw Film_Przecena.

Kwerenda doczajca suy do dodawania grupy rekordw, pochodzcych z jednej lub kilku tabel, na kocu innej (lub innych) tabeli.
W praktyce kwerendy tego typu wykorzystywane s podczas importowania danych ze rde zewntrznych lub w celu dopisania do
wybranej tabeli rekordw speniajcych podane kryteria, np. danych
klientw, ktrych zaduenie przekroczyo okrelony prg. Podstawowa
rnica pomidzy kwerendami tego typu a kwerendami tworzcymi
tabele polega na tym, e kwerendy aktualizujce dopisuj dane do
istniejcej tabeli, nie tworzc jej, a wic tabela docelowa musi zosta
wczeniej utworzona. Natomiast prba kilkukrotnego uruchomienia
kwerendy tworzcej tabele za kadym razem spowoduje usunicie
i ponowne utworzenie tabeli o podanej nazwie.
W I C Z E N I E

4.18

Dodajemy dane

Aby utworzy kwerend, ktra do tabeli Dluznicy dopisze nazwiska


i numery telefonw osb, ktre poyczyy wicej ni trzy filmy:
1. Utwrz tabel Dluznicy,skadajc si z dwch kolumn:
Nazwisko i Telefon (dla tej tabeli wyjtkowo nie twrz klucza
podstawowego).
2. Utwrz now kwerend w widoku projektu.

90

Access 2003 PL wiczenia praktyczne

3. Jako tabel rdow wybierz tabele Osoba i Film.


4. Zmie typ kwerendy na kwerend doczajc dane. W tym celu
5.
6.
7.

8.

9.

10.

z menu Kwerenda wybierz opcj Kwerenda doczajca.


Jako tabel docelow wybierz tabel biecej bazy danych
Dluznicy.
Kliknij znajdujc si na pasku narzdzi Projekt kwerendy
ikon Sumy.
Jako pierwsz kolumn kwerendy wybierz kolumn Nazwisko
tabeli Osoba. Zwr uwag, e w polu Doczanie do: tej kolumny
automatycznie wywietlona zostaa kolumna Nazwisko tabeli
Dluznicy.
Jako drug kolumn kwerendy wybierz kolumn Telefon tabeli
Osoba. Poniewa kolumna o takiej samej nazwie rwnie
znajduje si w tabeli docelowej, zostaa ona automatycznie
wywietlona w polu Doczanie do: tej kolumny.
Poniewa do tabeli Dluznicy maj zosta dopisane dane tylko
wybranych, a nie wszystkich osb, jako trzeci kolumn kwerendy
wybierz kolumn IdFilmu tabeli Film. Tym razem w polu
Doczanie do: nie zostaa wywietlona adna nazwa kolumny
(w tabeli Dluznicy nie ma kolumny o nazwie IdFilmu).
W polu Podsumowanie: kolumny IdFilmu wybierz funkcj
Policz, a w polu Kryteria: wpisz warunek >3 w ten sposb
do tabeli docelowej dopisane zostan dane tylko tych osb,
ktre wypoyczyy wicej ni trzy filmy (rysunek 4.19).

Rysunek 4.19. Dziki graficznemu rodowisku SZBD Access w ramach


kilkunastu wicze Czytelnik opanowa umiejtno tworzenia stosunkowo
skomplikowanych instrukcji jzyka SQL

Rozdzia 4. Kwerendy

91

11. Uruchom kwerend. Ponownie zostanie wywietlone pytanie,

czy zmodyfikowa dane.


Aby wyczy ten komunikat:
a) z menu Narzdzia wybierz Opcje,
b) przejd do zakadki Edytowanie/znajdowanie,
c) odznacz pole wyboru Kwerendy akcji. Od teraz wykonanie
kwerend funkcjonalnych (kwerend aktualizujcych,
dopisujcych lub usuwajcych) nie bdzie wymagao
potwierdzania.
12. Wywietl kwerend w Widoku SQL. Tworzca j instrukcja
jzyka SQL powinna wyglda nastpujco:
INSERT INTO Dluznicy ( Nazwisko, TeleRon )
SELECT Osoba.Nazwisko, Osoba.TeleRon
FROM Osoba INNER JOIN Film ON Osoba.IdOsoby = Film.IdOsoby
GROUP BY Osoba.Nazwisko, Osoba.TeleRon
HAVING (((Count(Film.IdFilmu))>3));

13. Zapisz kwerend pod nazw Dluznicy_3.

Kwerenda usuwajca suy do usuwania wierszy z jednej lub kilku


tabel. W praktyce kwerendy tego typu wykorzystywane s do automatycznego usuwania rekordw speniajcych podane kryteria, np. towarw, ktrych nie ma ju w ofercie firmy.
W I C Z E N I E

4.19

Usuwamy dane

Aby za pomoc kwerendy usun z bazy wszystkie filmy poyczone


przez wybran osob:
1. Utwrz now kwerend w widoku projektu.
2. Jako tabele rdowe kwerendy okrel tabele Film i Osoba.
3. Zmie typ kwerendy na kwerend usuwajc dane. W tym celu
z menu Kwerenda wybierz opcj Kwerenda usuwajca.

92

Access 2003 PL wiczenia praktyczne

4. Jako pierwsz kolumn kwerendy wybierz symbol * tabeli

Film (usun mona wycznie cay wiersz, a nie wybrane pola


tabeli). Zwr uwag, e w polu Usuwanie: tej kolumny pojawi
si wpis Skd.
5. Jako drug kolumn kwerendy wybierz kolumn Imie tabeli
Osoba. Zwr uwag, e w polu Usuwanie: tej kolumny pojawi
si wpis Gdzie.
6. W polu Kryteria: kolumny Imie wpisz w cudzysowie imi osoby,
o ktrej wiesz, e i tak nigdy nie odda poyczonych filmw
(rysunek 4.20).

Rysunek 4.20. Wykonanie kwerendy usuwajcej dane bez okrelenia


kryteriw wyboru usuwanych danych skoczyoby si skasowaniem
wszystkich danych z tabeli
7. Uruchom kwerend. Pamitaj, e spowoduje to automatyczne

i nieodwracalne usunicie danych o filmach poyczonych


przez wybran osob.
8. Wywietl tworzc kwerend instrukcj jzyka SQL. Powinna
ona wyglda nastpujco:
DELETE Film.W, Osoba.Imie
FROM Osoba INNER JOIN Film ON Osoba.IdOsoby = Film.IdOsoby
WHERE (((Osoba.Imie)="Franciszek"));

9. Zapisz kwerend pod nazw Filmy_Usun.


Operacje kopiowania, zmiany nazw, importowania, eksportowania czy
usuwania kwerend przeprowadza si w ten sam sposb, co analogiczne
operacje w odniesieniu do tabel.

You might also like