lab 24 10 10

background image

Bazy danych

EWSIE

24.10.2010

Tworzenie i przeglądanie perspektyw

Aby móc ponownie skorzystać z tworzonych przez nas instrukcji SQL, szczególnie tych

bardzo długich i skomplikowanych, bez potrzeby ponownego ich wpisywania, tworzymy

perspektywy. Uważa się je za zapisane zapytania, które pozwalają na utworzenie obiektów bazy

danych działających podobnie do tabel, ale posiadających zawartość, która zmienia się dynamicznie

i dotyczy bezpośrednio tylko wybranych zgodnie z definicją wierszy. Perspektywy oferują dużą

elastyczność od tych dotyczących prostych zapytań do pojedynczej tabeli, aż do zapytań

skomplikowanych, dotyczących wielu tabel.

Tworzenie perspektyw

Polecenie CREATE VIEW pozwala na tworzenie widoków, czyli logicznych okien

zawierających widok na jedną lub więcej tabel. Widoki są obiektami podobnymi do formularzy,

gdyż nie przechowują danych, i do tabel, gdyż możliwe jest użycie tych samych poleceń SQL, które

można stosować do tabel (SELECT, UPDATE, DELETE, INSERT).

Dla wykonania określonych instrukcji SQL niezbędne jest spełnienie określonych wymagań.

Dotyczy to w szczególności polecenia SELECT, użytego dla tworzenia widoku i mogącego

zawierać klauzulę GROUP BY i DISTINCT.

Widoki są używane w celu zwiększenia poziomu bezpieczeństwa tablic poprzez ograniczenie

dostępu tylko do wybranych kolumn tabeli podstawowej oraz pozwalają ukryć przed

użytkownikiem złożoność danych.

Wadą widoków stosowanych w Postgresql jest niemożność dodawania i aktualizacji danych

poprzez te struktury. Ograniczenie to może sprawić nieco kłopotu programistom i użytkownikom

wykorzystującym tę cechę w innych systemach bazodanowych.

Składnia:

CREATE VIEW nazwa_prespektywy

AS zapytanie;

Gdzie zapytanie jest kompletnym zapytaniem SQL (w postaci instrukcji SELECT), które definiuje

zawartość perspektywy.

1

background image

Bazy danych

EWSIE

24.10.2010

Przykład 1

Interesują nas informacje dotyczące liczby pracowników. Wyniki, które nas interesują, można

uzyskać na kilka sposobów. Najprościej jest zdefiniować następujące zapytanie:

SELECT count(*) FROM pracownik;

UWAGA: symbol gwiazdki (*) w powyższym zapytaniu oznacza, że interesują nas wszystkie

wiersze. Zapytanie oblicza całkowitą liczbę zwracanych wierszy, a tym samym liczbę wszystkich

pracowników.

Zwiększając złożoność tego zapytania, można dodać klauzulę JOIN, aby powiązać informacje

z tabeli pracownik z informacjami z tabeli zespol, w celu uzyskania nazwy zespolu, w którym

każdy z pracowników jest zatrudniony. Dodatkowo można dodać do zapytania klauzulę GROUP

BY, aby pogrupować pracowników według nazw zespołów.

UWAGA: dzięki grupowaniu według nazw zespołów funkcja COUNT() obliczy liczbę wierszy dla

zagregowanego wiersza (w tym przypadku dla unikalnej nazwy zespołu). Wreszcie można dodać

funkcję MIN( ) dla kolumny placa_pod w tabeli pracownik, aby uzyskać informację o najniższej

płacy podstawowej, którą zarabia pracownik w każdym z zespołów wraz z liczbą zatrudnionych w

nim pracowników.

SELECT count(*) as Liczba, min(placa_pod) as min, nazwa

FROM pracownik as p INNER JOIN zespol as z ON p.id_zesp = z.id_zesp

GOUP BY z.nazwa

ORDER BY Liczba DESC;

Częste wpisywanie powyższego już nie prostego zapytania może nastręczać kłopotów, dlatego

tworzymy perspektywę dla tego samego zapytania.

CREATE VIEW pracownik_zespol

AS SELECT count(*) as Liczba, min(placa_pod) as min, nazwa

FROM pracownik as p INNER JOIN zespol as z ON p.id_zesp = z.id_zesp

GOUP BY z.nazwa

ORDER BY Liczba DESC;

2

background image

Bazy danych

EWSIE

24.10.2010

Zastosowanie perspektyw

Podstawową różnicą w działaniu perspektyw w stosunku do tabel jest fakt, że zamiast

wpisywania długiego zapytania wystarcza prosta instrukcja SELECT, np.

1. SELECT * FROM pracownik_zespol;

2. SELECT * FROM pracownik_zespol ORDER BY min DESC LIMIT 3;

Przykład 2 pokazuje ponadto, że wyniki perspektywy można posortować inaczej niż zrobiono to w

definicji perspektywy.

Każda próba użycia instrukcji DELETE lub UPDATE w odniesieniu do perspektywy powoduje

błąd, ponieważ perspektywa sama w sobie nie zawiera danych. Pomimo funkcjonalnego

podobieństwa do tabeli, perspektywa to jedynie „okno” do innego zbioru i sama w sobie nie jest

modyfikowalnym zbiorem danych.

Usuwanie perspektyw

Składnia:

DROP VIEW nazwa_perspektywy;

Usunięcie perspektywy nie ma wpływu na dane, które ta perspektywa wykorzystuje. Perspektywy

istnieją jedynie jako środek do obserwowania danych w innych tabelach i można je bezpiecznie

usunąć bez utraty danych (chociaż utracimy oczywiście zapytanie opisane przez perspektywę).

3


Wyszukiwarka

Podobne podstrony:
4 wykład0 24 10 2007
Ekologia 24[1].10.09, ^ Turystyka i Rekreacja GWSH Katowice, 3 semestr, ekologia
Wykłady 24.10, porty i terminale
24 10 2013
24 10 2011 (1)
Niesteroidoew leki przeciwzapalne 24,10,2012
24 10 11
2.Teoretyczne podstawy ksztalcenia 24.10. wyk
24 10 13 TOPICS FOR DISCUSSION agreeing & disagreeing 2
lab 13, 9.2.1.10 Packet Tracer Configuring Standard ACLs Instructions
Mikroekonomia 24 10 2013
WYKŁAD 2 (24.10.2009), semestr I, Prawo Pracu w UE
Zamówienia publiczne Uzasadnienie-ustawa pzp 24 10 2008
kpu 24 10
radio-gr.8-24.10.14
24 10 13 AGREEING AND DISAGREEING students
24 10 2012

więcej podobnych podstron