BD-LAB6 Wojciech Pieprzyca

Slides:



Advertisements
Podobne prezentacje
Podział i zastosowanie
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Bazy danych i inżynieria oprogramowania
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
PHP + MySQL część II.
Język SQL ma ciekawe możliwości tworzenia zapytań
MS Access 2003 Kwerendy Paweł Górczyński.
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
25/08/ Bazy danych II Piotr Górczyński Instrukcja UPDATE.
MS Access 2000 Normalizacja Paweł Górczyński 2005.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
Kwerendy, formularze, relacje, raporty i makra
Język SQL – zapytania zagnieżdżone (podzapytania)
Rozdział 2: Język bazy danych - SQL
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 4: Język bazy danych - SQL Połączenia.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 3: Język bazy danych - SQL Funkcje grupowe.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
SQL-owskie szlaki górskie
SQLDziałanie select * from tab_kredyt wyświetla wszystko z tab_kredyt select Kredytobiorca, Bank, rodzaj, data_zawarcia, klasyfikacja from tab_kredyt.
Zapytania SQL: wydajność i optymalizacja
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Zadania Bazy danych.
Structured Query Language
dr inż. Piotr Muryjas Wyższa Szkoła Przedsiębiorczości i Administracji
OPERACJA DZIELENIA W SQL
MS ACCESS Kwerendy.
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Ogólnie o kartotekach systemu – Klienci, Lekarze, Dostawcy…
Przetwarzanie w oknie - nowa siła zapytań
ZASTOSOWANIE FUNKCJI W EXCELU
Arkusze kalkulacyjne, część 3
Microsoft Office Excel
Delphi i Acad cd.. l_poz := MSpace.Count; Label3.Caption:=IntToStr(l_poz); ent:=Mspace.Item(0); for l_poz := 0 to MSpace.Count-1 do begin; ent:=Mspace.Item(l_poz);
dr hab. Ryszard Walkowiak prof. nadzw.
Moduł Lojalnościowy. Czyli zatrzymanie klienta przy naszym zakładzie optycznym.
Podstawy programowania
Word Tabela.
SQL - Structured Query Language
Łączenie tabel Odpowiedzi.
Arkusz kalkulacyjny MS Excel
Wyprowadzanie informacji z bazy danych - kwerendy wybierające Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
Operacje edycyjne w bazie danych - kwerendy funkcjonalne Marzena Nowakowska Katedra Informatyki Stosowanej, WZiMK, PŚk.
Komendy SQL do pracy z tabelami i bazami
MICROSOFT Access TWORZENIE MAKR
Bazy danych Microsoft access 2007.
PL/SQL – dalsza wędrówka
Język manipulacji danymi – SQL cz. I
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Komendy SQL do pracy z danymi
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 5: Operatory zbiorowe.
Język SQL – polecenie Select
Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat.
Portal edukacyjny A.Ś. Tworzenie kwerend w programie Access.
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Funkcje w Excelu Wyrażenia, które pobierają wartość lub wartości z komórek, przeprowadzają oprację i zwracają wartość. Funkcje upraszczają i skracają formuły.
Filtrowanie, Funkcje bazodanowe
„Filtry i funkcje bazodanowe w EXCELU”
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
Excel 2007 dla średniozaawansowanych Zajęcia z Prowadzący: Artur Kołos.
Temat: Tworzenie bazy danych
1 Instrukcja SELECT : SELECT[DISTINCT  ALL] {*  [wyrażenie_kolumnowe [AS nowa_nazwa]],[…]} FROMNazwaTabeli [alias],[...] [WHEREwarunek_selekcji_wierszy]
Wybieranie wierszy: 1 Warunek WHERE Rodzaje warunków: - liczbowe - liczbowe z zakresu - znakowe.
Prowadzenie analizy danych w arkuszu
Podstawy SQL.
Widoki (views) - Perspektywy:
Zapis prezentacji:

BD-LAB6 Wojciech Pieprzyca BAZY DANYCH BD-LAB6 Wojciech Pieprzyca

Język SQL – funkcje agregujące Funkcje agregujące działają na grupach rekordów Rekordy należą do tej samej grupy jeśli posiadają tę samą wartość wyrażenia grupującego Dla każdej grupy rekordów wyliczana jest jedna wartość na podstawie wyrażenia będącego parametrem funkcji agregującej Przykład: obliczyć średnią ceną towaru dla każdego typu towaru Nazwa Typ Cena Typ Średnia Sok pom. napoje 5,50 grupa napoje napoje 4,50 Coca cola napoje 3,50 nabiał 2,75 ======================= słodycze 3,00 jogurt nabiał 3,00 grupa nabiał mleko nabiał 2,50 ======================= czekolada słodycze 4,00 grupa słodycze baton słodycze 2,00

Język SQL – funkcje agregujące Funkcje agregujące możliwe do zastosowania: AVG – średnia SUM - suma COUNT – liczba wystąpień MAX – maksimum MIN – minimum Składnia: nazwa_funkcji(wyrażenie) np. AVG(cena) Dla funkcji COUNT można zastosować dwa przypadki: COUNT(*) – zlicza liczbę rekordów COUNT(wyrażenie) – zlicza liczbę niepustych wystąpień wartości wyrażenia np. COUNT(cena) – liczba towarów dla których określono cenę

Język SQL – funkcje agregujące Zapytania z jedną grupą Funkcje agregujące nie zawsze muszą operować na grupach danych, czasami oczekujemy obliczenia wartości np. średniej dla całej tabeli. Wynikiem zapytania z jedną grupą jest zawsze jeden rekord, który dotyczy tej jednej grupy. Przykład: SELECT MIN(cena) as cenamin, MAX(cena) as cenamax FROM towary Wynikiem tego zapytania jest określenie ceny minimalnej i ceny maksymalnej biorąc pod uwagę wszystkie produkty z tabeli towary. Przykładowy wynik: Cenamin Cenamax 5 1200

Język SQL – funkcje agregujące Zapytania z wieloma grupami Zapytania z wieloma grupami obliczają wynik zapytania dla każdej grupy (tworzonej na podstawie wyrażenia grupującego GROUP BY). SELECT typ, AVG(cena) FROM towary GROUP BY typ Instrukcja ta oblicza średnią cenę towaru dla każdego typu towaru. W tym przypadku funkcją agregującą jest funkcja AVG – obliczająca średnią wartość dla każdej grupy rekordów. Grupy rekordów tworzone są na podstawie typu towaru tzn. wszystkie towary danego typu tworzą jedną grupę i dla nich wyliczana jest średnia cena, następnie ta sama operacja jest przeprowadzana dla drugiego typu towaru, itd.

Język SQL – funkcje agregujące Przykład obliczający liczbę towarów każdego typu występujących w tabeli towary, wykorzystujący funkcję COUNT(*). SELECT id_typu, typ, COUNT(*) as ilosc FROM towary GROUP BY id_typu, typ Należy zwrócić uwagę na to, że na liście wyświetlanych pól w klauzuli SELECT mogą znaleźć się TYLKO wyrażenia z funkcjami agregującymi i pola znajdujące się w wyrażeniu grupującym GROUP BY.

Język SQL – funkcje agregujące Filtrowanie grup Możliwe jest zastosowanie ograniczenia dla wybieranych grup poprzez klauzulę HAVING warunek_logiczny tzn. tworzone będą tylko grupy dla których spełniony jest podany warunek logiczny. Warunek logiczny może być skonstruowany jedynie z funkcji agregujących i z pól występujących w wyrażeniu grupującym GROUP BY Przykład: średnia cena dla każdego typu towaru, ale tylko dla tych typów, które przyporządkowane są do więcej niż 3 towarów (grupy w których są 3 lub mniej rekordów są odrzucane). SELECT typ, AVG(cena) FROM towary GROUP BY typ HAVING COUNT(*)>3

