Projektowanie Systemów Inf. 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 Standardem tworzenia kwerend jest język SQL (Structured Query Language) MS ACCESS udostępnia dwie formy definiowania kwerend SQL 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 Podstawowe typy kwerend Wybierające Krzyżowe Aktualizująca Dołączająca Usuwająca 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 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 interfejsu systemu 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 /SQL #data# /ACCESS 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ą prezentacyjną Tytuł Cena Nowa cena: [Cena]+20 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
Tryby pracy kwerend Widok QBE Widok SQL Copyrights by Arkadiusz Rzucidło 16
Przygotowanie kwerendy Wybieranie źródła Umieszczanie w kwerendzie tylko niezbędnych tabel i kwerend Konieczność ustanowienia relacji pomiędzy współpracującymi tabelami w kwerendzie Wybór kolumn z poszczególnych tabel Określenie kryteriów Sortowanie rekordów kwerendy Określenie czy pole ma być widoczne Copyrights by Arkadiusz Rzucidło 17
Określenie kryteriów Przykłady kryteriów dla poleceń SQL Kryterium Opis "Kraków" wartość pola jest Kraków "Rzeszów" or "Sanok" 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 ) wartością pola ma być Kraków lub Rzeszów Not Warszawa wartość pola nie może zawierać wartości Warszawa Not in ( Warszawa ) Wartością pola nie może być Warszawa < 2005-12-02-30 wartość pola musi zawierać daty późniejsze niż 30 dni sprzed dzisiejszego dnia Like "C%" tekst zacznający się od litery C Like %a" tekst kończący się literą a Like L% or N% Tekst zaczynający się na literę od L lub od litery N Copyrights by Arkadiusz Rzucidło 18
Kwerendy wybierające Główne zadanie to prezentacja danych w odpowiednim formacie select * from klienci; Łączenie kilku tabel w kwerendzie select * from dl.literatura inner join dl.zest_lit on literatura.id=zest_lit.literatura Copyrights by Arkadiusz Rzucidło 19
Określenie warunku Klauzula where określa warunek prosty select imie, nazwisko from uczniowie where miasto='kraków ; select imie, nazwisko, data_urodzenia from uczniowie where data_urodzenia < '1987-5-1'; Copyrights by Arkadiusz Rzucidło 20
Sortowanie rekordów Sortowanie rekordów pozwala na zastosowanie określonego porządku w zestawieniu Dwa tryby porządkowania ASC tryb domyślny DESC select * from dl.literatura inner join dl.zest_lit on literatura.id=zest_lit.literatura where zest_lit.przedmiot= 1 order by autor; Copyrights by Arkadiusz Rzucidło 21
Kwerendy wybierające unikaty Wybieranie wartości bez powtórzeń - distinct select distinct przedmioty.id, przedmioty.nazwa, przedmioty.rok from dl.zest_lit inner join dl.literatura on zest_lit.literatura=literatura.id inner join dl.przedmioty on zest_lit.przedmiot=przedmioty.id Copyrights by Arkadiusz Rzucidło 22
Funkcje agregujące Avg() - średnia Select avg(ilosc) from produkty; Sum() suma Select sum(cena) from produkty; Max() wartość największa Select max(wiek) from klienci; Min() wartość minimalna Select min(ilosc) from produkty; Count() zliczanie Select count(id_klietna) from klienci; Copyrights by Arkadiusz Rzucidło 23
Podział na grupy Pozwala na tworzenie grup w zestawieniach Klasyfikuje rekordy lub wylicza poszczególne grupy select etat, avg(placa) from pracownicy group by etat; select etat, avg(placa)as srednia from pracownicy where etat!= Dyrektor group by srednia; Copyrights by Arkadiusz Rzucidło 24
Klazula having Służy do określenia warunku dla grup utworzonych za pomocą klauzuli group by select etat, avg(placa) as srednia from pracownicy where etat!= Kierowanik group by srednia haeving avg(placa) > 1000; Copyrights by Arkadiusz Rzucidło 25
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 26
Kwerenda usuwająca Usunięcie z tabeli czytelnik wszystkie rekordy dla których pole miejscowość zawiera wartość Rzeszów. delete from czytelnik where czytelnik.miejscowosc= rzeszów ; Usunięcie z tabeli rekordów zawierających nazwiska zaczynające się na literę B delete from czytelnik where nazwisko like B% ; Copyrights by Arkadiusz Rzucidło 27
Kwerenda dołączająca Pobiera dane z jednej tabeli lub kwerendy i dołącza je do innej tabeli Tabela do której następuje dołączanie musi istnieć fizycznie w bzie danych Struktura nowej tabeli (przyjmującej dane) musi być zgodna z formatem klauzuli select Cel Archiwizacja danych Przeniesieni ograniczonej perspektywy tabel(i) do tabeli wynikowej Insert into archiwum select * from klienci where miasto= Tarnobrzeg ; Copyrights by Arkadiusz Rzucidło 28
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 29
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 30