Temat: Tworzenie widoków.
Widok - kombinacja wierszy i kolumn wybranych z jednej lub kilku tabel. Po utworzeniu widoku można na nim wykonywać instrukcje SELECT jak na zwykłej tabeli. W bazie danych pamiętana jest jedynie definicja widoku.
Widok jest materializowany w razie potrzeby.
Korzyści ze stosowania widoków:
Te same dane mogą być widziane w różny sposób przez różnych użytkowników.
Pozwalają koncentrować się na danych istotnych, a ignorować inne.
Wprowadzają dodatkowy poziom niezależności od danych: Jeśli zmieni się coś w schemacie bazy danych, często wystarczy zmienić definicję widoku, nie zmieniając programu.
Wprowadzają ochronę danych przez ich ukrycie: Użytkownicy "widzą" tylko widoki, czyli tylko te dane, do których mają prawo dostępu.
Różnice między tabelami, a widokami:
Widoki nie zawierają danych; zawierają tylko informacje, jak zebrać te dane w razie potrzeby (tzn.
z jakich tablic, z jakich kolumn i w jaki sposób).
Widoków nie można indeksować (ale można indeksować tablice wchodzące w skład widoku).
W ogólności, nie można aktualizować danych poprzez widok.
Instrukcja CREATE VIEW pozwala na utworzenie widoku:
CREATE VIEW <nazwawidoku> [ <listakolumn> ] AS <instrukcjaSELECT >[WITH CHECK OPTION]
Opcjonalna <lista kolumn> określa nazwy kolumn widoku. Jeśli jej nie ma, nazwy kolumn pochodzą z instrukcji SELECT widoku.
WITH CHECK OPTION – gwarantuje, że wszystkie aktualizacje widoku (jeśli widok jest aktualizowalny) spełniają warunki występujące we frazie WHERE instrukcji SELECT.
Przykład
Utwórz widok Tpensja, który będzie przechowywał dane o wysokości pensji poszczególnych pracowników (widok aktualizowany).
CREATE VIEW Tpensja
AS SELECT nazwisko, imie, pensja FROM pracownicy, stanowiska
WHERE stanowisko=stanowiska.id_stanowiska WITH CHECK OPTION;
Wyświetlenie widoku: SELECT * FROM NazwaWidoku;
Usuwanie widoku: DROP VIEW NazwaWidoku;
Ćwiczenia 6
1. Utwórz widok Tpensja wzorując się na przykładzie powyżej.
2. Utwórz widok TOsoby, obliczający ilość pracowników na każdym ze stanowisk. Wyniki posortuj.
3. Utwórz widok TDane, zawierający dane pracowników o identyfikatorach parzystych.
4. Utwórz widok NZarobki, który wyświetli stanowiska o średniej płacy większej niż 2500 zł.
5. Utwórz widok TImie, który wyświetli pracowników o imionach zaczynających się na literę M.
6. Utwórz widok TNazwisko, który wyświetli pracowników o nazwiskach zaczynających się na literę B lub G.
7. Utwórz widok TMiasto, który policzy ilość osób według miast. Wyniki posortuj malejąco.
8. Utwórz widok TWyplaty, który obliczy sumę pieniędzy potrzebną na wypłaty w każdym mieście. Wyniki posortuj malejąco.
9. Utwórz widok TSrednia, który obliczy średnią pensję w każdym mieście. Wyniki posortuj malejąco.
10. Utwórz widok TMax, który pokaże najwyższe zarobki w każdym mieście. Wyniki posortuj malejąco.
11. Utwórz widok TMin, który pokaże najniższe zarobki w każdym mieście. Wyniki posortuj malejąco.
12. Utwórz widok TStanowiska, który obliczy średnią pensję dla każdego stanowiska.
13. Wyświetl wszystkie widoki i prześlij je nauczycielowi w celu zaliczenia ćwiczeń. Utwórz listę numerowaną i wklejaj kolejno zrzuty. W nagłówku strony powinno się znaleźć nazwisko ucznia i numer ćwiczenia.