27 lutego Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład I. dr inż.

Podobne dokumenty
mail: strona: konsultacje: na stronie (po wcześniejszym umówieniu drogą mailową)

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

SQL Structured Query Language

SQL Structured Query Language

SQL Structured Query Language

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

1 Wprowadzenie do języka SQL 1. 2 Podstawowe elementy języka 3. 3 DML - zapytania, część I 6. 4 Źródła 12

Przestrzenne bazy danych Podstawy języka SQL

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Bazy danych. Dr inż. Paweł Kasprowski

przykłady problemów; realizacja dostaw części od producenta do klienta:

Paweł Rajba

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

Systemy GIS Tworzenie zapytań w bazach danych

Ref. 7 - Język SQL - polecenia DDL i DML

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZEWODNIK PO PRZEDMIOCIE

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

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Microsoft SQL Server Podstawy T-SQL

Język SQL, zajęcia nr 1

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

Relacyjne bazy danych. Podstawy SQL

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

Oracle11g: Wprowadzenie do SQL

Model relacyjny. Wykład II

STANDARDY JĘZYKA SQL CECHY JĘZYKA SQL WADY I ZALETY

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

Autor: Joanna Karwowska

1 Wstęp do modelu relacyjnego

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

Wykład 6. SQL praca z tabelami 3

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

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

Język SQL podstawy zapytań

Współczesne systemy baz danych

Wykład 8. SQL praca z tabelami 5

Model relacyjny. Wykład II

1 Wprowadzenie do funkcji

P o d s t a w y j ę z y k a S Q L

Projektowanie systemów baz danych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Współczesne systemy baz danych

Relacyjne bazy danych. Podstawy SQL

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

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

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

PRZEWODNIK PO PRZEDMIOCIE

Wprowadzenie do języka SQL

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

mail: strona: konsultacje: na stronie (po wcześniejszym umówieniu drogą mailową)

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli

Język SQL. Rozdział 2. Proste zapytania

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Bazy danych 7. SQL podstawy

Bazy danych - Materiały do laboratoriów IV

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

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

Ćwiczenie 7 - DDL. Relacje i ograniczenia integralnościowe. Ćwiczenie 7 DDL. Wymagania: Bazy Danych

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy danych - Materiały do laboratoriów VIII

