Bazy danych Wykład V Kwerendy Copyrights by Arkadiusz Rzucidło 1
Wprowadzenie Istotą bazy danych jest możliwość efektywnego wyszukiwania informacji Realizację operacji wyszukiwania zapewniają kwerendy (ang. Query) Są obok tabel podstawowymi obiektami bazy danych Definiują schemat wyszukiwania informacji MS ACCESS udostępnia dwie formy definiowania kwerend SQL (Structured Query Language) QBE (Query By Example) Copyrights by Arkadiusz Rzucidło 2
Zadania kwerend Są źródłem danych dla interfejsu bazy danych (formularze, raporty, strony WWW) Służą jako źródło danych dla kwerend złożonych Pobierają dane spełniające określone kryteria Wykonują zaplanowane działania na pobranych danych Wiążą kilka tabel lub kwerend, aby w określony sposób przedstawić użytkownikowi z nich dane pobrane Wykonują grupowanie, porządkowanie i wyliczają dane znajdujące się w tabelach lub innych kwerendach Copyrights by Arkadiusz Rzucidło 3
Typy kwerend Widok kwerendy * Widok projekt QBE Widok arkusza danych Widok składni SQL Widok tabeli przestawnej Widok wykresu przestawnego Typy kwerend Wybierające Krzyżowe Tworzące tabele Aktualizująca Dołączająca Usuwająca */ widoki właściwe dla wersji Access 2002 Copyrights by Arkadiusz Rzucidło 4
Typy kwerend Kwerendy wybierające Najczęściej tworzone kwerendy Proste warunki logiczne definiujące sposób wybierania rekordów Łatwe w konstrukcji 90% kwerend to kwerendy wybierające Kwerendy krzyżowe wyświetla wartości sumowane (sumy, zliczenia i średnie) z jednego pola w tabeli i na podstawie jednego zestawu faktów grupuje je (po lewej stronie arkusza danych, a na podstawie drugiego zestawu faktów w górnej części arkusza) Copyrights by Arkadiusz Rzucidło 5
Typy kwerend Kwerendy funkcjonalne Pozwala na wprowadzenie zmian w wielu rekordach za pomocą jednej zadanej procedury Istnieją cztery rodzaje kwerend funkcjonalnych: Tworzące tabele Usuwające Dołączające Aktualizujące Copyrights by Arkadiusz Rzucidło 6
Typy kwerend Kwerenda tworząca tabelę. Tworzy nową tabelę z wszystkich lub części danych znajdujących się w jednej lub kilku tabelach. Kwerendy tworzące tabele są przydatne w następujących sytuacjach: Tworzenie tabel, które mają być eksportowane do innych baz danych programu Microsoft Access, Tworzenie raportów zawierających dane od określonego momentu, Tworzenie kopii zapasowej tabeli, Tworzenie tabeli archiwalnej, zawierającej nieaktualne rekordy, Poprawienie sprawności działania formularzy i raportów utworzonych na podstawie kwerend korzystających z danych z wielu tabel. Kwerenda usuwająca. Usuwa grupę rekordów z jednej lub kilku tabel. Na przykład można usunąć z bazy danych rekordy chorych przeniesionych na inny oddział. Użycie kwerendy usuwającej powoduje usunięcie całych rekordów, nie zaś wybranych pól w rekordach. Copyrights by Arkadiusz Rzucidło 7
Typy kwerend Kwerenda dołączająca. Dodaje grupę rekordów z tabeli lub tabel na końcu innej tabeli lub tabel. Kwerendy dołączające są również przydatne w następujących sytuacjach: Dołączanie pól wybranych na podstawie kryteriów. Na przykład można dołączyć tylko nazwiska i adresy pacjentów nie leczonych Dołączanie rekordów w sytuacji, gdy część pól jednej tabeli nie ma swoich odpowiedników w drugiej tabeli Kwerenda aktualizująca. Dokonuje globalnych zmian w grupie rekordów w tabeli lub kilku tabelach. Na przykład można aktualizować wiek wszystkich pacjentów Za pomocą kwerend aktualizujących można zmieniać dane w istniejących tabelach Copyrights by Arkadiusz Rzucidło 8
Konstrukcja kwerendy Tabela (jedna) bądź Tabele (kilka) Kwerenda Określone warunki wyboru pól i rekordów z tabel(i) Tabela wirtualna tylko z określonymi Polami i rekordami Pole: Imię Nazwisko Adres Kryteria: warunek 1 warunek 2 i warunek 3 Lub: lub warunek 4 i warunek 5 Copyrights by Arkadiusz Rzucidło 9
Warunki oraz operatory operator porównywania tekstu LIKE ``maska`` np. dla pola nazwisko, Like ``W*`` operatory relacji <, >, >=, <=, =, <> np. dla pola ocena, >4 operatory logiczne AND (iloczyn logiczny, koniunkcja) OR (suma logiczna, alternatywa) NOT (negacja, występuje z operatorem And, Or) Copyrights by Arkadiusz Rzucidło 10
Warunki i operatory Operator przynależenia do listy IN IN (element 1; element2;...) np. dla pola imię, In(``Adaś``;``Kasia``;``Basia``) dla pola ocena, In(2;3;4) Operator zawierania się w przedziale Between... And... np. dla pola ocena, Between 2 And 5 inaczej >=2 And <=5 Warunek do pól z datami #data# np. > #98-01-01# Copyrights by Arkadiusz Rzucidło 11
Kolumny wirtualne Kolumną wirtualną jest pole którego wartości nie są danymi zawartymi w bazie danych Zwykle są to pola wyliczeniowe lub złączenia łańcuchów znakowych (pól typu text) Pełnią funkcję dodatkową przezentacyjną Pole: Tytuł Cena Nowa cena: [Cena]+20 Kryteria: Ta kolumna fizycznie nie istnieje Copyrights by Arkadiusz Rzucidło 12
Grupowanie danych ISBN Tytuł Wydawnictwo 123xc3 Analiza... PWN 234er54 Topologia NT 2qw34w Geometria PWN Ile książek jest wydanych przez PWN? 356ty72w Algebra NT 12563w Logika... PWN q12344 Algebra... NT Copyrights by Arkadiusz Rzucidło 13
Podsumowania Wydawnictwo Tytuł PWN 90 Tytuł jest zliczony NT 23 WSiP 45... Wartość powtarzająca się jest wyświetlana tylko raz Copyrights by Arkadiusz Rzucidło 14
Grupowanie i podsumowania Pole: Wydawnictwo Tytuł Podsumowania: Grupuj według Policz Kryteria: Tu można stosować różne funkcje Pole: Wydawnictwo Rok wydania Tytuł Podsumowania: Grupuj według Grupuj wg Policz Kryteria: Copyrights by Arkadiusz Rzucidło 15
Projektowanie Kwerendy Korzystając z pomocy kreatora Wykonując projekt kwerendy Wybieranie źródła Wybór pól dla kwerendy Opracowanie kryteriów Uruchomienie kwerendy Copyrights by Arkadiusz Rzucidło 16
Przygotowanie kwerendy Wybieranie źródła Umieszczanie w kwerendzie tylko niezbędnych tabel i kwerend Dołączanie nowych tabel do istniejącej kwerendy Konieczność ustanowienia relacji pomiędzy współpracującymi tabelami w kwerendzie Wybór pól kwerendy Technika Drag&Drop Wybór pola z pola kombi po uprzednim określeniu źródła * oznacza wszystkie pola z tabeli Usuwanie pola Sortowanie rekordów kwerendy Określenie czy pole ma być widoczne Copyrights by Arkadiusz Rzucidło 17
Tryby pracy kwerend Widok QBE Widok SQL Copyrights by Arkadiusz Rzucidło 18
Określenie kryteriów Za pomocą konstruktora wyrażeń Odręcznie Kryteria z operatorami AND i OR Kryterium Opis "Kraków" "Rzeszów" or "Sanok" wartość pola jest Kraków wartość pola jest Rzeszów lub Sanok =#2005-02-02# wartość pola jest 2 luty 2005 r. Between #2005-01-01# and #2005-12-31# wartość pola ma mieścić się w przedziale czasu od 2005-01-01 do 2005-12-31 In ("Kraków","Rzeszów") Not "Warszawa" wartością pola ma być Kraków lub Rzeszów wartość pola nie może zawierać wartości Warszawa < Date()-30 wartość pola musi zawierać daty późniejsze niż 30 dni sprzed dzisiejszejszego dnia Year ([Data_ur])=1985 wartość pola daty urodzenia ma zawierać wszystkie daty z roku 1985 Like "C*" Like "*a" Like "[L-N]*" Left ([Miast],1)="O" tekst zacznający się od litery C tekst kończący się literą a Tekst zaczynający się na literę od L do N Tekst, którego pierwszyma znakiem od lewej strony jest litera "O" Copyrights by Arkadiusz Rzucidło 19
Kwerendy parametryczne Umożliwiają interakcję z użytkownikiem podczas generowania zestawu rekordów Przykłady: Jeden parametr: > [ Podaj wartość dla pola:] Dwa parametry: Between [Podaj wartość początku:] and [Podaj wartość końca:] Parametry z symbolami wieloznacznymi: LIKE [Podaj pierwszy znak dla wartości: ] & "*" Copyrights by Arkadiusz Rzucidło 20
Kwerendy usuwające Automatyzują proces globalnego usuwania rekordów z bazy danych Wybranie odpowiednich tabel dla konstrukcji kryteriów usuwania rekordów Opracowanie kryteriów usuwania Kryteria proste Kryteria parametryczne Podczas konstrukcji kryteriów należy zwrócić uwagę na ich poprawność (kwerenda wybierająca) Usuwanie Gdzie kryterium Skąd jakiej tabeli dotyczy operacja usunięcia Kwerenda usuwająca działa na całych rekordach (nie jest istotna liczba pól w kryterium) Copyrights by Arkadiusz Rzucidło 21
Przykład: Biblioteka Copyrights by Arkadiusz Rzucidło 22
Defragmentacja bazy danych Wiele operacji usuwania wiele dziur w bazie danych Access rezerwuje rozmiar pliku dla danych ale nie zmniejsza go jeśli dane są usuwane Proces defragmentacji usuwa puste miejsca ze struktury bazy danych Uruchomienie: Menu>>Narzędzia>>Narzędzia bazy danych>>kompaktuj i napraw bazę danych Copyrights by Arkadiusz Rzucidło 23
Kwerenda dołączająca Pobiera dane z jednej tabeli lub kwerendy i dołącza je do innej tabeli Archiwizacja danych Copyrights by Arkadiusz Rzucidło 24
Kwerendy znajdujące krańcowe wartości Copyrights by Arkadiusz Rzucidło 25
Kwerendy aktualizujące Zmienia zawartość pól docelowej tabeli Działa na polach a nie na całych rekordach Usuwanie rekordów kwerenda usuwająca Usuwanie/zmiana wartości pól dla rekordów kwerenda aktualizująca Copyrights by Arkadiusz Rzucidło 26
Kwerenda krzyżowa Jest dwuwymiarową macierzą z operacją matematyczną wykonywaną na każdym przesunięciu Copyrights by Arkadiusz Rzucidło 27
Kwerenda tworząca tabelę (UNION) Składa zbiory rekordów pochodzących z różnych tabel w jeden element wynikowy - tabelę Copyrights by Arkadiusz Rzucidło 28
Składanie SQL Kwerenda parametryczna SELECT Czytelnik.* FROM Czytelnik WHERE (((Czytelnik.Data_ur)=[Podaj datę])); Kwerenda usuwająca DELETE Czytelnik.*, Czytelnik.Miejscowosc FROM Czytelnik WHERE (((Czytelnik.Miejscowosc)="rzeszów")); Copyrights by Arkadiusz Rzucidło 29
Składanie SQL Kwerenda dołączająca INSERT INTO [Kopia Czytelnik] SELECT Czytelnik.* FROM Czytelnik WHERE (((Czytelnik.Miejscowosc)="rzeszów")); Kwerenda aktualizująca UPDATE Ksiazki SET Ksiazki.www = "http://www.helion.pl" WHERE (((Ksiazki.wydawnictow)="Helion")); Copyrights by Arkadiusz Rzucidło 30
Składnia SQL Kwerenda znajdująca krańcowe wartości SELECT TOP 5 Count(Zdarznia.data_wypozyczenia) AS PoliczOfdata_wypozyczenia, Czytelnik.Imie, Czytelnik.Nazwisko FROM Ksiazki INNER JOIN (Czytelnik INNER JOIN Zdarznia ON Czytelnik.ID_czytelnik = Zdarznia.ID_czytelnika) ON Ksiazki.ID_ksiazki = Zdarznia.ID_ksiazki GROUP BY Czytelnik.Imie, Czytelnik.Nazwisko HAVING (((Count(Zdarznia.data_wypozyczenia)) Is Not Null)) ORDER BY Count(Zdarznia.data_wypozyczenia) DESC; Copyrights by Arkadiusz Rzucidło 31
Składnia SQL Kwerenda krzyżowa TRANSFORM Count(Zdarznia.ID_zdarzenia) AS PoliczOfID_zdarzenia SELECT Czytelnik.Nazwisko FROM Ksiazki INNER JOIN (Czytelnik INNER JOIN Zdarznia ON Czytelnik.ID_czytelnik = Zdarznia.ID_czytelnika) ON Ksiazki.ID_ksiazki = Zdarznia.ID_ksiazki GROUP BY Czytelnik.Nazwisko PIVOT Ksiazki.Klasa; Copyrights by Arkadiusz Rzucidło 32
Składnia SQL Kwerenda tworząca tabelę nowa_tabela SELECT Czytelnik.Nazwisko, Ksiazki.Klasa, Count(Zdarznia.ID_zdarzenia) AS Wypozyczenia INTO nowa_tabela FROM Ksiazki INNER JOIN (Czytelnik INNER JOIN Zdarznia ON Czytelnik.ID_czytelnik = Zdarznia.ID_czytelnika) ON Ksiazki.ID_ksiazki = Zdarznia.ID_ksiazki GROUP BY Czytelnik.Nazwisko, Ksiazki.Klasa; Copyrights by Arkadiusz Rzucidło 33
Koniec Źródła: L.Welling, L.Thomson; PHP i MySQL. Tworzenie stron WWW, Helion 2002. http://home.pl/support/ J.D.Ullman, J.Widom; Podstawowy Wykład z Systemów Baz Danych, WNT 2003. Copyrights by Arkadiusz Rzucidło 34