Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Nr ćwiczenia: 8 Praca z bazą danych MySQL wersja 2.0 Temat: Cel ćwiczenia: Wymagane przygotowanie teoretyczne: Sposób zaliczenia: Prowadzący zajęcia: Podzapytania Celem ćwiczenia jest poznanie tzw. podzapytań, czyli możliwości zagłębiania w sobie niezależnych poleceń SELECT. Informacje podane na wykładzie. Pozytywna ocena ćwiczenia przez prowadzącego pod koniec zajęć. dr inż. Artur Gramacki, dr inż. Jarosław Gramacki 1. Uwagi wstępne Patrz uwagi w rozdziale o tej samej nazwie w pierwszej instrukcji dotyczącej polecenia SELECT. 2. Polecenia do wykonania Ćwiczenie 1 Wyświetlić dane o pracowniku (tabela emp), który zarabia najmniej. Użyć podzapytania. Jako wynik powinniśmy otrzymać: Chad Newman 750.00 1 row in set (0.01 sec) Ćwiczenie 2 Wyświetlić dane o pracowniku (tabela emp), który zarabia najmniej spośród tych, którzy pracują na stanowisku Warehouse Manager. Zwróćmy uwagę, na właściwe sformułowanie warunku WHERE. Użyć podzapytania. Jak myślisz, jaki otrzymamy wynik, gdy więcej niż jeden pracownik będzie zarabiał kwotę minimalną? Zmodyfikuj dane w tabeli i sprawdź swoje przypuszczenia. Jako wynik powinniśmy otrzymać: Ben Biri 1100.00 1 row in set (0.01 sec) Ćwiczenie 3 Przygotowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki 1
Wyświetlić dane o pracownikach (emp), którzy zarabiają więcej niż wynosi średnia zarobków wszystkich pracowników. Jako wynik powinniśmy otrzymać: ---------+ ---------+ Carmen Velasquez 2500.00 LaDoris Ngao 1450.00 Midori Nagayama 1400.00 Mark Quick-To-See 1450.00 Audry Ropeburn 1550.00 Antoinette Catchpole 1300.00 Marta Havel 1307.00 Colin Magee 1400.00 Henry Giljum 1490.00 Yasmin Sedeghi 1515.00 Mai Nguyen 1525.00 Andre Dumas 1450.00 Elena Maduro 1400.00 ---------+ 13 rows in set (0.00 sec) Ćwiczenie 4 Wyświetlić dane pracowników, którzy zarabiają najmniej na poszczególnych stanowiskach. Należy użyć podzapytania skorelowanego. Co będzie, gdy na danym stanowisku pracuje więcej niż jeden pracownik o minimalnych zarobkach? Zmodyfikuje odpowiednie dane i sprawdź wynik. Jako wynik powinniśmy otrzymać: ---------+----------------------+ title ---------+----------------------+ Carmen Velasquez 2500.00 President LaDoris Ngao 1450.00 VP, Operations Midori Nagayama 1400.00 VP, Sales Mark Quick-To-See 1450.00 VP, Finance Audry Ropeburn 1550.00 VP, Administration Ben Biri 1100.00 Warehouse Manager Colin Magee 1400.00 Sales Representative Chad Newman 750.00 Stock Clerk ---------+----------------------+ Aby sprawdzić wynik należy napisać drugie zapytanie, które wyświetli minimalne zarobki na poszczególnych stanowiskach: title MIN(salary) President 2500.00 Sales Representative 1400.00 Stock Clerk 750.00 VP, Administration 1550.00 VP, Finance 1450.00 VP, Operations 1450.00 VP, Sales 1400.00 Warehouse Manager 1100.00 8 rows in set (0.02 sec) Przygotowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki 2
Ćwiczenie 5 Wyświetlić dane pracowników, którzy zarabiają więcej niż wynosi średnia zarobków dla swojego stanowiska (kolumna title). Należy użyć podzapytania skorelowanego. Jak najprościej sprawdzić, czy otrzymany wynik jest poprawny? Jako wynik powinniśmy otrzymać: ----------------------+ title ----------------------+ Henry Giljum 1490.00 Sales Representative Yasmin Sedeghi 1515.00 Sales Representative Mai Nguyen 1525.00 Sales Representative Sylvie Schwartz 1100.00 Stock Clerk Akira Nozaki 1200.00 Stock Clerk Elena Maduro 1400.00 Stock Clerk Roberta Menchu 1250.00 Warehouse Manager Antoinette Catchpole 1300.00 Warehouse Manager Marta Havel 1307.00 Warehouse Manager ----------------------+ 9 rows in set (0.02 sec) Aby sprawdzić wynik należy napisać drugie zapytanie, które wyświetli minimalne zarobki na poszczególnych stanowiskach: title AVG(salary) President 2500.000000 Sales Representative 1476.000000 Stock Clerk 949.000000 VP, Administration 1550.000000 VP, Finance 1450.000000 VP, Operations 1450.000000 VP, Sales 1400.000000 Warehouse Manager 1231.400000 8 rows in set (0.00 sec) Ćwiczenie 6 Wyświetlić dane klientów (tabela customer), którzy nigdy nie złożyli żadnego zamówienia. Wskazówka: użyć operatora NOT EXISTS. Jako wynik powinniśmy otrzymać: id name 207 Sweet Rock Sports 215 Sporta Russia 2 rows in set (0.01 sec) Ćwiczenie 7 Zweryfikować wynik z poprzedniego ćwiczenia, wyświetlając dane o numerach klientów oraz ilości złożonych przez nich zamówień. Jako wynik powinniśmy otrzymać (jak należy zinterpretować otrzymany wynik i dlaczego można użyć go do weryfikacji?): Przygotowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki 3
+-------------+----------------+ customer_id Ilość zamówień +-------------+----------------+ 201 1 202 1 203 1 204 2 205 1 206 1 208 2 209 1 210 2 211 1 212 1 213 1 214 1 +-------------+----------------+ 13 rows in set (0.00 sec) Ćwiczenie 8 Wyświetlić dane o pracownikach w podanym niżej formacie (wyświetlamy tylko pracowników pracujących w dziale o nazwie Operations. Napisać dwie wersje zapytania - jedną z użyciem złączeń a drugą z użyciem podzapytań. Porównać obie wersje. Jako wynik powinniśmy otrzymać: first_name last_name dept_id LaDoris Ngao 41 Molly Urguhart 41 Roberta Menchu 42 Ben Biri 43 Antoinette Catchpole 44 Marta Havel 45 Elena Maduro 41 George Smith 41 Akira Nozaki 42 Vikram Patel 42 Chad Newman 43 Alexander Markarian 43 Eddie Chang 44 Bela Dancs 45 Sylvie Schwartz 45 15 rows in set (0.00 sec) Ćwiczenie 9 Wyświetlić dane o pracownikach w podanym niżej formacie (wyświetlamy tylko pracowników pracujących w regionie o nazwie North America. Napisać dwie wersje zapytania - jedną z użyciem złączeń a drugą z użyciem podzapytań. Porównać obie wersje. Jako wynik powinniśmy otrzymać: first_name last_name Carmen Velasquez LaDoris Ngao Midori Nagayama Przygotowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki 4
Mark Quick-To-See Audry Ropeburn Molly Urguhart Colin Magee Elena Maduro George Smith 9 rows in set (0.00 sec) Literatura [1] Lech Banachowski (tłum.). SQL. Język relacyjnych baz danych. WNT Warszawa, 1995. [2] Paul Dubios. MySQL. Podręcznik administratora. Wydawnictwo HELION, 2005. [3] MySQL 5.0 Reference Manual, 2005. (jest to najbardziej aktualne opracowanie na temat bazy MySQL stworzone i na bieżąco aktualizowane przez jej twórców. Książka dostępna w wersji elektronicznej pod adresem http://dev.mysql.com/doc/ ). [4] Richard Stones and Neil Matthew. Od podstaw. Bazy danych i MySQL. Wydawnictwo HELION, 2003. [5] Luke Welling and Laura Thomson. MySQL. Podstawy. Wydawnictwo HELION, 2005. Przygotowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki 5