2. Język SQL SQL jest językiem deklaratywnym (Charakterystyczną cechą języków

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

Wykład 5. SQL praca z tabelami 2

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

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

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

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

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

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

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

2 Przygotował: mgr inż. Maciej Lasota

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W NOWYM SĄCZU SYLABUS PRZEDMIOTU. Obowiązuje od roku akademickiego: 2011/2012

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

SQL (ang. Structured Query Language)

Bazy danych. Informacje podstawowe

Bazy danych. Polecenia SQL

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Oracle PL/SQL. Paweł Rajba.

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

Tworzenie zapytań do Microsoft SQL Server

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

SQL w praktyce. Miłej i owocnej nauki!!!

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

LITERATURA. Wprowadzenie do systemów baz danych C.J.Date; WNT Warszawa 2000

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Wykład 2. SQL 1 Structured Query Lenguage

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Transkrypt:

do SQL Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 27 lutego 2017 1/51

Kwestie organizacyjne do SQL Kontakt: mail: rperlinski@icis.pcz.pl strona: http://icis.pcz.pl/~rperlinski konsultacje: na stronie (najlepiej po wcześniejszym umówieniu drogą mailową) Przedmiot kończy się egzaminem w formie pisemnej albo ustnej. 2/51

Plan przedmiotu do SQL Repetytorium SQL PL/SQL, dynamiczny SQL SQL3 Obiektowość w bazach danych typy i metody typy abstrakcyjne perspektywy relacyjno-obiektowe NoSQL Bazy danych przestrzennych Model semistrukturalny, Xpath, Xquery XML w SQL Wstrzyknięcia SQL 3/51

Literatura I do SQL C. J. Date, do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000 J. D. Ullman, danych, WNT - W-wa, 1998 J. D. Ullman, J. Widom, Podstawowy wykład z systemów baz danych, WNT, W-wa, 2000 (seria: Klasyka Informatyki) H. Garcia-Molina, J. D. Ullman, J. Widom, Implementacja systemów baz danych, WNT, 2003 (seria: Klasyka Informatyki) P. Beynon-Davies, 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 4/51

Literatura II do SQL 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 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. 5/51

Pożyteczne strony do SQL http://www.ploug.org.pl/ https://docs.oracle.com/en/database/ http://wazniak.mimuw.edu.pl/index.php?title= Bazy_danych http://www.odbms.org/ 6/51

Język SQL do SQL 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 7/51

Cechy SQL do SQL Cechy SQL: język deklaratywny język interpretowany podjęzyk danych dostęp do danych z poziomu relacji zbliżony konstrukcją do naturalnego wykorzystuje logikę trójwartościową wykorzystuje algebrę relacyjną nie jest do końca zgodny z modelem relacyjnym 8/51

Możliwości SQL do SQL Możliwości SQL: wyszukiwanie danych wstawianie, usuwanie i modyfikacja danych tworzenie baz danych tworzenie, modyfikowanie i usuwanie obiektów relacyjnych zarządzanie transakcjami zarządzanie bazą danych 9/51

Formy SQL do SQL SQL interakcyjny (autonomiczny) Statyczny kod SQL (Static SQL) Osadzony SQL (Embedded SQL) Język modułów Dynamiczny kod SQL (Dynamic SQL) 10/51

Składowe SQL do SQL DML (Data Manipulation Language) do manipulacji danymi zawierający polecenia SELECT, UPDATE, INSERT, DELETE itp; DDL (Data Definition Language) do definiowania struktur dla danych (CREATE, DROP, ALTER itp.); (Data Control Language) - do zarządzania bazą danych (GRANT, REVOKE). TCL (Transaction Control) - do zarządzania zmianami wykonanymi za pośrednictwem poleceń DML (COMMIT, SAVEPOINT, ROLLBACK, SET TRANSACTION). 11/51

Wady SQL do SQL standard nie jest przestrzegany przez różnych dostawców zbyt łatwe uzyskanie wyniku iloczynu kartezjańskiego czasem brak konsekwencji w składni wynikająca z pozostawienia starych form zbliżenie SQL a do mówionego spowodowało większą złożoność składni standard nie określa zachowań bazy danych w wielu sytuacjach (np.: indeksowanie, składowanie) standard określa składnię ale już nie określa dokładnie jej znaczenia, możliwa jest niejednoznaczność 12/51

Polecenie SQL do SQL Składniki polecenia (instrukcji) SQL klauzule, niektóre opcjonalne wyrażenia predykaty określające warunki średnik kończący polecenie wielkość liter w składni jest ignorowana (w wartościach pól jest rozróżniana) 13/51

Polecenie SQL do SQL 14/51

typy danych SQL ANSI I do SQL CHARACTER(n), CHAR(n) - ciąg znaków o stałej długości określonej przez rozmiar CHARACTER VARYING(n), CHAR VARYING(n) - ciąg znaków o zmiennej długości, nie przekraczającej podanego rozmiaru NUMERIC(p,s), DECIMAL(p,s) - liczby o ustalonej precyzji p i skali s INTEGER, INT, SMALLINT - liczby całkowite FLOAT(b), DOUBLE PRECISION, REAL - liczby zmiennoprzecinkowe DATE - data w formacie: YYYY-MM-DD TIME - czas w formacie: HH:MM:SS.p 15/51

typy danych SQL ANSI II do SQL TIMESTAMP - data wraz z czasem - znacznik czasu w formacie: YYYY-MM-DD HH:MM:SS.p INTERVAL - przedział czasu BLOB - dane binarne CLOB - dane znakowe XML - dane w języku XML 16/51

17/51 Aliasy typów danych do SQL SQL ANSI Oracle DB2 MySQL PostgrSQL MS SQL CHARACTER(n) CHAR(n) CHARACTER(n) CHAR(n) CHAR(n) CHAR(n) CHAR(n) CHARACTER VARCHAR2(n) VARCHAR(n) VARCHAR(n) VARCHAR(n) VARCHAR(n) VARYING(n) CHAR VARYING(n) NUMERIC(p,s) NUMBER(p,s) DECIMAL(p,s) DECIMAL(p,s) NUMERIC(p,s) DECIMAL(p,s) DECIMAL(p,s) INTEGER NUMBER(38) INTEGER INT, INTEGER INT, INTEGER INTEGER INT, SMALLINT SMALLINT FLOAT(b) NUMBER(p,s) FLOAT(b) FLOAT(b) NUMERIC(p,s) FLOAT(b) DOUBLE PRECISION REAL DATE DATE DATE DATE DATE DATETIME TIME DATE TIME TIME TIME DATETIME TIMESTAMP TIMESTAMP TIMESTAMP TIMESTAMP TIMESTAMP DATETIME INTERVAL INTERVAL - +- INTERVAL - BLOB BLOB BLOB BLOB BYTEA VARBINARY(n) CLOB CLOB CLOB TEXT TEXT TEXT XML XMLTYPE XML +- XML +-

Literały do SQL 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ą) 18/51

