j ę zyk sql (structured query language) ddl (data definition language )
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 PresentationTRANSCRIPT
![Page 1: J ę zyk SQL (Structured Query Language) DDL (Data Definition Language )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/1.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/2.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/3.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/4.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/5.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/6.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/7.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/8.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/9.jpg)
Ograniczenia dodatkowe
•[CONSTRAINT <nazwa ogranicz.>] CHECK (<warunek>)•więzy referencyjne
![Page 10: J ę zyk SQL (Structured Query Language) DDL (Data Definition Language )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/10.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/11.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/12.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/13.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/14.jpg)
Tworzenie perspektyw (widoków)
CREATE VIEW <perspektywa> …
![Page 15: J ę zyk SQL (Structured Query Language) DDL (Data Definition Language )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/15.jpg)
Usuwanie obiektów
DROP TABLE <tablica>
DROP INDEX <indeks>
DROP VIEW <perspektywa>
![Page 16: J ę zyk SQL (Structured Query Language) DDL (Data Definition Language )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/16.jpg)
Tworzenie perspektyw
Cele tworzenia perspektyw:a) upraszczanie zapytań
![Page 17: J ę zyk SQL (Structured Query Language) DDL (Data Definition Language )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/17.jpg)
Tworzenie perspektyw
Cele tworzenia perspektyw:b) ograniczanie dostępu do tablic
![Page 18: J ę zyk SQL (Structured Query Language) DDL (Data Definition Language )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/18.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/19.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/20.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/21.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/22.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/23.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/24.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/25.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/26.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/27.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/28.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/29.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/30.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/31.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/32.jpg)
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 )](https://reader035.vdocument.in/reader035/viewer/2022062422/56813731550346895d9ebee4/html5/thumbnails/33.jpg)
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);