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