background image

SQL – JDD (DDL)

Język definicji danych
(Data Definition Language)

background image

18 marzec 2004

SQL - język definicji danych

2

Elementy bazy danych

Dziedziny

Tabele, perspektywy

Indeksy

Więzy ogólne (asercje)

Wyzwalacze i procedury użytkownika

Użytkownicy, role, uprawnienia

Zbiory znaków, zestawienia, translacje

background image

18 marzec 2004

SQL - język definicji danych

3

Dziedzina standardowa

Logiczna (TRUE, FALSE, UNKNOWN);

Znakowe: char(n) lub character(n), varchar(n) lub 

character varying(n);

Bitowe: bit(n), bit varying(n);

Liczowe dokładne: int lub integer, shortint, 

numeric(n,p), decimal(n,p);

Liczbowe zmiennopozycyjne: float(p), real, 

double;

Daty i czasu: date, time, timestamp [WITH TIME 

ZONE]

Przedziały czasu: interval p to k;

Inne: text lub clob, blob.

background image

18 marzec 2004

SQL - język definicji danych

4

Dziedzina użytkownika

CREATE DOMAIN <NAZWA> AS <dziedzina zdef.>
[DEFAULT <wartość domyślna>][<więzy 

dziedzinowe>]

<wartość domyślna>::= <stała> | NULL | <f. bez 

arg.>

<więzy dziedzinowe>::=
[CONSTRAINT <nazwa więzu>]
CHECK ( VALUE { IN (v1,v2,...,vk) | 
IS NOT NULL | 
<operator porównania> <wartość>| 
BETWEEN <w1> AND <w2> | 
IN (<zapytanie SELECT>) })

background image

18 marzec 2004

SQL - język definicji danych

5

Tabela

CREATE TABLE <nazwa tabeli>

<kolumna1> <dziedzina1> 
[<więzy kolumny 1>],

  <kolumna2> <dziedzina2> 

[<więzy kolumny 2>],...
[<więzy relacji>],... 
)

background image

18 marzec 2004

SQL - język definicji danych

6

Więzy kolumny

[CONSTRAINT <nazwa więzu>]
NOT NULL |
DEFAULT <wartość domyślna> |
PRIMARY KEY |
UNIQUE |
REFERENCES <tabela>(<kolumna>)
[<akcja referencyjna>]
[<integralność referencyjna>] |
CHECK <warunek>

background image

18 marzec 2004

SQL - język definicji danych

7

Akcja referencyjna

ON { DELETE | UPDATE }

{ RESTRICT | 
NO ACTION |
CASCADE |
SET NULL |
SET DEFAULT }

background image

18 marzec 2004

SQL - język definicji danych

8

Integralność referencyjna

Domyślnie – jeżeli jakaś kolumna klucza 

obcego jest pusta, to integralność 

referencyjna nie jest kontrolowana;

MATCH FULL – jeśli wszystkie kolumny 

klucza obcego są puste, to integralność 

referencyjna nie jest kontrolowana; 

przeciwnie – musi istnieć odpowiedni rekord 

w tabeli nadrzędnej;

MATCH PARTIAL – rekord podrzędny pasuje 

do rekordu nadrzędnego, jeśli zgadza się z 

nim na niepustych polach klucza obcego.

background image

18 marzec 2004

SQL - język definicji danych

9

Więzy relacji

[CONSTRAINT <nazwa więzu>]
PRIMARY KEY (<lista kolumn>) |
UNIQUE (<lista kolumn>) | 
FOREIGN KEY (<lista kolumn>)
REFERENCES 

<tabela>(<lista kolumn>)

[<akcja referencyjna>][<integralność 
referencyjna>]| 

CHECK <warunek>

background image

18 marzec 2004

SQL - język definicji danych

10

Więzy – moment kontroli

Spełnienie więzu może być 
kontrolowane natychmiast po 
wprowadzeniu, aktualizacji 
rekordu z tabeli (IMMEDIATE)

Może być jednak odroczone do 
momentu wypełnienia transakcji 
(DEFERRED)

background image

18 marzec 2004

SQL - język definicji danych

11

Perspektywa (tabela 
wirtualna)

CREATE VIEW 
<nazwa perspektywy> [<nazwa 
kolumny>,...] 
AS
<zapytanie SELECT definiujące 
perspektywę> 
[ WITH 
[CASCADED|LOCAL]
  CHECK OPTION]

background image

18 marzec 2004

SQL - język definicji danych

12

Perspektywa - 
implementacja

Perspektywa materializowana – zapytanie 
definiujące perspektywę jest wyliczane i 
przechowywane jako tabela przez SZBD. 
Zapytania do perspektywy są realizowane 
przez wgląd w tę tabelę. Modyfikacje 
perspektywy mogą być przeprowadzane 
przez:

– ponowne obliczenie zapytania;
– aktualizację tylko tych rekordów, które 

dotknęła modyfikacja.

background image

18 marzec 2004

SQL - język definicji danych

13

Perspektywa – 
implementacja

Rozkład – jest metodą polegającą 
na przekształceniu zapytania 
dotyczącego perspektywy tak, by 
dotyczyło tabel bazowych, a 
warunki wyboru pochodzące z 
definicji perspektywy zostały 
włączone w definicję tabeli.

background image

18 marzec 2004

SQL - język definicji danych

14

Perspektywa - 
modyfikacje

Perspektywa jest modyfikowalna, gdy dotyczy 
jednej tabeli i występują w niej wszystkie 
kolumny niepuste (z nałożonym warunkiem 
NOT NULL lub PRIMARY KEY) z tej tabeli.

Własność modyfikowalności można 
rozciągnąć na perspektywy powstałe z kilku 
tabel, o ile w tabeli wynikowej występują 
kolumny kluczy i kolumny niepuste z 
wszystkich tabel, które są złączane w celu 
utworzenia perspektywy. 

background image

18 marzec 2004

SQL - język definicji danych

15

Perspektywa - 
modyfikacje

Perspektywa nie może być modyfikowalna, gdy:

zawiera operator DISTINCT;

zwraca kolumnę wyliczaną;

jest definiowana przez zapytanie grupujące;

jest definiowana przez zapytanie zawierające 

UNION, EXCEPT lub INTERSECT;

w warunku WHERE zapytania definiującego 

występuje odwołanie do tabeli występującej 

w klauzuli FROM.

background image

18 marzec 2004

SQL - język definicji danych

16

Perspektywa – WITH CHECK 
OPTION

WITH CHECK OPTION

– rekord wstawiony poprzez perspektywę musi 

należeć do perspektywy;

– rekord zmodyfikowany poprzez perspektywę 

nadal musi należeć do perspektywy.

CASCADED – wstawienie lub modyfikacja rekordu 

do perspektywy lub perspektywy na jej podstawie 

zdefiniowanej, nie może spowodować zniknięcia 

rekordu z danej perspektywy;

LOCAL – rekord może zniknąć po modyfikacji z 

perspektywy, o ile zniknie z tabeli, na podstawie 

której jest zdefiniowana perspektywa.

background image

18 marzec 2004

SQL - język definicji danych

17

Indeks

CREATE [UNIQUE] INDEX 
<nazwa indeksu> ON

   <nazwa tabeli> (<lista atrybutów>)

[USING {
HASH |
BTREE |
RTREE }] 

background image

18 marzec 2004

SQL - język definicji danych

18

Zmiany w schemacie BD

DROP – usunięcie danego obiektu 

(DOMAIN, TABLE, VIEW, INDEX) z 

opcją RESTRICT lub CASCADE

ALTER – modyfikacja definicji; 

możliwe operacje, to:

–  [DROP | ADD ] COLUMN]
–  [DROP | ADD ] CONSTRAINT
–  [DROP | SET ] [DEFAULT...]

[CHECK...]

background image

18 marzec 2004

SQL - język definicji danych

19

Więzy ogólne – asercje

CREATE ASSERTION <nazwa 
więzu>
CHECK <warunek>

background image

18 marzec 2004

SQL - język definicji danych

20

Przykład

CREATE DOMAIN TNazwa AS 
VARCHAR(20) DEFAULT ‘???’;

CREATE DOMAIN TPłeć AS 
CHAR
DEFAULT ‘?’
CHECK VALUE IN (‘K’, ‘M’);

background image

18 marzec 2004

SQL - język definicji danych

21

Przykład cd.

CREATE TABLE Osoba
( nazwisko Tnazwa NOT NULL,
  imię Tnazwa,

     KM Tpłeć,

 PESEL CHAR(11) UNIQUE NOT 
NULL,

    PRIMARY KEY (nazwisko, imię));

background image

18 marzec 2004

SQL - język definicji danych

22

Przykład cd.2

CREATE TABLE Samochód
(nrRej VARCHAR(10) PRIMARY 
KEY,
 marka Tnazwa,
 właściciel CHAR(11) 
REFERENCES Osoba(pesel) ON 
DELETE SET NULL ON UPDATE 
CASCADE);

background image

18 marzec 2004

SQL - język definicji danych

23

Przykład cd.3

CREATE VIEW WW AS 

    SELECT nazwisko, imię 

FROM Osoba JOIN Samochód ON 

pesel=właściciel;

CREATE VIEW WX AS
SELECT nazwisko, imię 
FROM WW WHERE marka IN 

(‘BMW’,’Opel’);

CREATE INDEX samWgWłaściciel
ON Samochód(Właściciel)


Document Outline