Systemy baz danych - wykład I - Instytut Informatyki Teoretycznej i
Transkrypt
Systemy baz danych - wykład I - Instytut Informatyki Teoretycznej i
Systemy baz danych wykład I dr inż. Robert Perliński Systemy baz danych - wykład I Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL dr inż. Robert Perliński Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 27 lutego 2017 Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 1/51 Kwestie organizacyjne Systemy baz danych wykład I dr inż. Robert Perliński Kontakt: Organizacyjne mail: [email protected] strona: http://icis.pcz.pl/~rperlinski konsultacje: na stronie (najlepiej po wcześniejszym umówieniu drogą mailową) Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przedmiot kończy się egzaminem w formie pisemnej albo ustnej. Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 2/51 Plan przedmiotu Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Repetytorium SQL PL/SQL, dynamiczny SQL SQL3 Obiektowość w bazach danych Wprowadzenie do języka SQL typy i metody typy abstrakcyjne perspektywy relacyjno-obiektowe Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL NoSQL Bazy danych przestrzennych Model semistrukturalny, Xpath, Xquery Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa XML w SQL Wstrzyknięcia SQL Źródła Systemy baz danych - wykład I 3/51 Literatura I Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne C. J. Date, Wprowadzenie do systemów baz danych, WNT W-wa, (seria: Klasyka Informatyki), 2000 J. D. Ullman, Systemy baz danych, WNT - W-wa, 1998 Wprowadzenie do języka SQL J. D. Ullman, J. Widom, Podstawowy wykład z systemów baz danych, WNT, W-wa, 2000 (seria: Klasyka Informatyki) Podstawowe elementy języka H. Garcia-Molina, J. D. Ullman, J. Widom, Implementacja systemów baz danych, WNT, 2003 (seria: Klasyka Informatyki) DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła P. Beynon-Davies, Systemy baz danych (wyd. 3 zmienione i rozszerzone), WNT - W-wa, 2003 M. McLaughlin, Oracle Database 11g, Programowanie w języku PL/SQL, Helion 2009 J. Price, Oracle Database 11g i SQL, Programowanie, Helion 2009 Systemy baz danych - wykład I 4/51 Literatura II Systemy baz danych wykład I dr inż. Robert Perliński D. Tow, SQL optymalizacja, Helion, 2004 M. Lentner, Oracle 9i Kompletny podręcznik użytkownika, PJWSTK - W-wa, 2003 J. Gennick, SQL leksykon kieszonkowy, Helion 2004 Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Lausen George, Vossen Gottfried - Obiektowe bazy danych. Modele danych i języki, WNT, Warszawa, 2000 Harrington Jan L. - Obiektowe bazy danych, Mikom, Warszawa, 2001 T. W. Ling, M. L. Lee, G. Dobbie - Semistructured Database Design Springer-Verlag GmbH 2005. P. Sadalage, M. Fowler - NoSQL. Kompendium wiedzy, Helion 2014. D. Sullivan - NoSQL. Przyjazny przewodnik, Helion 2015. Źródła Systemy baz danych - wykład I 5/51 Pożyteczne strony Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne http://www.ploug.org.pl/ Wprowadzenie do języka SQL https://docs.oracle.com/en/database/ Podstawowe elementy języka http://wazniak.mimuw.edu.pl/index.php?title= Bazy_danych DML zapytania http://www.odbms.org/ Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 6/51 Język SQL Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Trochę historii: SQL - Structured Query Language stworzony na początku lat 70 ubiegłego wieku w IBM przez Donalda Messerly’ego, Donalda Chamberlina oraz Raymonda Boyce’a pod nazwą SEQUEL pierwszy SZBD - System R utworzony przez IBM w 1973 r. wykorzystujący SEQUEL pierwszy komercyjny SZBD stworzony przez Relational Software (obecnie Oracle) w 1979 r. dla amerykańskiej marynarki wojennej, CIA i kilku agencji rządowych; użycie SQL’a od 1986 SQL jest oficjalnym standardem (ANSI), od 1987 (ISO) aktualny standard SQL:2011 Systemy baz danych - wykład I 7/51 Cechy SQL Systemy baz danych wykład I dr inż. Robert Perliński Cechy języka SQL: język deklaratywny Organizacyjne język interpretowany Wprowadzenie do języka SQL podjęzyk danych Podstawowe elementy języka dostęp do danych z poziomu relacji DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji zbliżony konstrukcją do języka naturalnego wykorzystuje logikę trójwartościową wykorzystuje algebrę relacyjną nie jest do końca zgodny z modelem relacyjnym Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 8/51 Możliwości SQL Systemy baz danych wykład I dr inż. Robert Perliński Możliwości języka SQL: Organizacyjne wyszukiwanie danych Wprowadzenie do języka SQL wstawianie, usuwanie i modyfikacja danych Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL tworzenie baz danych tworzenie, modyfikowanie i usuwanie obiektów relacyjnych zarządzanie transakcjami zarządzanie bazą danych Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 9/51 Formy SQL Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL SQL interakcyjny (autonomiczny) Statyczny kod SQL (Static SQL) Osadzony SQL (Embedded SQL) Język modułów Podstawowe elementy języka DML zapytania Dynamiczny kod SQL (Dynamic SQL) Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 10/51 Składowe SQL Systemy baz danych wykład I dr inż. Robert Perliński DML (Data Manipulation Language) do manipulacji danymi zawierający polecenia SELECT, UPDATE, INSERT, DELETE itp; Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie DDL (Data Definition Language) do definiowania struktur dla danych (CREATE, DROP, ALTER itp.); DCL (Data Control Language) - do zarządzania bazą danych (GRANT, REVOKE). TCL (Transaction Control) - do zarządzania zmianami wykonanymi za pośrednictwem poleceń języka DML (COMMIT, SAVEPOINT, ROLLBACK, SET TRANSACTION). Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 11/51 Wady SQL Systemy baz danych wykład I dr inż. Robert Perliński standard nie jest przestrzegany przez różnych dostawców zbyt łatwe uzyskanie wyniku iloczynu kartezjańskiego Wprowadzenie do języka SQL czasem brak konsekwencji w składni wynikająca z pozostawienia starych form Podstawowe elementy języka zbliżenie SQL’a do języka mówionego spowodowało większą złożoność składni DML zapytania standard nie określa zachowań bazy danych w wielu sytuacjach (np.: indeksowanie, składowanie) Organizacyjne Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie standard określa składnię ale już nie określa dokładnie jej znaczenia, możliwa jest niejednoznaczność Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 12/51 Polecenie SQL Systemy baz danych wykład I dr inż. Robert Perliński Składniki polecenia (instrukcji) SQL Organizacyjne klauzule, niektóre opcjonalne Wprowadzenie do języka SQL wyrażenia Podstawowe elementy języka predykaty określające warunki DML zapytania Przetwarzanie transakcyjne DCL średnik kończący polecenie wielkość liter w składni jest ignorowana (w wartościach pól jest rozróżniana) Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 13/51 Polecenie SQL Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 14/51 Podstawowe typy danych SQL ANSI I Systemy baz danych wykład I dr inż. Robert Perliński CHARACTER(n), CHAR(n) - ciąg znaków o stałej długości określonej przez rozmiar Wprowadzenie do języka SQL CHARACTER VARYING(n), CHAR VARYING(n) - ciąg znaków o zmiennej długości, nie przekraczającej podanego rozmiaru Podstawowe elementy języka NUMERIC(p,s), DECIMAL(p,s) - liczby o ustalonej precyzji p i skali s DML zapytania INTEGER, INT, SMALLINT - liczby całkowite Przetwarzanie transakcyjne DCL FLOAT(b), DOUBLE PRECISION, REAL - liczby zmiennoprzecinkowe Organizacyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa DATE - data w formacie: YYYY-MM-DD TIME - czas w formacie: HH:MM:SS.p Źródła Systemy baz danych - wykład I 15/51 Podstawowe typy danych SQL ANSI II Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne TIMESTAMP - data wraz z czasem - znacznik czasu w formacie: YYYY-MM-DD HH:MM:SS.p Wprowadzenie do języka SQL INTERVAL - przedział czasu Podstawowe elementy języka BLOB - dane binarne DML zapytania CLOB - dane znakowe XML - dane w języku XML Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 16/51 Aliasy typów danych Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie SQL ANSI Oracle DB2 MySQL PostgrSQL MS SQL CHARACTER(n) CHAR(n) CHARACTER VARYING(n) CHAR VARYING(n) NUMERIC(p,s) DECIMAL(p,s) INTEGER INT, SMALLINT FLOAT(b) DOUBLE PRECISION REAL DATE TIME TIMESTAMP INTERVAL BLOB CLOB XML CHAR(n) CHARACTER(n) CHAR(n) CHAR(n) CHAR(n) VARCHAR2(n) VARCHAR(n) VARCHAR(n) VARCHAR(n) VARCHAR(n) NUMBER(p,s) DECIMAL(p,s) DECIMAL(p,s) NUMERIC(p,s) DECIMAL(p,s) NUMBER(38) INTEGER SMALLINT FLOAT(b) INT, INTEGER INT, INTEGER INTEGER NUMBER(p,s) FLOAT(b) NUMERIC(p,s) FLOAT(b) DATE DATE TIMESTAMP INTERVAL BLOB CLOB XMLTYPE DATE TIME TIMESTAMP BLOB CLOB XML DATE TIME TIMESTAMP +BLOB TEXT +- DATE TIME TIMESTAMP INTERVAL BYTEA TEXT XML DATETIME DATETIME DATETIME VARBINARY(n) TEXT +- Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 17/51 Literały Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL literały tekstowe znajdują się w apostrofach: ’tekst’ daty, przedziały i znaczniki czasowe zapisywane jak literały tekstowe w apostrofach; wymagają zastosowania formatu YYYY-MM-DD HH:MM:SS.p, np. ’1998-12-19 17:23:34.45’ literały liczbowe: 12, 45e-2 (można stosować notację naukową) Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 18/51 Przedziały czasu Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne wyróżniamy dwa typy przedziałów czasowych: miesiące do lat oraz sekundy do dni przykłady: INTERVAL '3-5' YEAR TO MONTH - przedział 3 lat i 5 miesięcy INTERVAL '5' YEAR - przedział 5 lat INTERVAL '5 10:12' DAY TO MINUTE - przedział 5 dni 10 godzin i 12 minut Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie przedziały maja szczególne zastosowanie w tzw. arytmetyce czasu Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 19/51 Arytmetyka czasu Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Typ DATE/TIMESTAMP DATE/TIMESTAMP INTERVAL TIMESTAMP DATE Operator +++ +- Typ NUMERIC INTERVAL DATE/TIMESTAMP DATE/TIMESTAMP DATE INTERVAL INTERVAL NUMERIC +*/ * INTERVAL NUMERIC INTERVAL Typ wyniku DATE DATE/TIMESTAMP DATE/TIMESTAMP INTERVAL INTERVAL (w Oracle NUMBER - liczba dni) INTERVAL INTERVAL INTERVAL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 20/51 Operatory Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła operatory arytmetyczne (+, -,*,/) operator przypisania = operatory porównania ( =, <>, <, <=, >, >=, LIKE, NOT LIKE) operator zawarcia w przedziale BETWEEN operator zawarcia w zbiorze IN operatory konkatenacji w standardzie: || (zachowany w Oracle, DB2 i PostgreSQL, zaś w MySQL funkcja Concat, w MS SQL operator +) operatory logiczne (ALL, AND, ANY, EXISTS, NOT, OR ) operatory zbiorowe (UNION, INTERSECT, EXCEPT (MINUS w Oracle)) operatory unarne (+, -) Systemy baz danych - wykład I 21/51 Hierarchia operatorów Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie ( ) +, - (opeartory unarne) *, / +, =, >, <, >=, <=, <> NOT AND ALL, ANY, BETWEEN, IN, LIKE, OR, SOME = (przypisanie) Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 22/51 Wyrażenia Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL atrybuty (nazwisko, placa, data_zatrudnienia, itp.) pseudokolumny (np. CURRVAL, NEXTVAL, LEVEL, ROWID, ROWNUM) stałe liczbowe (20, 16, 24.289, itp.) stałe łańcuchowe (’Kowalski’, ’Dyrektor’, itp.) działania arytmetyczne (placa+dod_funkcyjny, placa*12, 5/6, itp.) konkatenacja łańcuchów (imie||’ ’||nazwisko, itp.) funkcje Cechy transakcji Rozpoczęcie i zakończenie relacje Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 23/51 Konwencje typograficzne Systemy baz danych wykład I dr inż. Robert Perliński DUŻE LITERY - słowa kluczowe SQL Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL małe litery - elementy definiowane przez użytkownika znaki [] - oznaczenie elementów opcjonalnych znaki {} - oznaczenie grupy elementów opcjonalnych, z których jeden jest obowiązkowy znak | - znak oddzielający elementy opcjonalne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 24/51 Składnia zapytania Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka SELECT [DISTINCT] lista_wyrazen FROM lista_relacji [WHERE warunki] [GROUP BY kryteria [HAVING warunki]] [ORDER BY kryteria [DESC]]; DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji klauzule SELECT oraz FROM są obowiązkowe kolejność poszczególnych klauzul nie może być zmieniona Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 25/51 Klauzula SELECT Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka klauzula SELECT określa jakie kolumny znajdą się w relacji wynikowej (określa atrybuty rzutu); słowo kluczowe DISTINCT usuwa z wyniku zapytania powtórzenia; operator * oznacza wszystkie atrybuty relacji wejściowych. Istnieje możliwość stosowania aliasów (przezwisk) dla wyrażeń: SELECT imiona||' '||nazwisko Dane FROM studenci; SELECT imiona||' '||nazwisko FROM studenci; AS Dane SELECT imiona||' '||nazwisko FROM studenci; AS "Dane osobowe" DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 26/51 Klauzula FROM i WHERE Systemy baz danych wykład I dr inż. Robert Perliński klauzula FROM określa relacje wejściowe, z których będą pobierane dane; nazwom tabel można nadać aliasy. Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka klauzula WHERE określa warunki jakie muszą być spełnione przez wiersze relacji wynikowej (realizacja restrykcji). DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie SELECT imiona, nazwisko FROM studenci WHERE rok = 2 AND (gr_dziekan = 1 OR gr_dziekan = 2); Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 27/51 Klauzula GROUP BY Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL klauzula GROUP BY umożliwia podzielenie relacji na podzbiory - agregację. Pojedynczy podzbiór/grupę stanowią wiersze, dla których kryterium grupowania ma identyczną wartość. Na liście wyrażeń klauzuli SELECT mogą wówczas stanąć jedynie te wyrażenia, które są przedmiotem działania klauzuli GROUP BY, oraz argumenty funkcji agregujących. SELECT rok, Count(nazwisko) FROM studenci GROUP BY rok; Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa SELECT rok,gr_dziekan, Count(nazwisko) FROM studenci GROUP BY rok, gr_dziekan; Źródła Systemy baz danych - wykład I 28/51 Klauzula HAVING Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa klauzula HAVING określa warunki, które muszą być spełnione przez podzbiór by został uwzględniony w relacji wynikowej; (warunki zawarte w klazuli WHERE tyczą się relacji przed agregacją, zaś w HAVING po agregacji). SELECT rok, Count(nazwisko) FROM studenci GROUP BY rok HAVING Count(nazwisko) > 100; SELECT rok,gr_dziekan, Count(nazwisko) FROM studenci GROUP BY rok, gr_dziekan HAVING Count(nazwisko) > 20; Źródła Systemy baz danych - wykład I 29/51 Klauzula ORDER BY Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji klauzula ORDER BY umożliwia posortowanie danych wynikowych według zadanego kryterium, którym może być atrybut relacji wejściowych, alias, albo numer na liście wyrażeń klauzuli SELECT. Odwrotny porządek sortowanie uzyskujemy poprzez dodanie słowa kluczowego DESC. SELECT imiona, nazwisko, data_urodzenia AS urodziny FROM studenci ORDER BY nazwisko, 1 DESC, urodziny; Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 30/51 Operatory zbiorowe Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji UNION, INTERSECT, EXCEPT/MINUS używane są do przeprowadzania operacji sumy, przecięcia lub różnicy na dwóch lub więcej kompatybilnych relacjach będących wynikami zapytań. SELECT stanowisko FROM pracownicy WHERE id_dzialu=20 INTERSECT SELECT stanowisko FROM pracownicy WHERE id_dzialu=30; Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 31/51 Złączenia I Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Złączenia tabel w języku SQL uzyskuje się poprzez wstawienie więcej niż jednej relacji w klazuli FROM oraz polączenie ich odpowiednim operatorem. Notacja w standardzie ANSI SQL FROM tabela1 [AS alias] {CROSS JOIN | { [NATURAL] [typ_laczenia] JOIN tabela2 [AS alias] { ON warunek1 [{AND|OR} warunek2] [...] ] | USING (atrybut1 [,...]) } } Zdefiniowano następujące typy złączeń: iloczyn kartezjański złączenia naturalne θ-złączenia złaczenia zewnętrzne samozłączenia Systemy baz danych - wykład I 32/51 Iloczyn kartezjański Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Iloczyn kartezjański daje w wyniku relację składajacą się ze wszystkich możliwych kombinacji krotek obu łączonych relacji. Podstawowe elementy języka DML zapytania SELECT * FROM pracownicy CROSS JOIN dzialy; Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 33/51 Złączenie naturalne Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Złączenie naturalne daje w wyniku iloczyn kartezjański łączonych relacji ograniczony do tych krotek, dla których atrybuty o tych samych nazwach i typach w obu relacjach miały równe wartości. SELECT * FROM pracownicy NATURAL JOIN dzialy; Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 34/51 Złączenie warunkowe Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne θ-złączenie daje w wyniku iloczyn kartezjański łączonych relacji ograniczony do tych krotek, dla których został spełniony warunek θ. Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie SELECT * FROM pracownicy p [INNER] JOIN dzialy d ON (p.id_dzialu = d.id_dzialu); SELECT * FROM pracownicy p [INNER] JOIN dzialy d USING (id_dzialu); Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 35/51 Złączenie zewnętrzne Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Złączenie zewnętrzne rozszerza rezultat złączenia wewnętrznego o te wiersze jednej lub obu tabel, dla których nie odnaleziono odpowiedników w drugiej tabeli. Wiersze stanowiące rozszerzenie są wypełnione wartością NULL. Złączenia zewnętrzne dzielą się na: lewostronne prawostronne pełne SELECT * FROM pracownicy p {LEFT|RIGHT|FULL} [OUTER] JOIN dzialy d ON (p.id_dzialu = d.id_dzialu); Systemy baz danych - wykład I 36/51 Samozłączenie Systemy baz danych wykład I dr inż. Robert Perliński Samozłączenie Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania złączenie tabeli samej ze sobą. SELECT p.nazwisko, s.nazwisko FROM pracownicy p JOIN pracownicy s ON (p.kierownik = s.nr_akt); Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 37/51 Podzapytania I Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Podzapytanie to zapytanie zagnieżdżone w innym zapytaniu, może być zagnieżdżone w klauzulach: SELECT, FROM, WHERE oraz HAVING. Podzapytania są ograniczane nawiasami okrągłymi. Zapytania można zagnieżdżać wielokrotnie. Istnieją dwa typy podzapytań: podzapytanie proste - wykonywane w pierwszej kolejności, jako wynik pośredni trafiają do zapytania zewnętrznego. SELECT nazwisko FROM pracownicy WHERE placa = (SELECT Min(placa) FROM pracownicy); Źródła Systemy baz danych - wykład I 38/51 Podzapytania II Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania podzapytanie skorelowane - wykonywane dla każdego wiersza z zapytania zewnętrznego. SELECT nazwisko, rok FROM studenci s WHERE data_urodzenia = (SELECT Max(data_urodzenia) FROM studenci WHERE rok = s.rok); Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 39/51 Transakcja Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Transakcja jest sekwencją logicznie powiązanych operacji na bazie danych, która przeprowadza bazą danych z jednego stanu spójnego w inny stan spójny. Typy operacji na bazie danych obejmują: odczyt i zapis danych oraz zakończenie połączone z akceptacją (zatwierdzeniem) lub wycofaniem transakcji. Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 40/51 Przykład Systemy baz danych wykład I dr inż. Robert Perliński BEGIN TRANSACTION; Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL INSERT INTO zamowienia (nr_zam, l_sztuk, id_czesci) VALUES (1234, 1000, zab235); UPDATE stany_magazynu SET l_sztuk = l_sztuk - 1000 WHERE id_czesci LIKE 'zab235'; COMMIT; Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 41/51 Własności ACID I Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Atomicity - atomowość - zbiór operacji wchodzących w skład transakcji jest niepodzielny, to znaczy albo zostaną wykonane wszystkie operacje transakcji albo żadna. Consistency - spójność - transakcja przeprowadza bazę danych z jednego stanu spójnego do innego stanu spójnego. W trakcie wykonywania transakcji baza danych może być przejściowo niespójna. Transakcja nie może naruszać ograniczeń integralnościowych. Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 42/51 Własności ACID II Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Isolation - izolacja - transakcje są od siebie logicznie odseparowane. Transakcje oddziałują na siebie poprzez dane. Mimo współbieżnego wykonywania, transakcje widzą stan bazy danych tak, jak gdyby były wykonywane w sposób sekwencyjny. Durability - trwałość - wyniki zatwierdzonych transakcji nie mogą zostać utracone w wyniku wystąpienia awarii systemu. Zatwierdzone dane w bazie danych, w przypadku awarii, muszą być odtwarzalne. Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 43/51 Rozpoczęcie transakcji Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Niejawnie: Wprowadzenie pierwszej poprawnej instrukcji w sesji użytkownika. Zakończenie poprzedniej transakcji. Jawnie: w niektórych systemach bazodanowych wydanie polecenia START TRANSACTION Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 44/51 Zakończenie transakcji Systemy baz danych wykład I dr inż. Robert Perliński Jawnie: Organizacyjne wydanie polecenia COMMIT - zatwierdzenie zmian, Wprowadzenie do języka SQL wydanie polecenia ROLLBACK - wycofanie zmian. Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL Niejawnie: wylogowanie - zatwierdzenie zmian, wydanie polecenia DDL lub DCL - zatwierdzenie zmian, awaria systemu - wycofanie zmian. Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 45/51 Zatwierdzenie transakcji Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Skutki zatwierdzenia transakcji: zwolnienie blokad, usunięcie punktów bezpieczeństwa, sprawdzenie odroczonych ograniczeń integralnościowych, trwały zapis zmian, widoczność zmian dla innych transakcji. Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 46/51 Wycofanie transakcji Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka Skutki wycofania transakcji: zwolnienie blokad, anulowanie zmian - stan bazy sprzed transakcji. DML zapytania Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 47/51 Punkty bezpieczeństwa Systemy baz danych wykład I dr inż. Robert Perliński Tworzenie punktu bezpieczeństwa: SAVEPOINT nazwa_punktu; Organizacyjne Wprowadzenie do języka SQL Usuwanie punktu bezpieczeństwa: Podstawowe elementy języka DML zapytania RELEASE SAVEPOINT nazwa_punktu; Wycofanie do punktu bezpieczeństwa: Przetwarzanie transakcyjne DCL ROLLBACK TO SAVEPOINT nazwa_punktu; Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 48/51 Punkty bezpieczeństwa - przykład Systemy baz danych wykład I dr inż. Robert Perliński UPDATE pracownicy SET placa = placa + 500 WHERE nr_akt = 8901; SAVEPOINT s1; Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania Przetwarzanie transakcyjne DCL UPDATE pracownicy SET dod_funkcyjny = 1.1*dod_funkcyjny WHERE nr_akt = 8902; SAVEPOINT s2; DELETE FROM pracownicy WHERE nr_akt = 9120; Cechy transakcji Rozpoczęcie i zakończenie ROLLBACK TO SAVEPOINT s1; Punkty bezpieczeństwa Źródła ROLLBACK; Systemy baz danych - wykład I 49/51 Punkty bezpieczeństwa - przykład Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania DELETE FROM pracownicy WHERE nr_akt = 9120; SAVEPOINT s1; ALTER TABLE pracownicy RENAME COLUMN dod_funkcyjny TO placa_dod; Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 50/51 Źródła Systemy baz danych wykład I dr inż. Robert Perliński Organizacyjne Wprowadzenie do języka SQL Podstawowe elementy języka DML zapytania W wykładzie wykorzystano materiały: M. Lentner, Oracle 9i Kompletny podręcznik użytkownika, PJWSTK - W-wa, 2003 J. Gennick, SQL leksykon kieszonkowy, Helion 2004 http://sqlnut.atw.hu/ Przetwarzanie transakcyjne DCL Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa Źródła Systemy baz danych - wykład I 51/51