BAZY DANYCH II - SQL Cwiczenie 3 Michał Turek Część 1) Przygotuj tabelę, zawierajaca dane o osobach (np. zawodnicy): nazwisko, imię, punkty, wiek, nazwa grupy itp. Wypróbuj działanie klauzul dodatkowych, stosowanych przy SELECT: - GROUP BY Przykład: SELECT zawodnicy.[nazwa grupy], sum(zawodnicy.punkty) AS [punkty grupy] FROM zawodnicy GROUP BY [nazwa grupy] Pamiętaj o własciwym zastosowaniu funkcji agregujacych, tak aby wszystkie otrzymane dane można było zapisać w wierszach będacych efektem grupowania (w przykładzie: sumowanie punków zawodników z tej samej grupy) - HAVING Przykład: SELECT zawodnicy.[nazwa grupy], sum(zawodnicy.punkty) AS [punkty grupy] FROM zawodnicy GROUP BY [nazwa grupy] HAVING count (*) >1 - ORDER BY ... ASC / DESC Przykład: SELECT zawodnicy.nazwisko, zawodnicy.imię, zawodnicy.punkty FROM zawodnicy ORDER BY [nazwisko] DESC - TOP X [PERCENT] Przykład: SELECT TOP 50 PERCENT * FROM zawodnicy - DISTINCT Przykład: SELECT DISTINCT [nazwa grupy] FROM zawodnicy Częsć 2) Przygotuj dwie tabele, przechowujace informacje o pracownikach i działach firmy, w których sa zatrudnieni. Pierwsza tabela (działy) powinna posiadać nazwę i identyfikator działu. Druga (pracownicy) - dane o pracowniku, oraz pole dzial - swiadczace o przynależnosci do działu. Wpisz do tabel przykładowe dane, tak aby istniały także działy bez żadnych pracowników i pracownicy, którzy nie maja jeszcze swojego działu. Wypróbuj działanie klauzuli INNER JOIN, LEFT JOIN, RIGHT JOIN, analogicznie do przykładów: SELECT pracownicy.*, dzialy.nazwa FROM pracownicy INNER JOIN dzialy on pracownicy.dzial = dzialy.ID; SELECT pracownicy.*, dzialy.nazwa FROM pracownicy LEFT JOIN dzialy on pracownicy.dzial = dzialy.ID; SELECT pracownicy.*, dzialy.nazwa FROM pracownicy RIGHT JOIN dzialy on pracownicy.dzial = dzialy.ID; Co różni wykonanie tych zapytań? Modyfikujac zapytania z użyciem JOIN spróbuj zastosować klauzulę grupujaca GROUP BY (np. uzyskujac w wyniku nazwy działów i liczbę pracowników w każdym dziale). Sprawdź działanie klauzuli UNION - połaczenie wyników innych zapytań lub zawartosci tabel Przykład: SELECT nazwisko FROM zawodnicy UNION SELECT nazwisko FROM pracownicy Częsć 3) Modyfikacja zawartosci tabeli - posługujac się np. wczesniejsza tabela zawodników wypróbuj działanie klauzul: - INSERT INTO Dodawanie nowych wierszy do tabeli. Przykład (z okresleniem kolumn docelowych): INSERT INTO zawodnicy (imię, nazwisko) VALUES ("Jan", "Kowalski"); bez okreslania kolumn docelowych (gdy znamy kolejnosć kolumn i wiemy co i gdzie zostanie zapisane) INSERT INTO zawodnicy VALUES ("Jan", "Kowalski",0); - DELETE FROM Usuwanie wierszy. Przykład: DELETE FROM zawodnicy WHERE nazwisko LIKE "Kowalski" - UPDATE Modyfikacja wierszy. Przykład: UPDATE zawodnicy SET Nazwisko = "Kowalski" WHERE nazwisko = "Kowalllski";