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