Język SQL – funkcje agregujące Najczęściej popełniane błędy Umieszczenie w klauzuli SELECT wyrażeń nie będących funkcjami agregującymi ani nie związanych z wyrażeniem grupującym GROUP BY np. SELECT typ, cena, COUNT(*) FROM towary GROUP BY typ Umieszczenie funkcji agregującej w klauzuli WHERE np. SELECT typ,AVG(cena) WHERE COUNT(*)>3

Język SQL – funkcje agregujące Najczęściej popełniane błędy 3) Umieszczenie w klauzuli HAVING lub ORDER BY wyrażeń nie będących funkcjami agregującymi ani nie związanych z wyrażeniem grupującym GROUP BY np. SELECT typ, COUNT(*) FROM towary GROUP BY typ HAVING cena>100 ORDER BY cena

Język SQL – podzapytania Podzapytanie jest zapytaniem umieszczonym w ramach innego zapytania tzw. zapytania zewnętrznego. Podzapytanie najczęściej umieszczane jest w ramach klauzul WHERE i HAVING. Ogólny schemat: SELECT lista_pól FROM lista_tabel WHERE wyrażenie operator (SELECT lista_pól FROM lista_tabel WHERE wyrażenie) ORDER BY pole

Język SQL – podzapytania Przebieg wykonania zapytania z podzapytaniem 1) Wykonanie podzapytania 2) Wykonanie zapytania zewnętrznego wykorzystujące wartość dostarczoną przez podzapytanie. Wyróżniamy podzapytania wierszowe i tablicowe. Podzapytanie wierszowe Zwraca co najwyżej jeden rekord Możliwe jest zastosowanie dla niego operatorów =,!=,<>,>,>=,<,<= Przykład: informacje o nazwie i typie towaru o najniższej cenie SELECT nazwa,typ FROM towary WHERE cena = (SELECT MIN(cena) FROM towary)

Język SQL – podzapytania Podzapytanie tablicowe Zwraca zbiór rekordów Możliwe jest zastosowanie dla niego operatorów IN,ANY,ALL Przykład: informacje o nazwie, typie i cenie towarów, które są najdroższe w ramach każdego z typu towarów. SELECT nazwa,typ,cena FROM towary WHERE (id_typu,cena) IN (SELECT id_typu,MAX(cena) GROUP BY id_typu) Jak widzimy klauzula WHERE jednocześnie sprawdza wartości id_typu i cena. Podzapytanie wskazuje na maksymalną cenę towaru w ramach danego typu. Całe zapytanie wyświetla informacje o nazwie, typie i cenie tylko tych towarów, które mają odpowiednie id_typu i cenę wskazane przez podzapytanie.

Język SQL – podzapytania Dodatkowo z podzapytaniami tablicowymi mogą być stosowane operatory ANY i ALL. Operator ANY – warunek z tym operatorem jest prawdziwy jeśli jest spełniony dla przynajmniej jednej wartości odczytanej przez podzapytanie Operator ALL – warunek z tym operatorem jest prawdziwy jeśli jest spełniony dla wszystkich wartości odczytanych przez

Język SQL – podzapytania Przykład z operatorem ANY Wyświetl nazwy towarów z kategorii napoje których cena jest większa od ceny DOWOLNEGO towaru z kategorii slodycze. SELECT nazwa FROM towary WHERE cena > ANY (SELECT cena WHERE typ=‘slodycze’) AND typ = ‘napoje’

Język SQL – podzapytania Przykład z operatorem ALL Wyświetl nazwy towarów z kategorii napoje których cena jest większa od ceny WSZYSTKICH towarów z kategorii slodycze. SELECT nazwa FROM towary WHERE cena > ALL (SELECT cena WHERE typ=‘slodycze’) AND typ = ‘napoje’

