BD Wykład 3 2011

background image

J

ę

zyk SQL (Structured Query Language)

DDL (Data Definition Language)

Wykład

S. Kozielski

background image

J

ę

zyk SQL (Structured Query Language)

1974 IBM

SEQUEL

SQL

standaryzacja:

SQL – 86

SQL – 89

SQL – 92 (SQL - 2)

SQL – 99 (SQL - 3)

SQL – 2003

background image

DDL (Data Definition Language)

Tworzenie tabel

CREATE TABLE <tabela> (<kolumna> <typ>

[<ograniczenie kolumny>], ... [,<ograniczenie

dodatkowe>])

background image

Typy danych

Typy znakowe

:

CHARACTER(n), CHAR(n):

ła

ń

cuch znaków o sta

ł

ej d

ł

ugo

ś

ci,

CHARACTER VARYING(n), VARCHAR(n)

:

ła

ń

cuch znaków o

zmiennej d

ł

ugo

ś

ci,

LONG (LONG VARCHAR)

:

ła

ń

cuch znaków

2 GB

CLOB –

słu

ż

y do przechowywania danych znakowych o du

ż

ych rozmiarach

BLOB -

słu

ż

y do przechowywania danych binarnych o du

ż

ych rozmiarach

background image

Typy numeryczne

dokładne:

NUMERIC(p,q)

p – precyzja (ca

ł

kowita liczba cyfr)

DECIMAL(p,q), DEC(p,q)

q – skala (liczba cyfr cz

ęś

ci u

ł

amk.)

INTEGER, INT

SMALLINT

przybliżone:

FLOAT(p)

REAL

DOUBLE PRECISION

background image

Typ Data i czas

DATE

: rrrr-mm-dd

TIME

: hh-mm-ss:u

ł

amki sekund

TIMESTAMP

DATETIME

INTERVAL

background image

Inne typy

BIT(n)

ł

a

ń

cuch n-bitów

BYTE

-

ł

a

ń

cuch 8-bitów

BOOLEAN

– true/false

MONEY

SERIAL

...

background image

Ograniczenia kolumny

• NOT NULL

• DEFAULT <warto

ść

domy

ś

lna>

• UNIQUE

• [CONSTRAINT <nazwa ogranicz.>] CHECK (<warunek>)

• wi

ę

zy referencyjne

background image

Ograniczenia dodatkowe

•[CONSTRAINT <nazwa ogranicz.>] CHECK (<warunek>)

•wi

ę

zy referencyjne

background image

Przyk

ł

ad: definiowanie tabeli o strukturze:

uczniowie (nazwisko, wzrost, waga, klasa)

create table uczniowie ( nazwisko varchar(15)

not null, wzrost int constraint max_min

check (wzrost > 70 and wzrost < 280),

waga dec(5,2) check (waga < 180),

klasa smallint);

background image

Modyfikowanie struktury tabeli

ALTER TABLE <tabela>

ADD (<kolumna><typ>[<ogranicz. kolumny>])

ADD (<ograniczenie dodatkowe>)

MODIFY (<kolumna><typ>[<ogran. kolumny>])

DROP <kolumna>

DROP <ograniczenie dodatkowe>

DROP CONSTRAINT <ograniczenie kolumny>

background image

Indeksy

i_prac_nazw

Jabło

ń

ski

Grabski

Bukowy

nazwisko

Topolski

Malina

wsk

Pracownicy

Malina

Bukowy

Jabło

ń

ski

Topolski

nazwisko

Grabski

5

4

3

2

1

nrp

3

1

2

1

nrz

2

2

2

1

1

nrz

3

wsk

i_prac_nrz

background image

Tworzenie indeksów

CREATE [UNIQUE] INDEX <indeks>

ON <tabela> (<kolumna>[ASC|DESC], …)

Przykład

create index i_prac_nazw on pracownicy(nazwisko);

background image

Tworzenie perspektyw (widoków)

