1 Język SQL (Structured Query Language) DDL (Data Definition Language)Wykład S. Kozielski
2 Język SQL (Structured Query Language)IBM SEQUEL SQL standaryzacja: SQL – 86 SQL – 89 SQL – 92 (SQL - 2) SQL – 99 (SQL - 3) SQL – 2003
3 DDL (Data Definition Language)Tworzenie tablic CREATE TABLE
4 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
5 Typy numeryczne dokładne: NUMERIC(p,q) DECIMAL(p,q), DEC(p,q)INTEGER, INT SMALLINT przybliżone: FLOAT(p) REAL DOUBLE PRECISION
6 Typ Data i czas DATE : rrrr-mm-dd TIME : hh-mm-ss:ułamki sekundTIMESTAMP DATETIME INTERVAL
7 Inne typy BIT(n) – łańcuch n-bitów BYTE - łańcuch 8-bitówBOOLEAN – true/false MONEY SERIAL ...
8 Ograniczenia kolumny NOT NULL DEFAULT
9 Ograniczenia dodatkowe[CONSTRAINT
10 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);
11 Modyfikowanie struktury tablicyALTER TABLE
12 Indeksy i_prac_nazw Jabłoński Grabski Bukowy nazwisko Topolski Malina wsk Pracownicy 5 4 3 2 1 nrp nrz i_prac_nrz
13 Tworzenie indeksów CREATE [UNIQUE] INDEX
14 Tworzenie perspektyw (widoków)CREATE VIEW
15 Usuwanie obiektów DROP TABLE
16 Tworzenie perspektyw Cele tworzenia perspektyw: a) upraszczanie zapytań
17 Tworzenie perspektyw Cele tworzenia perspektyw: b) ograniczanie dostępu do tablic
18 Tworzenie perspektyw CREATE VIEW
19 Tworzenie przykładowej perspektywy zpwtcreate 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
20 Przykłady wykorzystania perspektywy zpwtselect distinct nazwa_z from zpwt where nazwa_t = ‘Projekt sterownika’ select nazwa_z, nazwa_t, sum(kwota) group by nazwa_z, nazwa_t
21 Wykorzystanie perspektyw do aktualizacji tablicNiedopuszczalne 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).
22 Rola frazy CHECK OPTIONcreate 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)
23 Więzy referencyjne – ochrona integralności bazy danychKlucze 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.
24 Wskazanie kluczy głównychZespoły (nrz, nazwa, nrpk) Pracownicy (nrp, nazwisko, nrz) Wypłaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk)
25 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.
26 Wskazanie kluczy obcychZespoły (nrz, nazwa, nrpk) Pracownicy (nrp, nazwisko, nrz) Wypłaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk)
27 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).
28 Nałożenie ograniczeń na usuwanie danychZespoły (nrz, nazwa, nrpk) Pracownicy (nrp, nazwisko, nrz) Wypłaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk) set null cascade restrict
29 Definiowanie więzów referencyjnychKlucz główny Ograniczenie kolumny: PRIMARY KEY Ograniczenie dodatkowe: PRIMARY KEY (
30 Klucz obcy Ograniczenie kolumny:REFERENCES
31 Ograniczenia na usuwanie i modyfikację wierszyON DELETE { NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT } ON UPDATE { NO ACTION | RESTRICT |
32 create table zespoły (nrz int primary key, nazwa varchar(30),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));
33 alter table zespoły add (foreign key(nrpk) referencesalter 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);