1
Identyfikatory SQL
●
Identyfikatory SQL to nazwy służące do oznaczania
obiektów baz danych
●
Tabele, perspektywy, kolumny
●
Dozwolone znaki
●
Duże litery A, ..., Z
●
Małe litery a, ..., z
●
Cyfry 0, ..., 9
●
Podkreślenie _
●
Długość identyfikatora nie więcej niż 128 znaków
●
Musi rozpoczynać się od litery
●
Nie może zawierać spacji
2
Dane znakowe
●
CHARACTER [VARYING] [
długośc
]
●
CHARACTER lub CHAR
●
CHARACTER VARYING lub VARCHAR
●
Pole
długość
określa maksymalną liczbę znaków, jaką
może mieć wartość w tej kolumnie
●
Domyślna wartość wynosi 1
●
Łańcuchy znaków
●
Stała długość
●
Zmienna długość
3
Definiowanie danych znakowych
●
biuroNr
CHAR(4)
●
Definicja pola
biuroNr
typu znakowego o stałej
długości – cztery znaki
●
Jeżeli przechowywany ciąg będzie krótszy niż
cztery znaki pozostałe miejsca zostaną uzupełnione
spacjami
●
adres
VARCHAR(30)
●
Definicja pola adres typu tekstowego o zmiennej
długości
●
Maksymalna liczba znaków wynosi 30
4
Dane logiczne
●
Pola typu logicznego służą do przechowywania
wartości
●
TRUE (prawda), FALSE (fałsz)
●
UNKNOWN (nieznana)
●
Typ logiczny jest typem wyliczeniowym
●
TRUE jest większa niż FALSE
●
Wynikiem dowolnego porównania, w którym występuje
wartość pusta lub wartość logiczna UNKNOWN jest
UNKNOWN
●
plec
BOOLEAN
●
plec
BOOL
5
Dane bitowe
●
Bitowy typ danych wykorzystywany jest do
definiowania łańcuchów bitów
●
Dopuszczalne wartości znaków to „1” oraz „0”
●
Typy bitowe
●
Stała długość
–
lancuchBitow BIT(4)
–
Ustalona długość czterech bitów
●
Zmienna długość
–
lancuchBitow BIT VARYING(5)
–
Maksymalna długość pięć znaków
6
Dokładne typy liczbowe
●
Dokładny typ liczbowy stosujemy przy definiowaniu
liczb, które mają dokładną reprezentację maszynową
●
Liczba składa się z
cyfr
,
kropki dziesiętnej
(opcjonalnie) oraz
znaku
(opcjonalnie)
●
Rozmiar
●
Całkowita liczba cyfr, łącznie z cyframi po kropce
●
Rozmiar określa jedynie liczbę cyfr, całkowita ilość
znaków może być większa o 2
–
Kropka oraz znak liczby
●
Dokładność
●
Liczba cyfr dziesiętnych (po przecinku)
7
Definiowanie danych liczbowych
●
Dane w zapisie dziesiętnym
●
Domyślna dokładność 0, natomiast rozmiar zależy od
SZBD
●
NUMERIC [ rozmiar [,dokładnośc] ]
●
DECIMAL [rozmiar [,dokładność] ] ( lub DEC)
–
pensja DECIMAL(7,2)
●
Liczby całkowite (dodatnie i ujemne)
●
INTEGER ( lub INT )
●
SMALLIN
8
Przybliżone typy liczbowe
●
Definiowanie liczb, które nie mają dokładnej reprezentacji
maszynowej
●
Liczby rzeczywiste
●
Typ zmiennoprzecinkowy
●
Mantysa, cecha
●
1.3456*10
4
●
FLOAT [
dokładność
]
●
REAL
●
DOUBLE PRECISION
●
Dokładność określa rozmiar mantysy
●
Maksymalny zakres liczb zmiennoprzecinkowych zależy od
implementacji
9
Dane czasu i daty
●
Zapisywanie daty i czasu z określoną dokładnością
●
Elementy typów daty i czasu
●
YEAR(rok), MONTH(miesiąc), DAY(dzień), HOUR(godzina),
MINUTE(minuta), SECOND(sekunda)
●
TIMEZONE_HOUR(godzina w strefie czasowej)
●
TIMEZONE_MINUTE(minuta w strefie czasowej)
–
Odstęp czasowy w godzinach i minutach między aktualną
strefą czasową a czasem w Greenwich
●
DATE
●
TIME [
dokładność_czasu
][WITH TIME ZONE]
●
TIMESTAMP [
dokładność_czasu
][WITH TIME ZONE]
10
●
DATE - stosowany dla dat
●
Pola YEAR, MONTH, DAY
●
TIME - zapis czasu
●
Pola HOUR, MINUTE, SECOND
●
TIMESTAMP - zawiera datę i godzinę
●
Parametr
dokładność_czasu
określa dokładność
informacji
●
Liczba miejsc po przecinku w polu SECOND
●
TIME = 0, TIMESTAMP = 6
●
Słowa kluczowe określają obecność pól związanych z
definicją strefy czasowej
11
Typy przedziałowe
●
Służy do reprezentowania przedziału czasowego
●
Rok – miesiąc
●
YEAR i/lub MONTH
●
Dzień – godzina
●
DAY, HOUR, MINUTE, SECOND
●
INTERVAL {{
pole_początkowe
TO
pole_końcowe
}
pojedyncze_pole_daty_i_czasu
}
●
pole_początkowe
●
Określa podstawowe pole przedziału czasowego
12
●
pole_początkowe
= YEAR | MONTH | DAY | HOUR |
MINUTE [
dokładność_początkowego_pola
]
●
pole_końcowe
●
Określa precyzję z jaką odmierzany jest przedział
czasowy
●
pole_końcowe
= YEAR | MONTH | DAY | HOUR | MINUTE
| SECOND [
dokładność_pola_sekund
]
●
Domyślną wartością dokładności pól jest 2
●
pojedyncze_pole_daty_i_czasu =
YEAR | MONTH | DAY |
HOUR
|
MINUTE
[
(
dokładność_początkowego_pola),
[
dokładność_sekund
]]
Typy przedziałowe
13
Przykłady
●
INTERVAL YEAR(2) TO MONTH
●
Przedział czasu o wartościach od 0 lat i 0 miesięcy
do 99 lat i 11 miesięcy
●
INTERVAL HOUR TO SECOND(4)
●
Przedział czasu od 0 godzin, 0 minut i 0 sekund do
99 godzin, 59 minut i 59.9999 sekund
●
INTERVAL YEAR(4)
●
Przedział lat od 0 do 9999
14
Integralność
●
Baza danych reprezentuje wybrany aspekt świata
rzeczywistego
●
Przechowuje informacje z określonych dziedzin
●
W bazie nie mogą znaleźć się informacje nie należące do
dziedziny problemu
●
Nie można polegać na wiedzy użytkownika
●
Kontrola integralności polega na przestrzeganiu ograniczeń
nałożonych na dane
●
Dane wymagane
●
Więzy dziedzinowe
●
Integralność encji
●
Integralność referencyjna (związków)
●
Więzy ogólne
15
Dane wymagane
●
Pewne kolumny muszą zawierać dane (nie wolno
pozostawić ich pustych)
●
Wartość
NULL
służy do reprezentowania informacji
–
Niedostępnych
–
Nie może być wpisana do bazy danych (jest
nieznana w momencie uzupełniania rekordu)
–
Klauzula
NOT NULL
w definicji atrybutu
●
System odrzuci każdą próbę wprowadzenia rekordu, w którym
dana kolumna jest pusta
●
Brak klauzuli NOT NULL(wartość domyślana) dopuszcza
wartości puste
●
stanowisko
VARCHAR(10) NOT NULL
16
Więzy dziedzinowe
●
Z każdą kolumną związane są dopuszczalne wartości
atrybutów
●
Dziedzina wartości
●
Więzy kolumnowe
●
Klauzula CHECK (
warunek_selekcji
)
●
Można się odwołać jedynie dla kolumny dla której
jest zdefiniowana klauzula
●
Utworzenie atrybutu
plec
przyjmującego tylko
wartości ('
M
', '
K
')
●
plec
CHAR NOT NULL CHECK (
plec
IN ('
M
','
K
') )
17
Definiowanie dziedzin
●
Niezależne definiowanie dziedzin
●
Dziedzina może być wykorzystywana wielokrotnie do
określania dozwolonych wartości dla atrybutów
CREATE DOMAIN
NazwaDziedziny
[AS]
typ_danych
[DEFAULT
wartość_domyślna
]
[CHECK (
warunek_selekcji
)]
●
typ_danych – podstawowy typ danych na bazie którego
tworzona jest dziedzina
●
wartość_domyślna
– określa dane przyjmowane automatycznie
●
warunek_selekcji
– ograniczenia nałożone na wartości
18
Tworzenie dziedziny
CREATE DOMAIN
RodzajPlci
AS CHAR
DEFAULT '
M
'
CHECK ( VALUE IN ('
M
','
K
'))
●
T
worzy dziedzinę o nazwie
RodzajPlci
●
Pojedyncze znaki o wartości '
M
' lub '
K
'
●
Wartość domyślna '
M
'
●
Definicja atrybutu z wykorzystaniem dziedziny
●
plec
RodzajPlci
NOT NULL
CREATE DOMAIN NumerBiura AS CHAR(4)
CHECK ( VALUE IN ( SELECT biuroNr FROM Biuro ))
●
Dziedzina NumerBiura zbudowana o numery biur z tabeli Biuro
●
Może pojawić się tylko istniejące biuro
19
Usuwanie dziedziny
●
DROP DOMAIN
NazwaDziedziny
[ RESTRICT |
CASCADE ]
●
Jeżeli zdefiniowana dziedzina nie jest używana to zostanie
usunięta
●
RESTRICT, CASCADE
●
Określa sposób postępowania w przypadku używania dziedziny
●
RESTRICT
–
Dziedzina nie zostanie usunięta
●
CASCADE
–
W każdej kolumnie tabeli dziedzina zostanie zastąpiona na typ
bazowy dziedziny
–
Wartość domyślna
–
Więzy kolumnowe
20
Integralność encji
●
Klucz główny
tabeli musi zawierać unikalną, niepustą
wartość w każdym wierszu
●
PRIMARY KEY(nieruchomoscNr)
●
Złożony klucz główny
●
PRIMARY KEY(biuroNr,nieruchomośćNr)
●
Klauzula może wystąpić tylko raz w definicji tabeli
●
Zagwarantowanie
unikalności
wartości
kolumn
alternatywnych
●
Kolumna (kolumny) wymienione w klauzuli UNIQUE muszą
mieć ustawiony atrybut NOT NULL
●
UNIQUE(nazwa_kolumny)
●
Klauzula może pojawić się klika razy
21
Integralność referencyjna
●
Klucz obcy
to kolumna lub zbiór kolumn łączących
każdy wiersz tabeli podrzędnej z wierszem tabeli
nadrzędnej
●
Wartości występujące w polach klucza obcego muszą
się odnosić do istniejącego
klucza głównego
●
FOREIGN KEY (biuorNr) REFERENCES Biuro
●
Każda operacja INSERT i UPDATE zostanie
odrzucona jeżeli klucz oby nie będzie odpowiadał
wartości klucza głównego tabeli nadrzędnej
●
Sposób dodawania i modyfikowania danych zależy od
rodzaju akcji referencyjnej
22
Akcje referencyjne
●
CASCADE
●
Usunięcie wiersza z tabeli nadrzędnej automatycznie
powoduje usunięcie związanych z nim wierszy z tabeli
podrzędnej
●
Jeżeli tabela podrzędna jest tabelą nadrzędną
względem innej tabeli opcja może powodować kolejne
usunięcia
●
SET NULL
●
Usunięcie wiersza z tabeli nadrzędnej i zastąpienie
wartości klucza obcego w jego wierszach podrzędnych
wartością pustą
●
Tabela podrzędna nie może mieć opcji NOT NULL dla
klucza obcego
23
●
SET DEFAULT
●
Usunięcie wierszy z tabeli nadrzędnej i zastąpienie wartości
klucza obcego w jego wierszach podrzędnych wartością
domyślną
●
W tabeli podrzędnej musi być określona wartość
domyślna wartość klucza obcego
●
NO ACTION
●
Zaniechanie operacji usuwania z tabeli nadrzędnej
●
Domyślny tryb pracy
●
FOREIGN KEY (pracownikNr) REFERENCES Personel ON DELETE
SET NULL
●
FOREIGN KEY (wlascicielNr) REFERENCES Wlasciciel ON
UPDATE CASCADE
Akcje referencyjne
24
Więzy ogólne - aseracje
●
Zmiany w tabelach mogą być ograniczone przez więzy ogólne
●
Aseracje nie są związane bezpośrednio z tabelami
●
Może nakładać ograniczenia na kilka tabel
CREATE ASSERATION NazwaAseracji
CHECK (warunek_selekcji)
●
Ograniczenie liczby nieruchomości nadzorowanych przez
jednego pracownika do 100
CREATE ASSERATION NieZaDuzo
CHECK ( NOT EXIST ( SELECT pracownikNr FROM
Nieruchomosc GROUP BY pracownikNr HAVING COUNT(*)
> 100 ))