Plan wykładu Bazy danych Wykład 8: Algebra relacji. SQL - cd Algebra relacji operacje teoriomnogociowe rzutowanie selekcja przemianowanie Małgorzata Krtowska Katedra Oprogramowania e-mail: mmac@ii.pb.bialystok.pl SQL DML perspektywy Bazy danych (studia dzienne) 2 Pojcie algebry relacji Algebra relacji obejmuje metody tworzenia nowych, bardziej skomplikowanych relacji na podstawie innego zbioru relacji. Wyróniamy tutaj: wyraenie(operand) - relacja, przedstawiona w postaci nazwy relacji lub jej krotek operatory - rónego typu procedury, które pozwalaj na uzyskanie nowych relacji Algebra relacji jest podstawowym przykładem jzyka zapyta. Operacje w algebrze relacji Działania algebry zbiorów: suma,przecicie i rónica zastosowane do relacji Operacje zawania relacji: selekcja eliminuje pewne wiersze a rzutowanie niektóre kolumny Operacje komponowanie krotek pochodzcych z rónych relacji, np. iloczyn kartezjaski Operacje przemianowania, które nie zmieniaj krotek relacji, ale jej schemat, tzn. nazwy atrybutów lub/i nazw relacji Bazy danych (studia dzienne) 3 Bazy danych (studia dzienne) 4
Suma zbiorów R S - suma zbiorów R i S jest zbiorem elementów, z których kady naley do zbioru R lub do zbioru S, lub do obu równoczenie. Jeli jaki element naley do obu zbiorów, w sumie tych zbiorów wystpuje tylko raz. Odpowiednik w SQL: where deptno=10 union where deptno=30; Przecicie zbiorów R S - przecicie zbiorów R i S jest takim zbiorem, do którego nale tylko te elementy, które wystpuj zarówno w zbiorze S jak i w R. Odpowiednik w SQL where deptno=10 intersect where deptno=30; union all - nie powoduje eliminacji duplikatów Bazy danych (studia dzienne) 5 Bazy danych (studia dzienne) 6 Rónica zbiorów R-S - rónica zbiorów R i S to zbiór, do którego nale tylko te elementy ze zbioru R, które nie nale do S. Odpowiednik w SQL: where deptno=10 minus where deptno=30; Order by w zapytaniach z operatorami zbiorowymi Order by umieszcza si na kocu ostatniego polecenia SELECT Podajemy numer kolumny według, której chcemy sortowa, poniewa na listach wyboru mog wystpowa kolumny o rónych nazwach SELECT empno, ename, sal from emp union select id, name, salary from emp_history order by 2; Bazy danych (studia dzienne) 7 Bazy danych (studia dzienne) 8
Własnoci operacji na zbiorach na listach wyboru składników musi wystpowa taka sama liczba kolumn kolumny wystpujce na tych samych pozycjach na listach musz by tego samego typu w wyniku zapytania zostaj wyeliminowane powtarzajce si wiersze (wyjtek UNION ALL). Nie mona stosowa DISTINCT nagłówki kolumn wyników zapytania s tworzone na podstawie pierwszego rozkazu SELECT ORDER BY umieszcza si tylko raz na kocu całego złoonego zapytania operatory na zbiorach mog wystpowa w podzapytaniach Rzutowanie R1:=Proj L (R2) L - jest list atrybutów z relacji R2 relacja R1 powstaje przez przejcie po wszystkich krotkach relacji R2 i wybór wszystkich atrybutów bdcych na licie L (z zachowaniem kolejnoci) Jeeli wystepuj duplikaty krotek s one usuwane. Bazy danych (studia dzienne) 9 Bazy danych (studia dzienne) 10 Selekcja R1 := SELECT C (R2) C jest warunkiem, który odnosi si do atrybutów relacji R R1 składa si z tych wszystkich krotek relacji R2, które spełniaj warunek C. Iloczyn kartezjaski R3 := R1 * R2 kada krotka k1 relacji R1 jest łaczona z kad krotk k2 relacji R2 złczenie t1t2 jest krotk relacji R3 schemat relacji R3 składa si z atrybutów relacji R1 i nastpnie atrybutów relacji R2 w przypadku gdy atrybuty maj takie same nazwy A w relacjach R1 i R2 naley uywa: R1.A i R2.A Bazy danych (studia dzienne) 11 Bazy danych (studia dzienne) 12
Złczenie naturalne R3 := R1 JOIN R2 Złczenie relacji przez połczenie par krotek, które w jaki sposób sobie odpowiadaj: połczenie w pary tych krotek, które maj takie same wartoci pewnych atrybutów o tych samych nazwach krotka złczenia zawiera tylko jedn kopi powtarzajcych si wartoci R1 r1 r2 R2 Złczenie naturalne Odpowiednik SQL: Wypisa informacje o pracownikach łcznie z nazwami ich departamentów. select * from emp, dept where emp.deptno=dept.deptno; (lub od wersji Oracle 9i) select * from emp NATURAL JOIN dept; select * from emp JOIN dept USING (deptno); Krotka złczenia (r3) Bazy danych (studia dzienne) 13 Bazy danych (studia dzienne) 14 Złczenie teta R3:=R1 JOIN C R2 Relacja R3 jest utworzona w nastpujcy sposób: utworzy iloczyn kartezjaski relacji R1 i R2 z iloczynu kartezjaskiego wybra tylko te krotki, dla których warunek C jest spełniony Odpowiednik SQL: R3:=emp JOIN sal between losal and hisal salgrade select * from emp, salgrade where emp.sal between losal and hisal; Przykład Wypisz nazwiska wszystkich pracowników i nazwiska ich kierowników. Select prac.ename, kier.ename as mgr from emp prac, emp kier where prac.mgr=kier.empno; lub (od wersji Oracle 9i) Select prac.ename, kier.ename as mgr from emp prac JOIN emp kier ON prac.mgr=kier.empno; Bazy danych (studia dzienne) 15 Bazy danych (studia dzienne) 16
Przemianowanie Przemianowanie okrela nowy schemat relacji : nowe nazwy dla atrybutów relacji R1 := RENAME R1(A1,,An) (R2) - tworzy relacj R1 z atrybutami A1,,An i tymi samymi krotkami jak w relacji R2. Wersja uproszczona zapisu: R1(A1,,An) := R2. Odpowiednik SQL: R1(numer_d nazwa_d, miejsce):=dept select deptno as numer_d, dname as nazwa_d, loc as miejsce from dept; Tworzenie złoonych wyrae Tworzenie dowolnie złoonych wyrae, w których ustalanie kolejnoci wykonywania poszcególnych operacji jest okrelane poprzez wykorzystanie nawiasów i znajmo priorytetów operacji 3 notacje: sekwencje odpowiednich przypisa wyraenia z wieloma operatorami drzewa wyrae Bazy danych (studia dzienne) 17 Bazy danych (studia dzienne) 18 Sekwencje operacji Tworzenie tymczasowych relacji Przykład: R3 := R1 JOIN C R2 moe by zapisane jako: R4 := R1 * R2 R3 := SELECT C (R4) Wyraenia z jednym przypisaniem Przykład: złczenie teta R3 := R1 JOIN C R2 moe by zapisane jako: R3 := SELECT C (R1 * R2) Priorytety operatorów relacyjnych: [SELECT, PROJECT, RENAME] (najwyszy). [PRODUCT, JOIN]. INTERSECTION. [UNION, --] Bazy danych (studia dzienne) 19 Bazy danych (studia dzienne) 20
Drzewa wyrae W drzewie wyróniamy licie (wzły kocowe) oraz wzły wewntrzne. Licie s operandami - nazwy relacji Wzły wewntrzne - operatory, które działaj na potomkach danego wzła DML (insert, update, delete) perspektywy złczenia zewntrzne SQL Bazy danych (studia dzienne) 21 Bazy danych (studia dzienne) 22 Wstawianie wierszy Polecenie wstawiania nowych wierszy do tabeli: INSERT INTO nazwa_tabeli [(lista_kolumn)] VALUES (lista_wartoci);) Wstawianie wierszy wybieranych w zapytaniu: INSERT INTO nazwa_tabeli [(lista_kolumn)] SELECT lista_wyrae FROM...; Parametryzowane polecenie INSERT INSERT INTO nazwa_tabeli [(lista_kolumn)] VALUES(&warto1, &warto2,...) Przykład: INSERT INTO dept (deptno, dname, loc) VALUES (&d_numer, &d_nazwa, &d_miasto) Bazy danych (studia dzienne) 23 UPDATE Polecenie UPDATE słuy do zmiany wartoci w istniejcych wierszach: UPDATE tabela [alias] SET kolumna= {wyraenie podzapytanie } [, kolumna= {wyraenie podzapytanie }]... [WHERE warunek] Przykład: Zmieni dane w wierszu pracownika SCOTT: UPDATE emp SET job= salesman, hiredate=trunc(sysdate), sal=sal*1.1 WHERE ename= SCOTT ; Bazy danych (studia dzienne) 24
Przykład Załómy, e mamy informacje o dodatkowych prowizjach dla czci pracowników. S one umieszczone w tabeli commision(empno, comm). Dokona aktualizacji tabeli EMP na podstawie informacji zawartej w tabeli commision. UPDATE emp e SET comm=(select c.comm+e.comm from commision c where c.empno = e.empno) WHERE empno in (select empno from commision); DELETE Polecenie DELETE słuy do usuwania jednego lub wielu wierszy z tabeli. DELETE [FROM] tabela [WHERE warunek]; warunek WHERE okrela, które wiersze naley usun jeeli pominiemy klauzul WHERE wszystkie wiersze zostan pominite. Bazy danych (studia dzienne) 25 Bazy danych (studia dzienne) 26 Perspektywy Co to jest perspektywa jest podobna do okna, przez które ogldamy i modyfikujemy dane tabeli jest definiowana w oparciu o bazow tablic lub inn perspektyw. Jest przechowywana tylko w postaci definiujcego j polecenia SELECT. Jest obiektem wirtualnym - jest tabel, która nie istnieje w sposób rzeczywisty, lecz przez uytkowników jest widziana jak zwykła tabela nie przechowuje danych. Operuje jedynie danymi bazowymi tabeli Dlaczego uywa si perspektyw: aby ograniczy dostp do wszystkich danych tabeli; wybierajc dane z perspektywy jestemy ograniczeni tylko do pewnej czci danych tabeli aby ułatwi uytkownikom pobieranie rezultatów skomplikowanych zapyta za pomoc prostych zapyta aby zwolni uytkowników od wnikania w struktury danych oraz aby udostpni informacj widzian w róny sposób przez rónych uytkowników Tworzenie perspektyw CREATE [ OR REPLACE] VIEW nazwa_perspektywy [kolumna1, kolumna2,...] AS SELECT... Kolumna1 kolumna2... - to nazwy kolumn perspektywy, które musz odpowiada pozycjom z listy SELECT... Jeeli perspektywa o takiej nazwie ju istnieje, a chcemy tylko zmieni tre jej zapytania, musimy wczeniej usun poprzedni perspektyw lub uy opcji OR REPLACE; w definicji perspektywy nie moe wystpi klauzula ORDER BY Bazy danych (studia dzienne) 27 Bazy danych (studia dzienne) 28
Operacje DML na perspektywach Perspektywy mog słuy nie tylko do wybierania wartoci, ale równie do ich modyfikacji opcja WITH CHECK OPTION - pozwala na modyfikacj danych przez perspektyw,ale tylko w ograniczonym zakresie. Mona dodawa i modyfikowa tylko takie wiersze, które nastpnie bd wybrane przez t perspektyw. Ograniczenia operacji DML Operacja DELETE nie jest dozwolona, jeeli perspektywa zawiera jedno z: złczenie tabel funkcje grupowe klauzul GROUP BY kwalifikator DISTINCT pseudokolumn ROWNUM skorelowane podzapytanie CREATE VIEW D10EMP AS select epno, ename, sal from emp where deptno=10; CREATE VIEW D10EMP AS select epno, ename, sal from emp where deptno=10 with check option; Operacji UPDATE nie jest dozwolona, gdy: nie jest dozwolona operacja DELETE perspektywa zawiera kolumn wyraon za pomoc wyraenia (np. Sal*2) Operacja INSERT nie jest dozwolona, gdy: kolumna obowizkowa ( NOT NULL) nie jest wybierana przez perspektyw. Bazy danych (studia dzienne) 29 Bazy danych (studia dzienne) 30 Usuwanie perspektywy DROP VIEW nazwa_perspektywy rozkaz ten powoduje usunicie definicji perspektywy z bazy danych nie narusza wierszy i kolumn bo s one trzymane w tabelach, na których perspektywa była oparta pozostawienie innych perspektyw i aplikacji bazujcych na usunitej perspektywie powoduje błd perspektywa moe by usunita przez swojego właciciela lub administratora Bazy danych (studia dzienne) 31