Język SQL – podzapytania Podzapytania w klauzuli HAVING Zasady tworzenia takich podzapytań są identyczne jak w przypadku podzapytań w klauzuli WHERE. Przykład: Wyświetl nazwę typu i średnią cenę towaru danego typu, ale tylko dla typów, w których średnia cena towaru jest większa od średniej ceny wszystkich towarów w magazynie. SELECT typ,AVG(cena) FROM towary GROUP BY typ HAVING AVG(cena) > (SELECT AVG(cena) FROM towary)

Język SQL – podzapytania Podzapytania w klauzuli HAVING Zasady tworzenia takich podzapytań są identyczne jak w przypadku podzapytań w klauzuli WHERE. Przykład: Wyświetl nazwę typu i średnią cenę towaru danego typu, ale tylko dla typów, w których średnia cena towaru jest większa od średniej ceny wszystkich towarów w magazynie. SELECT typ,AVG(cena) FROM towary GROUP BY typ HAVING AVG(cena) > (SELECT AVG(cena) FROM towary)

Język SQL – zadania Stwórz zapytanie wyświetlające:   1) Informacje o średniej, minimalnej i maksymalnej cenie pokoju. 2) informacje o tym ile razy dany typ pokoju był zamawiany. 3) Informacje o liczbie rezerwacji dla pokoi 2 osobowych. 4) Informacje o średnim czasie pobytu w hotelu (data wyjazdu – data przyjazdu). 5) Informacje o średnich cenach pokoi dla każdego typu pokoju.

Język SQL – zadania 6) Informacje o maksymalnych cenach pokoi dla poszczególnych typów, ale tylko dla typów którym przypisany jest co najmniej jeden pokój. Wynik w postaci: nazwatypu, maxcena.   7) Informacje o liczbie rezerwacji którymi opiekuje się dany pracownik w postaci nazwisko, liczbarezerwacji. 8) Informacje o produktach z menu (nazwa,cena), ale tylko takich które były zamawiane co najmniej raz. 9) Informacje o klientach (nazwisko,imie) którzy zamówili co najmniej dwa produkty z menu.

Język SQL – zadania 10) Informacje o liczbie dotychczasowych rezerwacji dla pokoi każdego typu w postaci nazwatypu, liczbarezerwacji.   11) Informacja o pokoju o cenie minimalnej ze wszystkich w postaci id_pokoju, cena, osob, typ pokoju. 12) Informacje o nazwiskach pracowników, którzy opiekują się większą lub taką samą liczbą rezerwacji jak pracownik o nazwisku Goliszewska. 13) Informacje o pozycjach z menu, których cena jest większa od średniej ceny produktu z menu. Wynik w postaci: nazwa, cena.

Język SQL – zadania 14) Informacje o rezerwacjach, które dla których data_przyjazdu jest późniejsza niż ostatnia data_przyjazdu (tzn. max(data_przyjazdu)) osoby o nazwisku 'Kowalski'. Wynik w postaci: imie i nazwisko klienta, id_pokoju, nazwa typu pokoju, imie i nazwisko pracownika przyjmującego rezerwację.   15) Informacje o klientach którzy przyjeżdżali do hotelu częściej niż osoby, które zamawiały pokoje czterosobowe (tzn. klienci ci mieli więcej rezerwacji). Wynik w postaci: imie,nazwisko. 16) Informacje o pokojach które są najdroższe w ramach każdego z typów pokoi w postaci id_pokoju, cena, osob, typ pokoju.

Język SQL – zadania 17) Informacje o pokojach, których cena jest większa od ceny jakiegolwiek pokoju typu standard. Wynik w postaci id_pokoju, osob, cena, nazwa typu.   18) Informacje o pokojach, których cena jest mniejsza od ceny wszystkich pokoi typu apartament. Wynik w postaci id_pokoju, osob, cena, nazwa typu.