SQL3 implementacje

SQL3 - implementacje

SQL3, inaczej SQL99 - to aktualnie obowiązujący standard ISO/ANSI języka SQL. Zwykle standard nie jest w pełni implementowany przez producentów.

Poziomy zgodności

Mówi się o tzw. poziomach zgodności ze standardem:

1) podstawowy - minimalna liczba elementów standardu, która musi funkcjonować w implementacji, aby mówić o zgodności produktu ze standardem SQL3

2) rozszerzony - kilka (9) zestawów funkcji dodatkowych; minimalne wymagania dla rozszerzonego poziomu zgodności, to implementacja przynajmniej jednego dodatkowego zestawu funkcji (można się domyślać, że producenci poszczególnych serwerów opracowali zestawy dodatkowe - na podstawie możliwości swoich serwerów)

Pakiety rozszerzeń, to:

PKG001 - rozszerzone funkcje daty i czasu (strefy czasowe, typ danych interval, pełna obsługa datetime)

PKG002 - rozszerzone zarządzanie integralnością (asercje, referencyjne operacje usuwania, referencyjne operacje zmiany wartości, zarządzanie wiązami, podzapytania w klauzuli CHECK, wyzwalacze, wyzwalacze FOR EACH STATEMENT, referencyjna operacja RESTRICT)

PKG003 - możliwości OLAP (CUBE i ROLLUP, operator INTERSECT, konstrukcja tabel i rekordów, FULL OUTER JOIN, skalarne wyniki podzapytań)

PKG004 - trwale składowane moduły SQL (PSM - persistent stored modules) (programistyczne rozszerzenie SQL pozwalające na tworzenie funkcjonalnie kompletnych aplikacji, CASE, IF, WHILE, REPEAT, LOOP i FOR, składowane moduły, zupełność obliczeniowa, perspektywy INFORMATION_SCHEMA)

PKG005 - SQL CLI (Call Level Interface) (obsługa interfejsu CLI w SQL: API pozwalające na wykonywanie operacji SQL, podobny do standardu ODBC)

PKG006 - podstawowa obsługa obiektów (przeładowywanie wywoływanych przez SQL funkcji i procedur, pojedyncze dziedziczenie w typach definiowanych przez użytkownika, podstawowe operacje SQL na tych typach, typy referencyjne, CREATE TABLE, obsługa tablic: podstawowa, wyrażenia tablicowe, lokalizatory, obsługa w tablicach typów danych użytkownika UDT - user datatype i typów referencyjnych, operacje SQL na tablicach, referencje pól i atrybutów, operacja tworzenia i usuwania referencji)

PKG007 - rozszerzona obsługa obiektów (ALTER TABLE, ADD, rozszerzenia w typach definiowanych przez użytkownika - konstruktor, domyślne atrybuty, wielokrotne dziedziczenie, klauzule porządkujące, funkcje SQL, podtabele, ONLY w zapytaniach, predykat type, obsługa podtypów, definiowana przez użytkownika funkcja CAST, lokatory UDT, operacje SQL na typach zdefiniowanych przez użytkownika)

PKG008 - cechy aktywnych baz danych (wyzwalacze)

PKG009 - obsługa multimediów (obsługa multimedialnych danych strumieniowych oraz dużych i złożonych danych audio i wideo)

Klasyfikacja instrukcji

W SQL92 język SQL podzielono na cztery (trzy) subjęzyki: DDL,DML,DCL. Polecenie SELECT umieszczano osobno, alno w grupie poleceń DML.

W SQL3 wyróżnia się siedem kategorii zamiast wymienionych powyżej:

  1. Instrukcje obsługi połączeń SQL otwarcie i zamknięcie połączenia z klientem (CONNECT, DISCONNECT)

  2. Instrukcje kontrolne SQL Kontrolują wykonanie zbiorów instrukcji SQL (CALL,RETURN)

  3. Instrukcje obsługi danych SQL wywierają trwały efekt na dane (SELECT,INSERT,UPDATE,DELETE)

  4. Instrukcje diagnostyczne SQL dostarczają informacji diagnostycznych, zgłaszają wyjątki i błędy (GET DIAGNOSTICS)

  5. Instrukcje obsługi schematów SQL wywierają trwały efekt na schematy bazy danych i obiekty wewnątrz schematów (ALTER,CREATE,DROP)

  6. Instrukcje obsługi sesji kontrolują domyślne zachowania i inne parametry sesji (SET)

  7. Instrukcje obsługi transakcji SQL ustalają początkowy i końcowy punkt transakcji (COMMIT,ROLLBACK)

Dialekty SQL

Pomimo, że standard jest jeden, sposób realizacji poleceń przez serwery różnych producentów może być zupełnie odmienny. Wynika to głównie z faktu, że standard jest tworzony w oparciu o istniejące rozwiązania (de facto), czyli np. sposób wykonania polecenia SELECT w Oracle i DB/2 został dopracowany, zanim powstał standard. Wielu producentów wprowadziło do swoich implementacji opcje proceduralne, np.:

1) PL/SQL - Oracle; składnia nieco podobna do języka programowania ADA
2) Transact-SQL - Microsoft SQL Server, Sybase Adaptive Server; aktualnie wersje Transact-SQL dla obu producentów też się różnią
3) PL/pgSQL - Procedural Language/postgreSQL

Serwery realizują zdania SQL według jednego z trzech podstawowych styli:

1. SQL Module Language - instrukcje są przygotowywane podczas tworzenia modułów i wykonywane, gdy moduł jest wywoływany
2. Embedded SQL Syntax - instrukcja SQL przygotowywana podczas prekompilacji programu (w którym kod SQL został zanurzony) w języku podstawowym i wykonywana podczas wywołania tego programu (np. PRO*C)
3. Direct SQL Invocation - statyczna instrukcja SQL jest przygotowywana i natychmiast wykonywana
Najczęściej stosuje się ostatni z tych stylów.

Hierarchia zbiorów

klaster - unikatowo nazwany zbiór katalogów dostępny podczas sesji SQL; w przybliżeniu można porównać je do instalacji serwera bazy danych; wg ANSI klastry pozwalają zarządzać uprawnieniami dostępu do danych; w praktyce uprawnienia ustalane są na poziomie katalogów
katalog - unikatowo nazwane zbiory schematów; w Oracle tożsame z instancją
schemat - unikatowo nazwany zbiór obiektów i danych należących do konkretnego użytkownika, wraz z odpowiednimi meta danymi
obiekt - unikatowo nazwany zbiór danych lub podprogramów SQL; np. tabele, perspektywy, moduły, składowane procedury
kolumna - unikatowo nazwany zbiór wartości
dziedzina - identyfikator zbioru prawidłowych i dostępnych wartości dla kolumny
reguła i asercja - dalsze reguły definiujące prawidłowe i dostępne wartości dla danej kolumny; np. wyzwalacz

Porównanie przykładowych reprezentacji typów danych

Dla przykładu pokazano porównanie sposobu przechowywania danych w formacie daty. SQL3 - date, time, time with timezone (ze znacznikiem strefy), timestamp (wyliczany podczas działania komputera), timestamp with timezone, interval (odcinek czasu)

MS SQL Server - daty od roku 1752 do roku 9999; typy datetime oraz smalldatetime (daty od 1900 do 2079)

MySQL - daty od roku 1000 do roku 9999; typ datetime, timestamp (od 1970 do 2037), year - od (19)70 do (20)69 dla roku dwucyfrowego oraz od 1901 do 2155 dla roku czterocyfrowego

Oracle - daty od 4712 p.n.e do 9999 n.e.; date

PostgreSQL - date, datetime, time, timespan, timestamp, timetz (ze strefą czasową)

Wartości NULL

Wartość NULL to wartość nieznana lub nieokreślona. Jeśli w tablicy jest kolumna do przechowywania cen, wówczas wartość NULL dla wybranego towaru nie oznacza, że cena jest równa 0, ale że nie została jeszcze wprowadzona.

Należy pamiętać, że

  1. wartość NULL nie da się umieścić w kolumnie zdefiniowanej jako NOT NULL

  2. nie można porównywać do siebie wartości NULL; to znaczy wartości NULL nie są sobie równe: zapis a=NULL nie daje wartości TRUE, gdy a jest NULL; testowanie wartości NULL powinno się odbywać za pomocą składni: "wartość IS NULL".

  3. kolumna zawierająca wartości NULL jest ignorowana podczas obliczania wartości funkcji agregujących, takich jak AVG, SUM, MAX

  4. jeśli kolumna zawierająca wartości NULL zostanie umieszczona w klauzuli GROUP BY, to wynik zapytania będzie zawierać rekordy z tymi wartościami

  5. złączenia pomiędzy tabelami, z których jedna z warunku złączenia ma zwykłe wartości, a druga wartości NULL, są traktowane jako złączenia zewnętrzne

Przykłady implementacji poleceń SQL


Wyszukiwarka

Podobne podstrony:
elektryczna implementacja systemu binarnego
Implementacja i badania algorytmów sterowania robotem dwukołowym
Draft Import implementing rules 22072008
Modele implementacji usług w architekturze IMS
PROJEKT I IMPLEMENTACJA
Cwiczenie 09 Implementacja infrastruktury klucza publicznego
Implementacja, Integracja europejska
9 2 1 5 Packet Tracer ?signing and Implementing a VLSM?dressing Scheme Instruct
Wymagania dotyczące implementacji technicznej
Zmiany w Ustawie prawo budowlane implementujące do polskiego prawodawstwa zapisy z Dyrektywy EPBDx
bd raport implementacja 2012
9 2 1 3 Lab ?signing and Implementing a Subnetted IPv4?dressing Scheme
Planowanie i Implementacja Strategii Marketingowej 17-18, Zarządzanie marketingiem, Zarządzanie mark
2 3 2 5 Packet Tracer Implementing?sic Connectivity Instructions
9 2 1 4 Lab ?signing and Implementing a VLSM?dressing Scheme
Zagadnienie 9 Państwo prawa Istota, implementacje

więcej podobnych podstron