wyklad07, Studia, I stopnia inżynierskie Elektrotechnika, Dodatkowe materiały, Złota płytka, studia, ...

[ Pobierz całość w formacie PDF ]
WSTĘP
Język SQL nie jest wierną implementacją modelu relacyjnego, mimo to
stanowi
standardowy język relacyjny.
SQL (
Structured Query Language – strukturalny język zapytań
) został opracowany przez firmę IBM w latach
siedemdziesiątych. SQL jest zawarty w niemal każdym produkcie dostępnym dziś na rynku – jest standardem w
systemach zarządzania bazami danych takich jak: Oracle, INGRES, Informix, Sybase, SQLbase, Microsoft SQL
server, Paradox, Access, DB2, SQL/DS. i innych.
Od 1986 roku SQL jest oficjalnym standardem zatwierdzonym przez Międzynarodowe Stowarzyszenie
Normalizacyjne ISA i jego amerykański odpowiednik Amerykański Narodowy Instytut Normalizacji ANSI.
Uwaga: Treść wykładu odnosi się do standardu języka, nieformalnie nazywanego SQL/92 bądź SQL-92 lub po
prostu SQL2, którego oficjalna nazwa brzmi
Międzynarodowy Standardowy Język Baz Danych SQL
(1992).
Chociaż rozważania odnoszą się do języka SQL/92, należywyraźnie podkreślić, że nie ma w zasadzie w
sprzedaży żadnego oprogramowania, które w pełni oferowałoby wszystkie możliwości, jakie daje ten standard.
Produkty dostępne na rynku przeważnie proponują coś, co można by określić jako „nadzbiór podzbioru” języka
SQL/92. Innymi słowy, dany program, chociaż nie pozwala na korzystanie z pewnych cech standardu, pod
innymi względami go przewyższa. Na przykład system DB2 stworzony przez IBM z pewnością nie realizuje
wszystkich cech integralności SQL/92, jednak wykracza poza standard, jeśli chodzi o reguły aktualizacji
perspektyw.
Uwaga: W języku SQL stosuje się terminy
tabela, wiersz
i
kolumna,
zamiast relacyjnych określeń
relacja,
krotka
i
atrybut.
Krzysztof Woźniak, Poznań 2001
BAZY DANYCH: Język SQL...1
DEFINIOWANIE DANYCH: DZIEDZINY
Dziedziny występujące w SQL są mocno odmienne od prawdziwych dziedzin relacyjnych zgodnych z teorią
relacyjną. Dziedziny w SQL mają jedynie umożliwiać proste określanie typu danych, które robi się raz, po
czym typ ten stosuje się w wielu kolumnach w różnych tabelach bazowych.
Lista niektórych głównych różnic między prawdziwymi dziedzinami a stosowanymi w SQL:
Dziedziny w języku SQL są, w istocie jedynie skrótem składniowym, nie są to prawdziwe, zdefiniowane
przez użytkownika typy danych.
Nie ma konieczności stosowania dziedzin języka SQL — kolumny w tabelach bazowych można
definiować bezpośrednio za pomocą wbudowanych typów danych, takich jak FLOAT czy INTEGER.
W SQL nie ma możliwości używania „dziedzin na dziedzinach”, dziedzina w SQL musi być zdefiniowana
za pomocą jednego z wbudowanych, określonych przez system typu danych, a nie za pomocą innej,
zdefiniowanej przez użytkownika dziedziny.
SQL nie ma niczego podobnego do silnej typizacji (wymuszania zgodności typów). Nie ma prawdziwej
kontroli typów. W szczególności dziedziny nie narzucają warunków porównywania. Jedynym
wymaganiem. Jakie musi spełniać porównanie, jest to, aby porównywane wielkości miały ten sam typ
podstawowy
np. obie muszą być ciągami liczb lub ciągami znaków, bitów itd. W każdym przypadku
dziedziny są nieistotne.
SQL nie daje użytkownikowi żadnej możliwości definiowania operacji odnoszących się do określonej
dziedziny.
SQL nie rozróżnia wyraźnie między dziedziną jako taką (tj. zdefiniowanym przez użytkownika typem
danych) a
reprezentacją
tej dziedziny za pomocą jednego z określonych przez system typów danych.
W SQL nie ma żadnych pojęć podtypów, nadtypów ani dziedziczenia.
SQL nie wspiera chyba najbardziej podstawowej dziedziny ze wszystkich, tj. dziedziny wartości
logicznych.
Krzysztof Woźniak, Poznań 2001
BAZY DANYCH: Język SQL...2
DEFINIOWANIE DANYCH: DZIEDZINY
CREATE DOMAIN nazwa-dziedziny typ-danych
[ definicja-warto
ś
ci-domy
ś
lnej ]
[ lista-definicji-wi
ę
zów-dziedzin ] ;
1. Język SQL dopuszcza następujące
skalarne typy danych
:
CHARACTER [ VARYING ] (n)
INTEGER
DATE
BIT [ VARYING ] (n)
SMALLINT
TIME
NUMERIC (p, g)
FLOAT (p)
TIMESTAMP
DECIMAL (p, g)
INTERVAL
(Dopuszczalne są też w wielu przypadkach wartości domyślne, skróty i inny zapis — np. zamiast
CHARACTER
można napisać
CHAR
).
2. Opcjonalna
definicja wartości domyślnej
określa wartość domyślną
(default value)
odnoszącą się do każdej
kolumny zdefiniowanej na tej dziedzinie i nie posiadającej własnej, jawnie podanej wartości domyślnej. Ma ona
postać
DEFAULT
warto
ść
-domy
ś
lna
gdzie z kolei
wartość-domyślna
jest literałem, wywołaniem wbudowanej funkcji bezargumentowej (np.
CURRENT DATE
), lub wartością pustą
NULL
.
3. Opcjonalna lista
definicji więzów dziedzin
określa zbiór więzów
(constraints)
integralności stosujących się do
każdej kolumny zdefiniowanej na tej dziedzinie. Więzy integralności są — a raczej powinny być - niczym
innym jak wyliczeniem wartości składających się na tę dziedzinę. SQL dopuszcza jednak, by więzy dziedziny
stanowiło
dowolnie złożone
wyrażenie logiczne.
Krzysztof Woźniak, Poznań 2001
BAZY DANYCH: Język SQL...3
DEFINIOWANIE DANYCH: DZIEDZINY
CREATE DOMAIN
Kolory
CHAR(9) DEFAULT ‘???’
CONSTRAINT
Dopuszczalne_kolory
CHECK ( VALUE IN
( ‘czerwony', ‘
ż
ółty, ‘niebieski', ‘zielony’, ‘???’));
Polecenie
CREATE TABLE
dla tabeli podstawowej
CZĘŚCI
, może mieć w SQL postać:
CREATE TABLE
CZ
ĘŚ
CI
( ..., kolor
Kolory
,...);
Jeżeli użytkownik, wstawiając wiersz do tabeli
CZĘŚCI
, nie poda wartości dla kolumny
kolor
tego wiersza, to w
miejscu tym domyślnie zostanie wstawiona wartość ‘???’. Jeśli natomiast użytkownik poda wartość
kolor
, ale
będzie ona inna niż wartość dopuszczalna, operacja nie uda się i oczywiście system poda komunikat
diagnostyczny odwołujący się do warunku
Dopuszczalne_kolory
.
Dziedzinę można w każdej chwili
zmodyfikować
na wiele sposobów, korzystając z instrukcji
ALTER
DOMAIN
. Instrukcja ta umożliwia w szczególności określanie nowych wartości domyślnych dla istniejącej
dziedziny (przez zastąpienie podanych wcześniej definicji) lub usuwanie podanych wcześniej definicji wartości
domyślnych.
Istniejącą dziedzinę można
usunąć
za pomocą instrukcji
DROP DOMAIN
:
DROP DOMAIN nazwa-dziedziny
opcja ;
gdzie
opcja
oznacza RESTRICT albo CASCADE. Ogólna idea jest następująca: (a) gdy podano klauzulę
RESTRICT, instrukcja DROP nie będzie zrealizowana, jeśli gdziekolwiek występują referencje do dziedziny;
(b) gdy podana jest klauzula CASCADE, wówczas polecenie DROP zostanie wykonane i „kaskadowo” wpłynie
na wiele rzeczy
Krzysztof Woźniak, Poznań 2001
BAZY DANYCH: Język SQL...4
DEFINIOWANIE DANYCH: TABELE BAZOWE
Tabele w SQL, w odróżnieniu od prawdziwych relacji,
mogą zawierać podwójne wiersze.
Wynika stąd, że nie
muszą mieć klucza kandydującego. Po drugie, inaczej niż w prawdziwych relacjach, tabele SQL mają
kolumny
uporządkowane z lewa na prawo.
Tabele bazowe definiuje się za pomocą polecenia
CREATE TABLE
. Składnia jest następująca:
CREATE TABLE
nazwa-tabeli-bazowej
(
lista-elementów-tabeli-bazowej
);
gdzie każdy
element-tabeli-bazowej
jest albo
definicją-kolumny
albo
definicją-więzów-tabeli-bazowej.
Definicja
kolumny (musi wystąpić przynajmniej jedna) wygląda następująco:
nazwa-kolumny reprezentacja
[
definicja-warto
ś
ci-domy
ś
lnej
]
Słowo
reprezentacja
specyfikuje tutaj odpowiedni typ danych bądź dziedzinę, a opcjonalna
definicja-wartości-
domyślnej
określa wartość domyślną dla tej kolumny, zmieniając wartość domyślną podaną na poziomie
dziedziny, o ile to występowało. Jeżeli dana kolumna nie ma swej własnej, jawnie podanej wartości domyślnej,
ani nie dziedziczy jej z wyjściowej dziedziny, to zakłada się, że ma wartość domyślną NULL.
Każda
definicja-więzów-tabeli-bazowej
jest jedną z trzech definicji:
• definicji klucza kandydującego
• definicji klucza obcego
• definicji „warunku do sprawdzania”
Uwaga: Każda z tych definicji mogłaby opcjonalnie być poprzedzona wyrażeniem „CONSTRAINT nazwa-
warunku”, nadającym nazwę nowemu warunkowi (to samo dotyczy więzów dziedzin, co już widzieliśmy w
przykładzie Dopuszczalne_kolory).
Krzysztof Woźniak, Poznań 2001
BAZY DANYCH: Język SQL...5
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • telefongry.keep.pl






  • Formularz

    POst

    Post*

    **Add some explanations if needed