Widoki (views) - Perspektywy:

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 II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Język SQL Część II.
Podejście relacyjne Podejście relacyjne opiera się na wykorzystaniu do przedstawiania danych modelu relacyjnego i zarządzania nimi matematycznego modelu.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
PHP + MySQL część II.
Bazy danych II Instrukcja INSERT Piotr Górczyński 25/08/2001.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
Język SQL – zapytania zagnieżdżone (podzapytania)
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 8: Perspektywy i sekwencery.
WekaSQL Język i aplikacja przetwarzania oraz eksploracji danych.
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
SQL select kredytobiorca,bank, rodzaj, data_zawarcia, klasyfikacja,kwota, terminzapadalnosci-data_zawarcia iledni from tab_kredyt where (terminzapadalnosci-data_zawarcia)>1095.
Wymagania do projektu i realizacji baz danych:
POWTÓRZENIE definicja danych; opcje definicji kolumn;
POWTÓRZENIE Główne elementy składni SQL: Zasady ogólne
POWTÓRZENIE Kontrola integralności danych; dane wymagane;
Procedury i funkcje Tworzenie: CREATE
POWTÓRZENIE Metodologia : Pojęcia:
Zapytania SQL: wydajność i optymalizacja
Wykład 8 Wojciech Pieprzyca
BD-LAB6 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Relacyjne Bazy Danych (Oracle) Prezentacja jest współfinansowana.
Rozproszone bazy danych – 1 Replikacja danych
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bezpieczeństwo baz danych
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
SQL ("Structured Query Language" - "Strukturalny Język Zapytań"), opracowany przez firmę IBM jest rozwinięciem języka SEQUEL (“Structured English QUEry.
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
OPERACJA DZIELENIA W SQL
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Przetwarzanie w oknie - nowa siła zapytań
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
SQL - Structured Query Language
Systemy Zarządzania Bazami Danych Laboratorium 05 Widoki i eksport tabel/widoków 1.
Komendy SQL do pracy z tabelami i bazami
SQL – część II.
Język manipulacji danymi – SQL cz. I
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Systemy Baz Danych Wykład III
Bazy Danych W03: Spójność relacji i JOINy Wojciech St
Bazy Danych W04: JOIN (złączenia) Wojciech St
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Komendy SQL do pracy z danymi
Informatyka Stosowana – ROK II / III
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.
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
1 Definicja danych: Do utworzenia tabeli służy instrukcja CREATE TABLE, wymagająca podania nazwy tworzonej tabeli, nazwy każdej kolumny w tej tabeli, typu.
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.
1 Procedury i funkcje CREATE PROCEDURE nazwa ([proc_parameter[,...]]) [characteristic...] routine_body CREATE FUNCTION nazwa ([func_parameter[,...]]) RETURNS.
Ćwiczenie 1 Podaj liczbę wizyt w nieruchomościach w kolejnych dniach poprzedniego miesiąca kalendarzowego: SELECT data_wizyty, COUNT(*) AS liczba FROM.
SYSTEMY BAZ I HURTOWNI DANYCH
Strukturalny język zapytań SQL - historia
Technologie Informacyjne Bazy danych
Własności relacji: Baza danych jest zbiorem relacji, o następujących własnościach: każda relacja w bazie danych jest jednoznacznie określona przez swoją.
Zapis prezentacji:

Widoki (views) - Perspektywy: Perspektywa – dynamicznie obliczany wynik jednej lub wielu operacji relacyjnych tworzących nową relację (tabelę) z relacji bazowych. Perspektywa jest relacją wirtualną, która nie musi fizycznie istnieć w bazie danych, ale może być wyliczona w każdej chwili na żądanie użytkownika. Składnia polecenia: CREATE [OR REPLACE] VIEW nazwa_perspektywy [(lista_kolumn)] AS SELECT zapytanie [WITH [CASCADED | LOCAL] CHECK OPTION]

Jeżeli w poleceniu pominięta jest lista kolumn, to każda z kolumn perspektywy będzie miała taką samą nazwę, jak odpowiednia kolumna w wyniku zapytania SELECT.  Lista kolumn powinna być podana, jeśli istnieją jakiekolwiek niejasności dotyczące nazw kolumn (np. dla kolumn wyliczanych lub, gdy w wyniku złączenia powstają dwie kolumny o identycznych nazwach).

Usuwanie perspektywy: DROP VIEW [IF EXISTS] nazwa_perspektywy [, nazwa_perspektywy] ... [RESTRICT | CASCADE] Modyfikowanie perspektywy: ALTER VIEW nazwa_perspektywy [(lista_kolumn)] AS SELECT zapytanie [WITH [CASCADED | LOCAL] CHECK OPTION]

Rodzaje perspektyw: Utworzenie perspektywy poziomej: mysql> CREATE VIEW _11_biuro_B003 AS SELECT personelnr, imie, nazwisko, stanowisko, pensja FROM personel WHERE biuronr='B003'; mysql> SELECT * FROM _11_biuro_B003; +------------+-------------+------------+------------+--------+ | personelnr | imie | nazwisko | stanowisko | pensja | | SB20 | Sabina | Bober | dyrektor | 2400 | | SB21 | Daniel | Frankowski | kierownik | 1800 | | SB22 | Małgorzata | Kowalska | asystent | 1000 | | SB23 | Anna | Biały | asystent | 1200 |

Utworzenie perspektywy pionowej: mysql> CREATE VIEW _10_dyrektorzy AS SELECT personelnr, pensja FROM personel WHERE stanowisko='dyrektor'; mysql> SELECT * FROM _10_dyrektorzy;   +------------+--------+ | personelnr | pensja | | SB20 | 2400 | | SB30 | 2500 | | SG20 | 2200 | | SL30 | 3000 |

Perspektywy oparte na grupowaniu: mysql> CREATE VIEW srednie AS SELECT uczen, przedmiot, AVG(ocena) AS srednia FROM oceny GROUP BY uczen, przedmiot; mysql> SELECT* FROM srednie; +-------+------------+---------+ | uczen | przedmiot | srednia | | 1 | biologia | 5.00000 | | 1 | matematyka | 3.83333 | | 1 | polski | 4.00000 | | 2 | biologia | 3.25000 | | 2 | matematyka | 3.12500 | | 2 | polski | 4.66667 |

Podaj nieruchomości, które były wynajmowane częściej niż średnio Pierwszy etap: Policz ile razy była wynajmowana każda nieruchomość: mysql> CREATE VIEW ilosc AS SELECT count(*) AS ile FROM wynajecie GROUP BY nieruchomoscnr; mysql> SELECT * FROM ilosc; +-----+ | ile | | 3 | | 4 | | 2 |

Wyświetl, które nieruchomości były wynajmowane częściej niż średnio: Drugi etap: Wyświetl, które nieruchomości były wynajmowane częściej niż średnio: mysql> CREATE VIEW srednio AS SELECT n.nieruchomoscnr, miasto, n.czynsz, count(*) FROM nieruchomosc n, wynajecie w WHERE w.nieruchomoscnr = n.nieruchomoscnr GROUP BY nieruchomoscnr HAVING count(*)>=(SELECT AVG(ile) FROM ilosc); mysql> SELECT * FROM srednio; +----------------+-----------+--------+----------+ | nieruchomoscNr | miasto | czynsz | count(*) | | A14 | Augustów | 715 | 3 | | B16 | Białystok | 495 | 4 |

Wartość średnia wyniosła: SELECT AVG(ile) AS srednia FROM ilosc; mysql> SELECT AVG(ile) AS srednia FROM ilosc; +---------+ | srednia | | 2.2857 |

Zadanie bez stosowania perspektyw: SELECT n.nieruchomoscnr, miasto, n.czynsz, count(*) FROM nieruchomosc n, wynajecie w WHERE w.nieruchomoscnr = n.nieruchomoscnr GROUP BY nieruchomoscnr HAVING count(*)>=(SELECT AVG(ile) FROM (SELECT count(*) AS ile FROM wynajecie w GROUP BY nieruchomoscnr) tmp); +----------------+-----------+--------+----------+ | nieruchomoscNr | miasto | czynsz | count(*) | | A14 | Augustów | 715 | 3 | | B16 | Białystok | 495 | 4 |

Bez warunku WHERE Wszystkie 7 nieruchomości i wszystkie 17 wynajęć mysql> SELECT n.nieruchomoscnr, miasto, n.czynsz, count(*) FROM nieruchomosc n, wynajecie w GROUP BY nieruchomoscnr HAVING count(*)>=(SELECT AVG(ile) FROM (SELECT count(*) AS ile FROM wynajecie GROUP BY nieruchomoscnr) tmp); +----------------+-----------+--------+----------+ | nieruchomoscNr | miasto | czynsz | count(*) | | A14 | Augustów | 715 | 17 | | B16 | Białystok | 495 | 17 | | B17 | Białystok | 412 | 17 | | B18 | Białystok | 385 | 17 | | B21 | Białystok | 660 | 17 | | G01 | Grajewo | 830 | 17 | | L94 | Łomża | 440 | 17 | Wszystkie 7 nieruchomości i wszystkie 17 wynajęć

Przykłady: mysql> CREATE TABLE test (ilosc INT, cena INT); mysql> INSERT INTO test VALUES(3, 50); mysql> CREATE VIEW w AS SELECT ilosc, cena, ilosc*cena AS wartosc FROM test; mysql> SELECT * FROM w; +-------+------+---------+ | ilosc | cena | wartosc | | 3 | 50 | 150 |

mysql> CREATE VIEW roczna AS SELECT personelNr, stanowisko, pensja, pensja*12 AS pensja_roczna FROM personel; mysql> SELECT * FROM roczna; +------------+------------+--------+---------------+ | personelNr | stanowisko | pensja | pensja_roczna | | SE20 | dyrektor | 14050 | 168600 | | SE21 | kierownik | 1500 | 18000 | | SE22 | asystent | 1366 | 16392 | | SE23 | asystent | 11566 | 138792 | | SF10 | dyrektor | 16250 | 195000 | | SL20 | kierownik | 1200 | 14400 | | SL21 | asystent | 11366 | 136392 | | SL22 | asystent | 1466 | 17592 | | SL30 | dyrektor | 14650 | 175800 | | SL31 | asystent | 11266 | 135192 | | SL32 | kierownik | 13266 | 159192 |

Przykłady wprowadzania danych przez widoki: mysql> CREATE TABLE t1 (a INT); mysql> CREATE VIEW v1 AS SELECT * FROM t1 WHERE a < 2 WITH CHECK OPTION; mysql> CREATE VIEW v2 AS SELECT * FROM v1 WHERE a > 0 WITH LOCAL CHECK OPTION; mysql> CREATE VIEW v3 AS SELECT * FROM v1 WHERE a > 0 WITH CASCADED CHECK OPTION; mysql> INSERT INTO v1 VALUES (2); ERROR 1369 (HY000): CHECK OPTION failed 'biuro.v1' mysql> INSERT INTO v2 VALUES (2); mysql> select * from t1; +------+ | a | | 2 |

mysql> INSERT INTO v3 VALUES (2); ERROR 1369 (HY000): CHECK OPTION failed 'biuro.v3‘ mysql> INSERT INTO v1 VALUES (1); mysql> select * from t1; +------+ | a | | 2 | | 1 | mysql> select * from v1; /* podobnie v2, v3) */

Przykłady wprowadzania danych w bazie biuro: mysql> CREATE VIEW _10_dyrektorzy AS SELECT personelnr, nazwisko, imie, stanowisko, pensja,biuroNr FROM personel WHERE stanowisko='dyrektor' AND pensja >= 2500 WITH CHECK OPTION; mysql> SELECT * FROM _10_dyrektorzy2; +-----------+------------+-----------+-----------+--------+---------+ | personelnr| nazwisko | imie | stanowisko| pensja | biuroNr | | SB30 | Michalska | Katarzyna | dyrektor | 2500 | B006 | | SL30 | Wiśniewski | Jan | dyrektor | 14650 | B005 | mysql> INSERT INTO _10_dyrektorzy (personelNr, nazwisko, imie, stanowisko,pensja, biuroNr) VALUES ('SA10', 'Biedak', 'Jan', 'dyrektor', 2000,'B007'); ERROR 1369 (HY000): CHECK OPTION failed 'biuro._10_dyrektorzy'

mysql> SELECT * FROM _10_dyrektorzy; mysql> INSERT INTO _10_dyrektorzy (personelNr, nazwisko, imie, stanowisko, pensja, biuroNr) VALUES ('SF10','Bogacz','Jan', 'dyrektor', 5000, 'B001'); mysql> SELECT * FROM _10_dyrektorzy; +-----------+------------+-----------+-----------+--------+---------+ | personelnr| nazwisko | imie | stanowisko| pensja | biuroNr | | SB30 | Michalska | Katarzyna | dyrektor | 2500 | B006 | | SF10 | Bogacz | Jan | dyrektor | 5000 | B001 | | SL30 | Wiśniewski | Jan | dyrektor | 14650 | B005 |