LITERATURA
Systemy baz danych. Pełny wykład H. Garcia Molina, Jeffrey D. Ullman,
Jennifer Widom;WNT Warszawa 2006
Wprowadzenie do systemów baz danych Ramez Elmasri, Shamkant B.Navathe
Helion 2005
SQL ALMANACH opis poleceń języka Kewin Kline, Daniel Kline; Helion 2002
Oracle 9i Kompletny podręcznik użytkownika Michał Lentner;
Wydawnictwo PJWSTK Warszawa 2003
SQL leksykon kieszonkowy Jonathan Gennick; Helion 2004
(
Kilka różnych sposobów traktowania baz danych
)
Baza danych
to
zestaw danych
model fragmentu świata rzeczywistego
element składowy systemu informatycznego lub jego zasób
algebra BD = < D , O >
gdzie struktury danych plus operacje na danych decydują o modelu danych
dane i oprogramowanie
umożliwiające dostęp do danych oraz ich zarządzanie
1
w rozumieniu informatycznym:
Baza danych – zbiór danych zapisanych zgodnie z określonymi regułami. W węższym znaczeniu obejmuje
cyfrowe
gromadzone zgodnie z zasadami przyjętymi dla danego
specjalizowanego do gromadzenia i
przetwarzania tych danych. Program taki (często pakiet programów) nazywany jest „
systemem zarządzania bazą danych
database management system, DBMS).
Źródło http://pl.wikipedia.org/wiki/Baza_danych
definicja prawna:
Baza danych oznacza zbiór danych lub jakichkolwiek innych materiałów i elementów zgromadzonych według określonej
systematyki lub metody, indywidualnie dostępnych w jakikolwiek sposób, w tym środkami elektronicznymi, wymagający
istotnego, co do jakości lub ilości, nakładu inwestycyjnego w celu sporządzenia, weryfikacji lub prezentacji jego zawarto-
ści.
Źródło: USTAWA z dnia 27 lipca 2001 r. o ochronie baz danych // Dz.U. z 2001 r. Nr 128, poz. 1402. –
Model danych
( pojęcie niezbyt jednoznaczne, którego znaczenie jest wypadkową takich cech )
Kazimierz Subieta- Słownik terminów
z zakresu obiektowości
•
metajęzyk (pojęcia, terminologia ) do mówienia o danych, systemach baz danych i przetwarzaniu
•
sposób rozumienia organizacji danych
•
języki opisu i przetwarzania danych, diagramy struktur danych, języki zapytań
•
ogólne założenia dotyczące architektury systemu bazy danych
•
ograniczenia, ideologie lub teorie matematyczne dotyczące struktur danych i dostępu do danych
2
Model danych
jako architektura systemów baz danych; obejmuje
•
język definicji danych
•
język operowania danymi
•
więzy spójności i integralności danych
•
jest odwzorowaniem istniejącej lub projektowanej struktury zbiorów informacji dla konkretnego systemu informatycznego
•
zastosowany model danych w istotny sposób wpływa na przebieg projektu informatycznego oraz jego efekt końcowy –
system informatyczny oparty na bazie danych
Modele baz danych
•
prosty ( system plików )
•
relacyjny ( obecnie najczęściej spotykany )
struktury danych są relacjami w sensie matematycznym ( reprezentacja tabel )
przetwarzanie danych odbywa się w języku wysokiego poziomu ( deklaratywny język SQL )
•
relacyjno – obiektowy
•
obiektowy
•
semistrukturalny
Baza danych
•
spójny zestaw danych i metadanych zbudowany w oparciu o model danych, na którym można wykonywać
określone operacje ( aspekt składniowy i operacyjny )
•
reprezentuje pewien fragment świata rzeczywistego ( aspekt semantyczny )
•
jest projektowana, tworzona i utrzymywana z punktu widzenia przydatności dla określonych zastosowań i
grupy użytkowników ( aspekt pragmatyczny )
3
Wymagania stawiane bazą danych
•
abstrakcja danych
•
integralność danych
•
współdzielenie danych
•
bezpieczeństwo danych
•
niezależność danych
•
trwałość danych
System Zarządzania Bazą Danych
( Database Management System DBMS )
Zestaw oprogramowania obejmujący :
jądro systemu
•
gromadzenie, utrzymywanie i administrowanie masowymi zbiorami danych
•
sprawny dostęp do danych ( optymalizacja pamięci i czasu dostępu do danych )
•
zarządzanie współbieżnością i spójnością ( jednoczesny dostęp do danych przez wielu użytkowników )
•
bezpieczeństwo danych ( autoryzacja )
interfejsy
•
linia poleceń
•
graficzny interfejs użytkownika
dodatkowo
•
środki programistyczne - API dla popularnych języków programowania
•
narzędzia dla środowisk rozproszonych
Uwagi:
System Zarządzania Bazą Danych współpracuje z systemem operacyjnym; wspiera określony model danych
4
Użytkownicy baz danych
•
administratorzy
•
analitycy
•
projektanci i programiści
•
użytkownicy końcowi
Interakcja z bazą danych
•
interfejsy użytkownika
o prosty w trybie tekstowym ( linia poleceń; interpreter języka obsługi baz danych )
o graficzny interfejs ( typu BUILDER )
•
aplikacje typu FORMULARZ, RAPORT i inne
Architektury komunikacyjne z systemem baz danych
•
klient - serwer,
•
3 – warstwowa
Podział systemów baz danych
kryteria podziału:
wykorzystywany model danych
liczba węzłów / baz danych
o bazy scentralizowane
o bazy rozproszone
cel stosowania :
o przetwarzanie transakcyjne ( On – Line Transaction Processing – OLTP )
o przetwarzanie analityczne ( On – Line Analytical Processing – OLAP )
o wspomaganie projektowania ( Computer Aide Design – CAD )
o systemy informacji geograficznej ( Geographical Information Systems – GIS )
o wytwarzanie oprogramowania ( Computer Aide Software Engineering – CASE )
5
SQL ( Structured Query Language )
język do obsługi baz danych
deklaratywny
ustandaryzowany
optymalizowany
obejmuje
•
zapytania ( wyszukiwanie danych)
•
tworzenie struktur danych i ich modyfikacje – DDL
•
aktualizację danych – DML
•
kontrolę danych - DCL
SELECT [ DISTINCT ] co ? FROM skąd ( źródło danych )
[ WHERE warunek logiczny dla wierszy ]
[ GROUP BY kryterium grupowania
[ HAVING warunek logiczny dla grup ] ]
[ ORDER BY kryterium porządkowania ] ;
INSERT INTO Nazwa_tabeli
VALUES ( lista wartości dla wszystkich kolumn tabeli ) ;
INSERT INTO Nazwa_tabeli ( Nazwa_kol1 , Nazwa_kol2 , Nazwa_kol3 )
VALUES ( wartość_dla_kol1 , wartość_dla_kol2 ,
wartość_dla_kol3 ) ;
INSERT INTO Nazwa_tabeli [(Nazwa_kol1 , Nazwa_kol2 , ..) ]
SELECT . . . ;
UPDATE Nazwa_tabeli SET Nazwa_kol1 [ , Nazwa_kol2 ] ={ wyrażenie | podzapytanie }
[ WHERE warunek logiczny dla wierszy ] ;
6
DELETE FROM Nazwa_tabeli [ WHERE warunek logiczny dla wierszy ] ;
CREATE TABLE
Nazwa_tabeli
( Nazwa_kol1 typ_danych [ ( rozmiar ) ] [ więzy spójności kolumny1 ]
[ , Nazwa_kol2 typ_danych [ (rozmiar) ] ... ] [ więzy spójności tabeli ] ) ;
CREATE TABLE Nazwa_tabeli [ ( Nazwa_kol1 , Nazwa_kol2 ... ) ]
AS
SELECT ... ;
ALTER TABLE Nazwa_tabeli { ADD Nazwa_kol . . . | ADD CONSTRAINT . . . |
DROP COLUMN . . . | DROP CONSTRAINT . . .|
MODIFY Nazwa_kol . . . };
DROP TABLE Nazwa_tabeli ;
CREATE [ OR REPLACE ] VIEW Nazwa_perspektywy [ Nazwa_kol1 , Nazwa_kol2 … ]
AS SELECT . . .
[ WITH CHECK OPTION | WITH READ ONLY ] ;
COMMIT ;
ROLLBACK;
Cechy języka SQL
•
interpretowany
•
optymalizowany
Braki
•
obsługi zdarzeń i sytuacji wyjątkowych
•
funkcji i procedur użytkownika
•
definiowania złożonych ograniczeń integralnościowych
7
Proceduralny SQL
Transact- SQL używany przez Microsoft SQL Server
PL/pgSQL- zaimplementowany przez PostgreSQL
PL/SQL – (ang. Procedural Language/Structured Query Language)
Proceduralne rozszerzenie języka SQL do pisania aplikacji w Oracle
•
język proceduralny; kompilowany
•
wykorzystuje typowe konstrukcje programistyczne; pętle, decyzje
•
ma strukturę blokową
•
każda instrukcja bloku PL/SQL jest zakończona średnikiem
•
operator przypisania to :=
•
bloki mogą być zagnieżdżone
•
jedynymi poleceniami języka SQL, które mogą pojawić się w bloku PL/SQL są:
INSERT, UPDATE, DELETE , SELECT ( zmiany w składni) oraz obsługi transakcji
•
obsługuje wszystkie typy SQL , oraz swoje dodatkowe typy np. BOOLEAN, RECORD, TABLE
Blok anonimowy
[ DECLARE
deklaracje obiektów; zmienne, stałe, wyjątki,…]
BEGIN
ciąg instrukcji do wykonania ;
[ EXCEPTION
obsługa wyjątków
]
END ;
Przykłady deklaracji
Znak CHAR(1);
Wynagrodzenie NUMBER( 7,2 );
Pi CONSTANT NUMBER(7,5) := 3.14159 ;
Nazwa VARCHAR2( 10 ) := ‘DRUKARKA’ ;
Termin DATE := Sysdate ;
Stan_cywilny BOOLEAN := FALSE ;
Brak_danych EXCEPTION ;
8
Nazwisko_osoby podatnicy.nazwisko%TYPE ;
Osoba_rekord podatnicy%ROWTYPE ;
Instrukcje sterujące
IF warunek_logiczny THEN
blok instrukcji ;
END IF ;
IF warunek_logiczny THEN
blok_1 instrukcji ;
ELSE blok_2 instrukcji END IF ;
IF warunek_logiczny_1 THEN
blok_1 instrukcji ;
ELSIF warunek_logiczny_2 THEN
blok_2 instrukcji ;
END IF ;
CASE
WHEN warunek_logiczny_1 THEN blok_1 instrukcji ;
WHEN warunek_logiczny_2 THEN blok_2 instrukcji ;
. . .
[ ELSE blok_n instrukcji ] ;
END CASE ;
LOOP
blok instrukcji ;
( w tym EXIT lub EXIT WHEN warunek logiczny)
END LOOP ;
FOR
zmienna IN
wartość_1
..
wartosc_2
LOOP
blok instrukcji ;
END LOOP
;
9
WHILE warunek logiczny
LOOP
blok instrukcji ;
END LOOP ;
Wyjątek
•
zdarzenie (błąd lub ostrzeżenie), które może wystąpić w czasie wykonywania bloku PL/SQL.
•
kiedy wyjątek jest podnoszony, następuje przerwanie normalnego toku działania programu i
przeniesienie do sekcji EXCEPTION, w celu wykonania instrukcji przewidzianych do
obsługi danej sytuacji.
•
istnieje grupa wyjątków predefiniowanych np. NO_DATA_FOUND, TOO_MANY_ROWS . . .
przykład
SET SERVEROUTPUT ON
BEGIN
LOOP
EXIT WHEN
(
to_char
(
sysdate,
'ss'
)
=
'25'
)
;
END LOOP ;
DBMS_OUT.put_line
(
'Nadeszla 25 sekunda'
)
;
END ;
przykład
CREATE TABLE Tymczasem
(Kol VARCHAR2(12));
DECLARE
v_day VARCHAR2(15);
BEGIN
FOR i IN 2013..2020 LOOP
FOR j IN 01..12 LOOP
v_day := TO_CHAR(TO_DATE('13-' || j || '-' || i, 'DD-MM-YYYY'), 'DAY');
IF (v_day LIKE 'PIĄTEK%') THEN
INSERT INTO Tymczasem VALUES ('13-' || j || '-' || i);
10
END IF;
END LOOP;
END LOOP;
DBMS_OUTPUT.put_line('KONIEC');
END;
11