POCZĄTKI JĘZYKA SQL 3
SQL3 powstał w konsekwencji przenikania się koncepcji obiektowych do systemów relacyjnych. Głównym zamierzeniem było również podjęcie działań w celu ulepszenia poprzednich wersji SQL.
Założeniami nowego standardu jest poprawa istniejących, sprawdzonych cech relacyjnej technologii bez wprowadzania zbyt rewolucyjnych zmian.
Adresatem SQL3 są systemy określane jako “obiektowo-relacyjne”. Mamy tu na myśli systemy powstające w wyniku ostrożnej ewolucji systemów relacyjnych w kierunku obiektowości, opierające się na pozycji systemów relacyjnych na rynku i odwołują się do ich wiernej klienteli.
Przykładami takich systemów są:
Informix Universal Server (połączenie systemu Illustra i Informix OnLine),
DB2 Universal Database (firmy IBM, połączenie Starburst i DB2),
Oracle8 (firmy ORACLE),
OSMOS (firmy Unisys),
OpenIngres (firmy Computer Associates),
Sybase Adaptive Server (firmy SYBASE)
STATUS STANDARYZACJI SQL 3
SQL3 jest kontynuacją linii SQL-92, rozwijaną przez
ANSI (American National Standard Institute), komitet X3H2,
oraz ISO (International Standard Organization) .
Deklarowana jest zgodność ‘w dół” ze standardem SQL-92
Język SQL3 rozszerza poprzedni standard SQL-92 w następujących aspektach:
Obiektowość: SQL3 reprezentuje podejście “hybrydowe”, dodajac niektóre cechy obiektowości (takie jak ADT-asbstract data type) do tablic znanych z systemów relacyjnych.
Rozszerzalność: umożliwienie użytkownikom deklarowania własnych typów.
Niekonwencjonalne typy danych: multimedialne, przestrzenne, temporalne.
Pełne możliwości uniwersalnego języka programowania dla definiowania i zarządzania trwałymi, złożonymi obiektami.
Rozszerzenia w zakresie aktywnych reguł, interfejsów do innych języków programowania, autoryzacji, procedur bazy danych, ewolucji schematu, i inne.
KLUCZOWE FAKTY NA TEMAT JĘZYKA SQL3
Wg planów, prace nad standardem miały być zakończone w IV kwart. 1998.
W rzeczywistości wystąpiły opóźnienia i prezentacja SQL3 ( zwanego też SQL:99) miała miejsce na początku 1999 roku.
Głównym powodem jest fakt, że standard jest ogromny, według różnych szacunków 1200 - 1600 stron, zaś jego poszczególne części są niezbyt spójne.
W 2003 przedstawiono SQL:2003 – nowy standard języka SQL. Jest to w zasadzie poprawione SQL:1999 z wyjątkiem części SQL/XML oraz kilku dodatkowych właściwości.
że standard jest zbyt eklektyczny, łączy w sobie wiele koncepcji i pojęć, często redundantnych i niespójnych. Obciążeniem standardu jest deklarowana zgodność z SQL-92 (czyli konieczność pogodzenia się z niektórymi wadami SQL-92).
HIERARCHIA PRIORYTETÓW
Jeśli chodzi o hierarchię operatorów w przypadku działań obliczeniowych to opiera się ona na podstawowych działaniach matematyki. Najprościej ujmując temat: na początku mnożenie i dzielenie, kolejno dodawanie i odejmowanie.
3 + 5 * 5 = 28
Podobnie jak w matematyce chcąc zmienić hierarchię obliczeń należy wprowadzić nawiasy. W składni SQL 3 obliczenia ujęte w nawiasy kwadratowe obliczane są najpierw.
[3 + 5] * 5 = 40
W pozostałych wyrażeniach operacje są wykonywane zgodnie z priorytetem operatorów, począwszy od operatorów o najwyższym priorytecie.
Jeśli operatory o jednakowym priorytecie występują jeden obok drugiego, obowiązuje kolejność od lewej do prawej.
Wszystkie operatory porównywania i operatory SQL mają jednakowy, najwyższy priorytet:
= , !=, <, >, <=, >=, BETWEEN … AND …, IN, LIKE, IS NULL.
NOT - odwrócenie wyniku porównania, np.
WHERE NOT ZAROBKI>2 000
AND, przedostatni operator w hierarchii.
OR, operator o najniższym priorytecie.
W przypadku programowania w SQL3 bezpieczną formą jest stosowanie nawiasów we wszystkich przypadkach, gdzie kolejność wykonywania przez program skomplikowanych złożeń operatorów nie jest łatwa do przewidzenia.
Przykładem działania hierarchii operatów może być komenda wybrania wszystkich pracowników na stanowisku MANAGER ze wszystkich departamentów wraz ze wszystkimi pracownikami zatrudnionymi na stanowisku SPRZEDAWCA w departamencie 10, napiszemy dla pewności:
Przykład z Strona 3/50 Wykład_SQL3_3.pdf
W tym przypadku nawiasy są niepotrzebne, ponieważ operator AND jest silniejszy od operatora OR, są one wpisane jedynie dla większej czytelności.
WARUNKI ZŁOŻONE
Strona 4/50 Wykład_SQL3_3.pdf
TYPY ZAPYTAŃ DO BAZY DANYCH JĘZYKA SQL3
Strona 5/50 Wykład_SQL3_3.pdf
ZAPYTANIA Z LISTĄ TABEL W KLAUZULI FROM
Strona 6,7/50 Wykład_SQL3_3.pdf
ILOCZYN KARTEZJAŃSKI
Strona 8,9,10,11/50 Wykład_SQL3_3.pdf
FUNKCJE AGREGUJĄCE
Funkcje agregujące mogą być wykorzystywane do obliczania wartości kolumn i do umieszczania tych wartości w zestawie wyników.
Najczęściej stosowane funkcje agregujące to:
Strona 13/50 Wykład_SQL3_3.pdf
Pozostałe z funkcji agregujących:
COUNT(*) - Liczba zaznaczonych wierszy
STDEV - Odchylenie statystyczne dla wszystkich wartości
STDEVP - Odchylenie statystyczne dla populacji
VAR - Wariancja statyczna dla wszystkich wartości
VARP - Wariacja statyczna dla wszystkich wartości w populacji
Przykład 1
Obliczana jest średnia cena jednostkowa dla wszystkich produktów z tabeli products
USE Northwind SELECT AVG (unitprice) FROM products
Przykład 2
Dodawane są wszystkie wiersze w kolumnie quantity w tabeli order details
USE Northwind SELECT SUM(quantity) FROM [order details]
Większość funkcji agregujących ignoruje wartość NULL. Funkcja COUNT(*) zlicza wiersze z wartościami NULL.
Przykład 3
Tworzona jest lista pracowników
USE Northwind SELECT COUNT(*) FROM employees
Przykład 4
Tworzona jest lista pracowników, dla których w kolumnie reportsto w tabeli employees wpisana jest wartość NULL.
USE Northwind SELECT COUNT(*) FROM employees WHERE reportsto IS NULL
Przykład działania funkcji agregującej:
Strona 13/50 Wykład_SQL3_3.pdf
ZASTOSOWANIE KOMENDY GROUP BY
[ GROUP BY <listakolumn> ]
GROUP BY -powoduje wiązanie wierszy wynikowych w grupy o jednakowych wartościach
we wskazanych kolumnach, a następnie redukowanie tych grup do pojedynczych wierszy.
Fraza GROUP BY - służy do otrzymywania wartości sumarycznych dla poszczególnych grup.
Po słowie kluczowym GROUP BY występuje wyrażenie grupujące - zestaw nazw kolumn, które definiują grupowanie.
Nazwy te muszą wystąpić we frazie SELECT.
Przykład użycia komendy GROUP BY do grupowania rekordów:
Strona 16/50 Wykład_SQL3_3.pdf
Funkcja agregująca GROUP BY jako warunek do zapytania:
Strona 17/50 Wykład_SQL3_3.pdf
KOMENDA HAVING
[ HAVING <warunek> ]
HAVING -określa warunki wyboru dla wierszy powstałych w wyniku działania frazy GROUP BY.
Przykład użycia komendy HAVING:
Strona 18/50 Wykład_SQL3_3.pdf
PODZAPYTANIA
Zapytania w SQL mogą operować na wynikach innych zapytań. Dokonuje się wówczas tzw. Zagnieżdżenia zapytań. W taki sposób tworzy się w języku SQL podzapytania.
Podzapytania mogą występować w klauzuli WHERE oraz HAVING, rzadziej, ale również mogą występować w klauzulach SELECT oraz FROM
Podzapytanie musi być objęte nawiasami
zapytanie nadrzędne (zewnętrzne )– zawierające podzapytanie
zapytanie podrzędne (wewnętrzne) – podzapytanie
Strona 20,21,22,23,24/50 Wykład_SQL3_3.pdf
Operatory SQL – operatory IN, NOT IN, EXISTS, NOT EXISTS
Strona 25/50 Wykład_SQL3_3.pdf
Operatory SQL- operator ANY
Strona 26/50 Wykład_SQL3_3.pdf
Operatory SQL- operator ALL
Strona 27/50 Wykład_SQL3_3.pdf
Podzapytania skorelowane
Strona 28/50 Wykład_SQL3_3.pdf
Operacja złączenia SELECT powiązana z podzapytaniami skorelowanymi
Złączenie tablicy z tąsamątablicąnazywamy samozłączeniem.Samozłączenieumożliwia wiązanie ze sobąinformacji zawartych w różnych wierszachjednej tablicy.Do dokonania samozłączeniakonieczne jest zastosowanie aliasów(nazw korelacji).
Pozapytania skorelowane przykłady
Strona 29-35/50 Wykład_SQL3_3.pdf