UNION i widoki.

Transkrypt

UNION i widoki.
Operacje mnogo ciowe – operator UNION
je eli wyst puje klauzula ORDER BY, to powinna by umieszczona na ko cu, po ostatnim zapytaniu SELECT;
Składnia
sortowanie obejmuje wówczas wiersze ze wszystkich zapyta poł czonych za pomoc UNION;
SELECT ....
w ORDER BY nie mo na odwoływa si do nazw lub aliasów nazw kolumn – nale y odwoływa si poprzez
podanie pozycji kolumny;
UNION
SELECT …
w celu ujednolicenia wyniku, mo na nadawa
opcja domy lna: usuwa duplikuj ce si
kolumnom aliasy, ale tylko aliasy nadane w pierwszym
zapytaniu SELECT s brane pod uwag .
wynikiem UNION jest suma zbiorów wierszy zwróconych przez dwa (lub wi cej) zapytania;
wiersze i sortuje dane (sortowanie rosn ce, wzgl dem wszystkich
kolumn, zgodnie z ich kolejno ci na li cie SELECT);
Uwaga: Inne operatory mnogo ciowe (nie zaimplementowane dotychczas w systemie Firebird) to
opcja UNION ALL daje w wyniku wszystkie wiersze (je eli wiersz wyst pi w kilku zapytaniach, lub kilka razy w
MINUS (zwraca ró nic zbiorów wierszy zwróconych przez dwa zapytania);
jednym z zapyta , które ł czymy, to zwrócone b dzie ka de wyst pienie tego wiersza);
INTERSECT (zwraca cz
wspóln zbiorów wierszy zwróconych przez dwa zapytania).
UNION ALL nie sortuje wyniku;
przy u yciu UNION (lub UNION ALL) nale y zachowa zgodno
kolejno ci, ilo ci i typów danych kolumn
zwracanych przez wszystkie zapytania, które ł czymy za pomoc UNION;
SELECT c.customer as KLIENT, c.country as KRAJ, c.city||', '||c.state_province AS MIASTO, c.address_line1 as ADRES
FROM customer c
WHERE c.country='USA'
UNION
SELECT c.customer, c.country, c.city, c.address_line1
FROM customer c
WHERE c.country<>'USA’
15
Perspektywy (widoki)
16
• podanie pełnej listy nazw pól w definicji widoku jest opcjonalne, ale nie mo na jej pomin
Tworzenie perspektywy – składnia
wszystkie kolumny zwracane przez zapytanie SELECT maj
, je eli nie
okre lone nazwy (np. mamy wyra enie lub
CREATE VIEW nazwa_perspektywy (lista nazw) AS
funkcj agregacji); w takiej sytuacji nale y poda pełn list nazw pól widoku albo nada alias ka dej takiej
SELECT ....
kolumnie.
[WITH CHECK OPTION]
Definicja widoku
• perspektywa (inaczej widok) to obiekt bazy danych („logiczna tabela”), oparty na jednej lub wielu tabelach
bazy danych, zdefiniowany poprzez dowolne zapytanie SELECT;
• nazwa perspektywy musi by unikalna w ród nazw tabel i perspektyw;
• aby mo na było stworzy widok, u ytkownik musi mie odpowiedni zestaw uprawnie ;
• widok nie przechowuje danych, a jedynie umo liwia przedstawienie danych zawartych w tabelach bazy
(w przypadku widoków modyfikowalnych – tak e wprowadzanie zmian w tabelach bazowych poprzez widok);
• w bazie przechowywana jest tylko definicja widoku, czyli zapytanie SELECT, a nie dane b d ce wynikiem
tego zapytania;
Odwołanie do widoku:
CREATE VIEW dane_zarobki
AS
SELECT first_name, last_name, hire_date, salary, salary*0.2 as bonus
FROM employee
SELECT first_name, last_name, salary, bonus
CREATE VIEW zestawienie (liczba_prac, suma, srednia, dzial, nr)
SELECT suma, srednia, dzial
AS
FROM zestawienie
SELECT COUNT(*), SUM(salary), AVG(salary), department, d.dept_no
WHERE nr=’000’
FROM employee e JOIN department d
ON e.dept_no=d.dept_no
GROUP BY d.dept_no, department
CREATE VIEW dane_osobowe
AS
SELECT first_name, last_name, salary, hire_date
FROM employee
• Usuni cie widoku odbywa si za pomoc instrukcji
• do widoku w zapytaniach SELECT odwołujemy si jak do tabeli:
DROP VIEW nazwa_widoku
SELECT last_name, salary
FROM dane_osobowe
WHERE EXTRACT(YEAR FROM hire_date)=2009
17
FROM dane_zarobki
18
Własno ci widoków:
Za pomoc perspektyw mo na nie tylko przegl da , ale te modyfikowa dane w tabelach. Perspektywa, która
• przy ka dym odwołaniu do widoku, system bazy danych na nowo wykonuje definiuj ce go zapytanie, wi c
umo liwia dodawanie, usuwanie lub zmian
danych nazywana jest modyfikowaln . Aby perspektywa była
modyfikowalna, wystarczy, aby była to tzw. perspektywa prosta, czyli spełniaj ca warunki:
dane w widoku s zawsze aktualne
• do perspektywy odwołujemy si w poleceniach SQL w taki sam sposób, jak do tabeli
dane pochodz z jednej tabeli
• mo liwe jest tworzenie zagnie d onych widoków
nie zawiera kolumn wyliczonych, funkcji agregacji
• mo na odwoływa si w jednym zapytaniu zarówno do tabel, jak i widoków
nie zawiera klauzul UNION, GROUP BY, DISTINCT
• pozwalaj na wyliczenie warto ci funkcji agregacji na warto ciach ju zagregowanych, np.
CREATE VIEW zestawienie (liczba_prac, suma, srednia, nr)
SELECT MAX(liczba_prac), COUNT(DISTINCT suma)
AS
FROM zestawienie
U ycie w definicji widoku modyfikowalnego klauzuli
WITH CHECK OPTION
SELECT COUNT(*), SUM(salary), AVG(salary),dept_no
spowoduje, e wprowadzane zmiany nie b d
FROM employee
definiuj cym widok, tzn., zabronione s
mogły narusza warunków okre lonych w zapytaniu SELECT
GROUP BY dept_no
spowoduj wygenerowanie wierszy spoza widoku.
takie modyfikacje lub wstawienia wykonywane przez widok, które
Zastosowania perspektyw:
stworzenie dodatkowego poziomu zabezpieczenia tabeli poprzez ograniczenie dost pu do danych (mo na
udost pni
u ytkownikom tylko odpowiedni podzbiór wierszy i/lub kolumn, za pomoc
odpowiednio
skonstruowanych widoków)
ukrycie zło ono ci danych (dane s umieszczone w wielu tabelach, widok, stworzony w oparciu o zł czenie
wielu tabel, pozwala przedstawi dane w taki sposób, jakby pochodziły z jednej tabeli)
uproszczenie tworzonych zapyta SQL
umo liwiaj zaprezentowanie danych w inny sposób, bez konieczno ci ingerowania w struktur tabeli
19
20