J ę zyk SQL (Structured Query Language) DDL (Data Definition Language )

33
Język SQL (Structured Query Language) DDL (Data Definition Language) Wykład S. Kozielski

description

J ę zyk SQL (Structured Query Language) DDL (Data Definition Language ). Wykład S. Kozielski. 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. - PowerPoint PPT Presentation

Transcript of J ę zyk SQL (Structured Query Language) DDL (Data Definition Language )

Page 1: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Język SQL (Structured Query Language)

DDL (Data Definition Language)

Wykład

S. Kozielski

Page 2: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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

Page 3: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

DDL (Data Definition Language)

Tworzenie tablic

CREATE TABLE <tablica> (<kolumna> <typ> [<ograniczenie kolumny>], ... [,<ograniczenie dodatkowe>])

Page 4: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Typy danych

Typy znakowe:

CHARACTER(n), CHAR(n): łańcuch n-znaków o stałej długości,

VARCHAR(n): łańcuch znaków o zmiennej długości,

LONG (LONG VARCHAR): łańcuch 2 GB

Page 5: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Typy numeryczne

dokładne:

NUMERIC(p,q)

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

INTEGER, INT

SMALLINT

przybliżone:

FLOAT(p)

REAL

DOUBLE PRECISION

Page 6: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Typ Data i czas

DATE : rrrr-mm-dd

TIME : hh-mm-ss:ułamki sekund

TIMESTAMP

DATETIME

INTERVAL

Page 7: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Inne typy

BIT(n) – łańcuch n-bitów

BYTE - łańcuch 8-bitów

BOOLEAN – true/false

MONEY

SERIAL

...

Page 8: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Ograniczenia kolumny

• NOT NULL• DEFAULT <wartość domyślna>• UNIQUE• CONSTRAINT <nazwa ogranicz.>] CHECK (<warunek>)• więzy referencyjne

Page 9: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Ograniczenia dodatkowe

•[CONSTRAINT <nazwa ogranicz.>] CHECK (<warunek>)•więzy referencyjne

Page 10: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Przykład: definiowanie tablicy 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);

Page 11: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Modyfikowanie struktury tablicy

ALTER TABLE <tablica>

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

ADD (<ograniczenie dodatkowe>)

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

DROP <kolumna>

DROP <ograniczenie dodatkowe>

DROP CONSTRAINT <ograniczenie kolumny>

Page 12: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Indeksy

i_prac_nazw

Jabłoński

Grabski

Bukowy

nazwisko

Topolski

Malina

wsk

Pracownicy

Malina

Bukowy

Jabłoński

Topolski

nazwisko

Grabski5

4

3

2

1

nrp

3

1

2

1

nrz

2

2

2

1

1

nrz

3

wsk

i_prac_nrz

Page 13: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Tworzenie indeksów

CREATE [UNIQUE] INDEX <indeks>

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

Przykład

create index i_prac_nazw on pracownicy(nazwisko);

Page 14: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Tworzenie perspektyw (widoków)

CREATE VIEW <perspektywa> …

Page 15: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Usuwanie obiektów

DROP TABLE <tablica>

DROP INDEX <indeks>

DROP VIEW <perspektywa>

Page 16: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Tworzenie perspektyw

Cele tworzenia perspektyw:a) upraszczanie zapytań

Page 17: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Tworzenie perspektyw

Cele tworzenia perspektyw:b) ograniczanie dostępu do tablic

Page 18: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Tworzenie perspektyw

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

AS <instrukcja SELECT>

[WITH CHECK OPTION]

Page 19: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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

Page 20: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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

Page 21: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Wykorzystanie perspektyw do aktualizacji tablic

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

Page 22: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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)

Page 23: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Więzy referencyjne – ochrona integralności bazy danych

Klucze główne (PRIMARY KEY)

 

Kolumna lub 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 tablicy,

- klucz główny musi mieć wartości unikalne i niepuste.

Page 24: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Wskazanie kluczy głównych

Zespoły (nrz, nazwa, nrpk)

Pracownicy (nrp, nazwisko, nrz)

Wypłaty (nrp, nrt, kwota)

Tematy (nrt, nazwa, nrpk)

Page 25: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Klucze obce (FOREIGN KEY)

Kolumna lub zestaw kolumn, które tworzą logiczne powiązanie z kluczem głównym jakiejś tablicy (nadrzędnej)

 

Wymagania dla kluczy obcych:

- definicja klucza obcego musi odpowiadać definicji klucza głównego istniejącej już tablicy nadrzędnej,

- niepustej wartości klucza obcego musi odpowiadać istniejąca wartość klucza głównego,

- dopuszcza się wartości puste kluczy obcych.

Page 26: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Wskazanie kluczy obcych

Zespoły (nrz, nazwa, nrpk)

Pracownicy (nrp, nazwisko, nrz)

Wypłaty (nrp, nrt, kwota)

Tematy (nrt, nazwa, nrpk)

Page 27: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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

Page 28: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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

Page 29: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Definiowanie więzów referencyjnych

Klucz główny

a) Ograniczenie kolumny: PRIMARY KEY

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

Page 30: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

Klucz obcy

a) Ograniczenie kolumny:

REFERENCES <tablica nadrzędna> [(<kolumna>)]

b) Ograniczenie dodatkowe:

FOREIGN KEY (<kolumna>, …) REFERENCES <tablica nadrzędna> [(<kolumna>, …)]

Page 31: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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 }

Page 32: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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

 

Page 33: J ę zyk SQL (Structured Query Language)  DDL (Data Definition Language )

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