Przedziały czasu do SQL 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 przedziały maja szczególne zastosowanie w tzw. arytmetyce czasu 19/51

Arytmetyka czasu do SQL Typ Operator Typ Typ wyniku DATE/TIMESTAMP + - NUMERIC DATE DATE/TIMESTAMP + - INTERVAL DATE/TIMESTAMP INTERVAL + DATE/TIMESTAMP DATE/TIMESTAMP TIMESTAMP + - DATE/TIMESTAMP INTERVAL DATE - DATE INTERVAL (w Oracle NUMBER - liczba dni) INTERVAL + - INTERVAL INTERVAL INTERVAL * / NUMERIC INTERVAL NUMERIC * INTERVAL INTERVAL 20/51

Operatory do SQL 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 (+, -) 21/51

Hierarchia operatorów do SQL ( ) +, - (opeartory unarne) *, / +, - =, >, <, >=, <=, <> NOT AND ALL, ANY, BETWEEN, IN, LIKE, OR, SOME = (przypisanie) 22/51

Wyrażenia do SQL 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 relacje 23/51

Konwencje typograficzne do SQL DUŻE LITERY - słowa kluczowe SQL małe litery - 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 opcjonalne 24/51

Składnia do SQL SELECT [DISTINCT] lista_wyrazen FROM lista_relacji [WHERE warunki] [GROUP BY kryteria [HAVING warunki]] [ORDER BY kryteria [DESC]]; klauzule SELECT oraz FROM są obowiązkowe kolejność poszczególnych klauzul nie może być zmieniona 25/51

26/51 Klauzula SELECT do SQL klauzula SELECT określa jakie kolumny znajdą się w relacji wynikowej (określa atrybuty rzutu); słowo kluczowe DISTINCT usuwa z wyniku powtórzenia; operator * oznacza wszystkie atrybuty relacji wejściowych. Istnieje możliwość stosowania aliasów (przezwisk) dla wyrażeń: SELECT imiona ' ' nazwisko SELECT imiona ' ' nazwisko FROM studenci; SELECT imiona ' ' nazwisko FROM studenci; Dane FROM studenci; AS Dane AS "Dane osobowe"

Klauzula FROM i WHERE do SQL klauzula FROM określa relacje wejściowe, z których będą pobierane dane; nazwom tabel można nadać aliasy. klauzula WHERE określa warunki jakie muszą być spełnione przez wiersze relacji wynikowej (realizacja restrykcji). SELECT imiona, nazwisko FROM studenci WHERE rok = 2 AND (gr_dziekan = 1 OR gr_dziekan = 2); 27/51

Klauzula GROUP BY do SQL 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; SELECT rok,gr_dziekan, Count(nazwisko) FROM studenci GROUP BY rok, gr_dziekan; 28/51

