Technologie baz danych

Podobne dokumenty
Plan wykładu. Elementy ERD BAZY DANYCH. Proces modelowania i implementacji bazy danych. Diagramy związków encji. SQL podzapytania

Bazy danych. Plan wykładu. Operacje w algebrze relacji. Pojcie algebry relacji. Wykład 8: Algebra relacji. SQL - cd

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Materiały szkoleniowe. Podstawy języka SQL

Zadania SELECT do schematu EDS (EMP, DEPT, SALGRADE)

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

3. Podzapytania, łączenie tabel i zapytań

Bazy danych. Plan wykáadu. Powtórzenie BCNF i 3NF. Nowa forma redundancji. Wykáad 6: Postaci normalne. SQL - zapytania záo*one.

Podstawy języka SQL cz. 2

Autor: Joanna Karwowska

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Przestrzenne bazy danych Podstawy języka SQL

Autor: Joanna Karwowska

Autor: Joanna Karwowska

Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.

RBD Relacyjne Bazy Danych

Teoretyczne podstawy informatyki

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

Grupowanie i funkcje agregacji

Grupowanie i funkcje agregacji. Grupowanie z użyciem rollup

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Model relacyjny. Wykład II

1 Wstęp do modelu relacyjnego

TECHNOLOGIE BAZ DANYCH

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

Technologie baz danych

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

PODZAPYTANIE (SUBSELECT)

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Wprowadzenie do języka SQL

Model relacyjny. Wykład II

Bazy danych. Plan wykładu. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania A B

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

SQL (ang. Structured Query Language)

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Bazy danych i usługi sieciowe

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Plan wykładu: Operacje relacji: suma, przekrój, różnica, złączenia proste, iloczyn kartezjański, złączenia teta.

Rozpatrzymy bardzo uproszczoną bazę danych o schemacie

Technologie baz danych

Oracle11g: Wprowadzenie do SQL

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Bazy danych 2. Wykład 4 Structured Query Language (SQL)

Język SQL. Rozdział 2. Proste zapytania

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Wykład 6. SQL praca z tabelami 3

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

Operacja Teta-złączenia. v1 v1 Θ v2

Wykład XII. optymalizacja w relacyjnych bazach danych

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Złaczenia tablic: FROM, WHERE, JOIN

Lista zadań nr Wyświetlić imię i nazwisko dla każdego pracownika z departamentu DEP T NO o numerze 000.

Bazy danych Algebra relacji Wykład dla studentów matematyki

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Paweł Rajba

Podstawowe zapytania SELECT (na jednej tabeli)

Systemy GIS Tworzenie zapytań w bazach danych

RBD Relacyjne Bazy Danych Więzy realcji

JPS. cwiczenia 3. Stosy, proste zapytania. Michał Lentner Polsko-Japońska Wyższa Szkoła Technik Komputerowych

Bazy danych wykład trzeci. Konrad Zdanowski

Materiały szkoleniowe. Podstawy jzyka SQL. Prowadzcy Anna Pijanowska - Kunierz Paweł ołnierczyk

SQL praca z tabelami 4. Wykład 7

Języki i środowiska przetwarzania danych rozproszonych

SQL Structured Query Language

Lista zadań nr 1. Bazy danych laboratorium. dr inż. Grzegorz Bazydło, dr inż. Jacek Tkacz

Relacyjne bazy danych. Podstawy SQL

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Bazy danych. Plan wykładu. Złczenia tabel. Perspektywy cd. Wykład 9: Programowanie aplikacji baz danych po stronie serwera. Sekwencje Wyzwalacze

Optymalizacja w relacyjnych bazach danych - wybór wydajnej strategii obliczania wyrażenia relacyjnego.

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

Zadania z SQLa (MS SQL Server)

Microsoft SQL Server Podstawy T-SQL

Bazy danych 6. Podzapytania i grupowanie. P. F. Góra

Bazy Danych. SQL Podstawy języka II: zapytania. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Język SQL. Rozdział 8. Język manipulowania danymi DML

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Laboratorium Bazy danych SQL 2

Bazy danych. Dr inż. Paweł Kasprowski

- 307 W Oracle instrukcja SELECT Ename FROM Emp WHERE Empno=4567: [ ] zakłada blokadę do odczytu dla jednego wiersza tabeli Emp [ ] zakłada blokadę

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Laboratorium Bazy danych SQL 3 1

Funkcje analityczne SQL CUBE (1)

Standard SQL/XML. Wprowadzenie do XQuery

Bazy danych 8. Podzapytania i grupowanie. P. F. Góra

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Transkrypt:

Plan wykładu Technologie baz danych Wykład 6: Algebra relacji. SQL - cd Algebra relacji operacje teoriomnogościowe rzutowanie selekcja przemianowanie Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka SQL Podzapytania skorelowane Podzapytania w klauzuli HAVING 2 Pojęcie algebry relacji Operacje w algebrze relacji Algebra relacji obejmuje metody tworzenia nowych, bardziej skomplikowanych relacji na podstawie innego zbioru relacji. Wyróżniamy tutaj: wyrażenie(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 języka zapytań. Działania algebry zbiorów: suma, przecięcie i różnica zastosowane do relacji Operacje zawężania relacji: selekcja eliminuje pewne wiersze a rzutowanie niektóre kolumny Operacje komponowania krotek pochodzących z różnych relacji, np. iloczyn kartezjański Operacje przemianowania, które nie zmieniają krotek relacji, ale jej schemat, tzn. nazwy atrybutów lub/i nazwę relacji 3 4

Suma zbiorów Przecięcie zbiorów R S - suma zbiorów R i S jest zbiorem elementów, z których każdy należy do zbioru R lub do zbioru S, lub do obu równocześnie. Jeśli jakiś element należy do obu zbiorów, w sumie tych zbiorów występuje tylko raz. Odpowiednik w SQL: where deptno=10 union where deptno=30; R S - przecięcie zbiorów R i S jest takim zbiorem, do którego należą tylko te elementy, które występują 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 5 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 końcu ostatniego polecenia SELECT Podajemy numer kolumny według, której chcemy sortować, ponieważ na listach wyboru mogą występować kolumny o różnych nazwach SELECT empno, ename, sal from emp union select id, name, salary from emp_history order by 2; 7 8

Własności operacji na zbiorach na listach wyboru składników musi występować taka sama liczba kolumn kolumny występujące na tych samych pozycjach na listach muszą być tego samego typu w wyniku zapytania zostają wyeliminowane powtarzające się wiersze (wyjątek UNION ALL). Nie można stosować DISTINCT nagłówki kolumn wyników zapytania są tworzone na podstawie pierwszego rozkazu SELECT ORDER BY umieszcza się tylko raz na końcu całego złożonego zapytania operatory na zbiorach mogą występować w podzapytaniach Rzutowanie R1:=Proj L (R2) L - jest listą atrybutów z relacji R2 relacja R1 powstaje przez przejście po wszystkich krotkach relacji R2 i wybór wszystkich atrybutów będących na liście L (z zachowaniem kolejności) Jeżeli wystepują duplikaty krotek są one usuwane. Film: Tytuł Rok Czas Rodzaj Żurek 2003 71 Kolor Kingsajz 1987 95 Kolor Seksmisja 1984 117 Kolor R1:=Proj tytuł, czas (Film) Tytuł Czas Żurek 71 Kingsajz 95 Seksmisja 117 9 10 Rzutowanie Selekcja Odpowiednik SQL: select empno, ename from emp; 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. Film: Tytuł Rok Czas Rodzaj Żurek 2003 71 Kolor Kingsajz 1987 95 Kolor Seksmisja 1984 117 Kolor R1:=SELECT CZAS>90 (Film) Tytuł Rok Czas Rodzaj Kingsajz 1987 95 Kolor Seksmisja 1984 117 Kolor 11 12

Odpowiednik SQL select * from emp where job = MANAGER ; Selekcja Iloczyn kartezjański R3 := R1 * R2 każda krotka k1 relacji R1 jest łączona z każdą krotką k2 relacji R2 złączenie t1t2 jest krotką relacji R3 schemat relacji R3 składa się z atrybutów relacji R1 i następnie atrybutów relacji R2 w przypadku gdy atrybuty mają takie same nazwy A w relacjach R1 i R2 należy używać: R1.A i R2.A 13 14 Przykład R3:=R1*R2 Iloczyn kartezjański R1( A, B ) 1 2 3 4 R2( B, C ) 5 6 7 8 9 10 R3( A, R1.B, R2.B, C ) 1 2 5 6 1 2 7 8 1 2 9 10 3 4 5 6 3 4 7 8 3 4 9 10 Odpowiednik SQL: Policzyć jaki procent pracowników pracuje w poszczególnych działach firmy.podać nazwę działu i procent pracowników. SQL> select A.dname, (A.x/B.y)*100 procent from (select dname, count(empno) x from emp, dept where emp.deptno (+) = dept.deptno group by dname, dept.deptno) A, (select count(*) y from emp) B; DNAME PROCENT -------------- ---------- ACCOUNTING 21,4285714 RESEARCH 35,7142857 SALES 42,8571429 OPERATIONS 0 15 16

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 wartości pewnych atrybutów o tych samych nazwach krotka złączenia zawiera tylko jedną kopię powtarzających się wartości 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) 17 18 Złączenie teta R3:=R1 JOIN C R2 Relacja R3 jest utworzona w następujący sposób: utworzyć iloczyn kartezjański relacji R1 i R2 z iloczynu kartezjańskiego 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; 19 20