CREATE VIEW <perspektywa> …

background image

Usuwanie obiektów

DROP TABLE <tabela>

DROP INDEX <indeks>

DROP VIEW <perspektywa>

background image

Tworzenie perspektyw

Cele tworzenia perspektyw:
a) upraszczanie zapyta

ń





background image

Tworzenie perspektyw

Cele tworzenia perspektyw:
b) ograniczanie dost

ę

pu do tabel

background image

Tworzenie perspektyw

CREATE VIEW <perspektywa> [(<lista nazw kolumn>)]

AS <instrukcja SELECT>

[WITH CHECK OPTION]

background image

Tworzenie przykładowej perspektywy

zpwt

create view zpwt (nrz, nazwa_z, nrpk_z, nrp, nazwisko,

nrt, nazwa_t, nrpk_t, kwota)

as select z.nrz, z.nazwa, z.nrpk, p.nrp, nazwisko,

t.nrt, t.nazwa, t.nrpk, kwota

from zespoły z, pracownicy p, wypłaty w, tematy t

where z.nrz = p.nrz and p.nrp = w.nrp and w.nrt = t.nrt

background image

Przykłady wykorzystania perspektywy

zpwt

select distinct nazwa_z

from zpwt

where nazwa_t = ‘Projekt sterownika’

select nazwa_z, nazwa_t, sum(kwota)

from zpwt

group by nazwa_z, nazwa_t

background image

Wykorzystanie perspektywy

zpwt -

problem

Rozwa

ż

my zapytanie

:

select nazwisko, nazwa_z

from zpwt

W tym zapytaniu potrzebne s

ą

2 tabele, ale procesor zapyta

ń

zgodnie z definicj

ą

prespektywy

zpwt

ł

ą

czy ze sob

ą

4 tabele i

rezultacie wyst

ą

pi efekt „obcinania krotek zwisaj

ą

cych”.

W rezultacie w odpowiedzi na powy

ż

sze pytanie nie pojawi

ą

si

ę

np. nazwiska pracowników, którzy nie mieli

ż

adnych wypłat

background image

Wykorzystanie perspektyw do aktualizacji tabel

Niedopuszczalne w definicji perspektyw:

- fraza GROUP,

- wyra

ż

enia, funkcje agreg., DISTINCT na li

ś

cie SELECT,

- fraza UNION,

- zł

ą

czenia – z wyj

ą

tkami, np. SQL Server (o ile aktualizacja

dotyczy 1 tabeli).

background image

Rola frazy CHECK OPTION

create view sekretariat_1

as select nrp, nazwisko, nrz

from pracownicy

where nrz = 1

with check option

select *

from sekretariat_1

insert into sekretariat_1 values (12,’Sosna’,1)

insert into sekretariat_1 values (13,’D

ę

bski’,2)

background image

Wi

ę

zy referencyjne – ochrona integralno

ś

ci

bazy danych

Klucze g

ł

ówne (PRIMARY KEY)

Kolumna lub najmniejszy zestaw kolumn, których warto

ś

ci

jednoznacznie identyfikuj

ą

ka

ż

dy wiersz.

Wymagania dla klucza g

ł

ównego:

- mo

ż

e by

ć

tylko 1 klucz główny w tabeli,

- klucz główny musi mie

ć

warto

ś

ci unikalne i niepuste.

background image

Wskazanie kluczy głównych

Zespoły (nrz, nazwa, nrpk)

Pracownicy (nrp, nazwisko, nrz)

Wypłaty (nrp, nrt, kwota)

Tematy (nrt, nazwa, nrpk)

background image

Klucze obce (FOREIGN KEY)

Kolumna lub zestaw kolumn, które tworz

ą

logiczne powi

ą

zanie z

kluczem głównym jakiej

ś

tabeli (nadrz

ę

dnej)

Wymagania dla kluczy obcych:

- definicja klucza obcego musi odpowiada

