background image

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

background image

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ść

background image

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

background image

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

background image

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

background image

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)

background image

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

background image

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

background image

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]

background image

10

DATE - stosowany dla dat

Pola YEARMONTHDAY

TIME - zapis czasu

Pola HOURMINUTESECOND

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

background image

11

Typy przedziałowe

Służy do reprezentowania przedziału czasowego

Rok – miesiąc

YEAR i/lub MONTH

Dzień – godzina

DAYHOURMINUTESECOND

INTERVAL  {{ 

pole_początkowe

 TO  

pole_końcowe

 } 

pojedyncze_pole_daty_i_czasu

}

pole_początkowe

Określa podstawowe pole przedziału czasowego

background image

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

background image

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

background image

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

background image

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

background image

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

') )

background image

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

background image

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

background image

19

Usuwanie dziedziny

DROP DOMAIN 

NazwaDziedziny

 [ RESTRICT | 

CASCADE ]

Jeżeli zdefiniowana dziedzina nie jest używana to zostanie 
usunięta

RESTRICTCASCADE

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

background image

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

background image

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

background image

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

background image

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

background image

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 ))


Document Outline