Przemianowanie Tworzenie złożonych wyrażeń Przemianowanie określa 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 Tworzenie dowolnie złożonych wyrażeń, w których ustalanie kolejności wykonywania poszczególnych operacji jest określane poprzez wykorzystanie nawiasów i znajmość priorytetów operacji 3 notacje: sekwencje odpowiednich przypisań wyrażenia z wieloma operatorami drzewa wyrażeń select deptno as numer_d, dname as nazwa_d, loc as miejsce from dept; 21 22 Sekwencje operacji Wyrażenia z jednym przypisaniem Tworzenie tymczasowych relacji Przykład: R3 := R1 JOIN C R2 może być zapisane jako: R4 := R1 * R2 R3 := SELECT C (R4) Przykład: złączenie teta R3 := R1 JOIN C R2 może być zapisane jako: R3 := SELECT C (R1 * R2) Priorytety operatorów relacyjnych: [SELECT, PROJECT, RENAME] (najwyższy). [PRODUCT, JOIN]. INTERSECTION. [UNION, --] 23 24

Drzewa wyrażeń W drzewie wyróżniamy liście (węzły końcowe) oraz węzły wewnętrzne. Liście są operandami - nazwy relacji Węzły wewnętrzne - operatory, które działają na potomkach danego węzła 25 26 Podzapytania zwracające wiele wierszy Znaleźć pracowników o pensjach z listy najniższych zarobków osiąganych w departamentach. SQL> select nazwisko, pensja, nr_departamentu from pracownik where pensja in (select min(pensja) from pracownik group by nr_departamentu); nazwisko pensja nr_departamentu ---------- ---------- ---------- SMITH 800 20 JAMES 950 30 MILLER 1300 10 W jaki sposób można uzyskać informacje o pracownikach zarabiających najmniej w ich departamentach? (Metoda 1) SQL> select nazwisko, pensja, nr_departamentu from pracownik where (pensja,nr_departamentu) in (select min(pensja), nr_departamentu from pracownik group by nr_departamentu); nazwisko pensja nr_departamentu ---------- ---------- ---------- SMITH 800 20 JAMES 950 30 MILLER 1300 10 Uwagi WHERE (kolumna1, kolumna 2...) = (SELECT kol1, kol2...) kolumny w bloku zewnętrznym powinny być ujęte w nawiasy i oddzielone przecinkami powinna być zgodność co do liczby i typu kolumn wybieranych w bloku wewnętrznym i kolumn bloku zewnętrznego porównywanych z nimi Podzapytania skorelowane W jaki sposób można uzyskać informacje o pracownikach zarabiających najmniej w ich departamentach? (Metoda 2) SQL> select nazwisko, pensja, nr_departamentu from pracownik e where pensja = (select min(pensja) from pracownik where e.nr_departamentu=pracownik.nr_departamentu group by nr_departamentu); nazwisko pensja nr_departamentu ---------- ---------- ---------- SMITH 800 20 JAMES 950 30 MILLER 1300 10 27 28

Podzapytania skorelowane uwagi Podzapytania w klauzuli HAVING 29 Każdy wiersz proponowany przez zapytanie główne przechodzi próbę warunku wyrażonego za pomocą zapytania skorelowanego, w którym występuje odwołanie do wartości kolumn tego wiersza. Wykonanie SELECT z podzapytaniem skorelowanym: pobranie wiersza przez zewnętrzne zapytanie wykonanie wewnętrznego zapytania na podstawie wartości z pobranego w pkt 1. Wiersza zaakceptowanie bądź odrzucenie wiersza na podstawie wyniku zapytania z pkt 2. Powtórzenie akcji opisanych wyżej, aż do wyczerpania wszystkich wierszy proponowanych przez zapytanie zewnętrzne. 30 Wybrać te departamenty, których średnie zarobki przekraczają średni zarobek departamentu 30. Select nr_departamentu, avg(pensja) from pracownik group by nr_departamentu having avg(pensja) >(select avg(pensja) from pracownik where nr_departamentu=30); Znaleźć stanowisko pracy, na którym są najwyższe średnie zarobki. Select stanowisko, avg(pensja) from pracownik group by stanowisko having avg(pensja) =(select max(avg(pensja)) from pracownik group by stanowisko);