ć

definicji klucza głównego

istniej

ą

cej ju

ż

tabeli nadrz

ę

dnej,

- niepustej warto

ś

ci klucza obcego musi odpowiada

ć

istniej

ą

ca

warto

ść

klucza g

ł

ównego,

- dopuszcza si

ę

warto

ś

ci puste kluczy obcych.

background image

Wskazanie kluczy obcych

Zespoły (nrz, nazwa, nrpk)

Pracownicy (nrp, nazwisko, nrz)

Wypłaty (nrp, nrt, kwota)

Tematy (nrt, nazwa, nrpk)

background image

Ograniczenia na usuwanie wierszy

-

restrykcyjne (RESTRICT, NO ACTION) –

usuni

ę

cie wiersza

nadrz

ę

dnego nie jest mo

ż

liwe, je

ś

li istniej

ą

wiersze podrz

ę

dne (logicznie

z nim powi

ą

zane),

- z wstawianiem warto

ś

ci pustych (SET NULL) – usuni

ę

cie wiersza

nadrz

ę

dnego powoduje automatyczne wstawienie warto

ś

ci pustych w

miejsce kluczy obcych wierszy podrz

ę

dnych,

- kaskadowe (CASCADE) – usuni

ę

cie wiersza nadrz

ę

dnego powoduje

automatyczne usuni

ę

cie wierszy podrz

ę

dnych (logicznie z nim

powi

ą

zanych).

background image

Nało

ż

enie ogranicze

ń

na usuwanie danych

Zespoły (nrz, nazwa, nrpk)

Pracownicy (nrp, nazwisko, nrz)

Wypłaty (nrp, nrt, kwota)

Tematy (nrt, nazwa, nrpk)

set null

cascade

restrict

background image

Definiowanie wi

ę

zów referencyjnych

Klucz główny

a) Ograniczenie kolumny: PRIMARY KEY

b) Ograniczenie dodatkowe: PRIMARY KEY (<kolumna>, …)

background image

Klucz obcy

a) Ograniczenie kolumny:

REFERENCES <tabela nadrz

ę

dna> [(<kolumna>)]

b) Ograniczenie dodatkowe:

FOREIGN KEY (<kolumna>, …) REFERENCES <tabela

nadrz

ę

dna> [(<kolumna>, …)]

background image

Ograniczenia na usuwanie i modyfikacj

ę

wierszy

ON DELETE { NO ACTION | RESTRICT |

CASCADE |

SET NULL | SET DEFAULT }

ON UPDATE { NO ACTION | RESTRICT |

CASCADE |

SET NULL | SET DEFAULT }

background image

create table zespoły (nrz int

primary key

, nazwa varchar(30),

nrpk int);

create table pracownicy (nrp int

primary key

, nazwisko

varchar(20) not null,nrz int

references zespoły on delete

set null);

create table tematy (nrt int

primary key

, nazwa varchar(50),

nrpk int);

create table wypłaty (nrp int

references pracownicy

, nrt int

references tematy on delete cascade

,kwota dec(8,2),

primary key (nrp, nrt

));

background image

Dodatkowe wi

ę

zy – wersja Oracle:

alter table zespoły add (foreign key(nrpk) references

pracownicy on delete set null);

alter table tematy add (foreign key(nrpk) references

pracownicy on delete set null);

Wersja MS SQLServer:

alter table zespoły add foreign key(nrpk) references

pracownicy on delete set null;

alter table tematy add foreign key(nrpk) references

pracownicy on delete set null;


Wyszukiwarka

Podobne podstrony:
BD Wykład 4 2011
BD Wykład 8 2011
BD Wykład 5 2011
BD Wykład 7 2011
BD Wyklad 1 2011
BD Wykład 6 2011
BD Wykład 2 2011
BD Wykład 4 2011
perswazja wykład2 2011 Zasady skutecznej perswazji Petty & Cacioppo

więcej podobnych podstron