Klauzula HAVING do SQL 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; 29/51

Klauzula ORDER BY do SQL 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; 30/51

Operatory zbiorowe do SQL 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; 31/51

Złączenia I do SQL 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 32/51

Iloczyn kartezjański do SQL Iloczyn kartezjański daje w wyniku relację składajacą się ze wszystkich możliwych kombinacji krotek obu łączonych relacji. SELECT * FROM pracownicy CROSS JOIN dzialy; 33/51

Złączenie naturalne do SQL 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; 34/51

Złączenie warunkowe θ-złączenie daje w wyniku iloczyn kartezjański łączonych relacji ograniczony do tych krotek, dla których został spełniony warunek θ. do SQL 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); 35/51

Złączenie zewnętrzne do SQL 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); 36/51

Samozłączenie do SQL Samozłączenie złączenie tabeli samej ze sobą. SELECT p.nazwisko, s.nazwisko FROM pracownicy p JOIN pracownicy s ON (p.kierownik = s.nr_akt); 37/51

Pod I do SQL Podzapytanie to zapytanie zagnieżdżone w innym zapytaniu, może być zagnieżdżone w klauzulach: SELECT, FROM, WHERE oraz HAVING. Pod 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 zewnętrznego. SELECT nazwisko FROM pracownicy WHERE placa = (SELECT Min(placa) FROM pracownicy); 38/51

Pod II do SQL podzapytanie skorelowane - wykonywane dla każdego wiersza z zewnętrznego. SELECT nazwisko, rok FROM studenci s WHERE data_urodzenia = (SELECT Max(data_urodzenia) FROM studenci WHERE rok = s.rok); 39/51

Transakcja do SQL 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 połączone z akceptacją (zatwierdzeniem) lub wycofaniem transakcji. 40/51

Przykład do SQL BEGIN TRANSACTION; 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; 41/51

Własności ACID I do SQL 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. 42/51

Własności ACID II do SQL 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. 43/51

Rozpoczęcie transakcji do SQL Niejawnie: Jawnie: pierwszej poprawnej instrukcji w sesji użytkownika. Zakończenie poprzedniej transakcji. w niektórych systemach bazodanowych wydanie polecenia START TRANSACTION 44/51

Zakończenie transakcji do SQL Jawnie: wydanie polecenia COMMIT - zatwierdzenie zmian, wydanie polecenia ROLLBACK - wycofanie zmian. Niejawnie: wylogowanie - zatwierdzenie zmian, wydanie polecenia DDL lub - zatwierdzenie zmian, awaria systemu - wycofanie zmian. 45/51

Zatwierdzenie transakcji do SQL Skutki zatwierdzenia transakcji: zwolnienie blokad, usunięcie punktów, sprawdzenie odroczonych ograniczeń integralnościowych, trwały zapis zmian, widoczność zmian dla innych transakcji. 46/51

Wycofanie transakcji do SQL Skutki wycofania transakcji: zwolnienie blokad, anulowanie zmian - stan bazy sprzed transakcji. 47/51

do SQL Tworzenie punktu : SAVEPOINT nazwa_punktu; Usuwanie punktu : RELEASE SAVEPOINT nazwa_punktu; Wycofanie do punktu : ROLLBACK TO SAVEPOINT nazwa_punktu; 48/51

- przykład do SQL UPDATE pracownicy SET placa = placa + 500 WHERE nr_akt = 8901; SAVEPOINT s1; UPDATE pracownicy SET dod_funkcyjny = 1.1*dod_funkcyjny WHERE nr_akt = 8902; SAVEPOINT s2; DELETE FROM pracownicy WHERE nr_akt = 9120; ROLLBACK TO SAVEPOINT s1; ROLLBACK; 49/51

- przykład do SQL DELETE FROM pracownicy WHERE nr_akt = 9120; SAVEPOINT s1; ALTER TABLE pracownicy RENAME COLUMN dod_funkcyjny TO placa_dod; 50/51

do SQL 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/ 51/51