23
SQL – JDD (DDL) Język definicji danych (Data Definition Language)

SQL – JDD (DDL)

  • Upload
    elyse

  • View
    68

  • Download
    0

Embed Size (px)

DESCRIPTION

SQL – JDD (DDL). Język definicji danych (Data Definition Language). 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. Dziedzina standardowa. - PowerPoint PPT Presentation

Citation preview

Page 1: SQL – JDD (DDL)

SQL – JDD (DDL)

Język definicji danych

(Data Definition Language)

Page 2: SQL – JDD (DDL)

18 marzec 2004 SQL - język definicji danych 2

Elementy bazy danych

DziedzinyTabele, perspektywyIndeksyWięzy ogólne (asercje)Wyzwalacze i procedury użytkownikaUżytkownicy, role, uprawnieniaZbiory znaków, zestawienia, translacje

Page 3: SQL – JDD (DDL)

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.

Page 4: SQL – JDD (DDL)

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

Page 5: SQL – JDD (DDL)

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>],...

)

Page 6: SQL – JDD (DDL)

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>

Page 7: SQL – JDD (DDL)

18 marzec 2004 SQL - język definicji danych 7

Akcja referencyjna

ON { DELETE | UPDATE }

{ RESTRICT |

NO ACTION |

CASCADE |

SET NULL |

SET DEFAULT }

Page 8: SQL – JDD (DDL)

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.

Page 9: SQL – JDD (DDL)

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>

Page 10: SQL – JDD (DDL)

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)

Page 11: SQL – JDD (DDL)

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]

Page 12: SQL – JDD (DDL)

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.

Page 13: SQL – JDD (DDL)

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.

Page 14: SQL – JDD (DDL)

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.

Page 15: SQL – JDD (DDL)

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.

Page 16: SQL – JDD (DDL)

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.

Page 17: SQL – JDD (DDL)

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 }]

Page 18: SQL – JDD (DDL)

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...]

Page 19: SQL – JDD (DDL)

18 marzec 2004 SQL - język definicji danych 19

Więzy ogólne – asercje

CREATE ASSERTION <nazwa więzu>

CHECK <warunek>

Page 20: SQL – JDD (DDL)

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

Page 21: SQL – JDD (DDL)

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

Page 22: SQL – JDD (DDL)

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

Page 23: SQL – JDD (DDL)

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 ASSELECT nazwisko, imię FROM WW WHERE marka IN (‘BMW’,’Opel’);

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