Tworzenie relacji

Transkrypt

Tworzenie relacji
Tworzenie relacji
• polecenie CREATE TABLE
CREATE
CREATETABLE
TABLEnazwa_relacji
nazwa_relacji
(nazwa_atrybutu
(nazwa_atrybutu11typ
typ(rozmiar)
(rozmiar)[DEFAULT
[DEFAULTwartość_domyślna]
wartość_domyślna]
[[[CONSTRAINT
ogr] ograniczenie_
atr],
[CONSTRAINTnazwa_
nazwa_ogr]
ograniczenie_atr],
nazwa_atrybutu
nazwa_atrybutu22typ
typ(rozmiar)
(rozmiar)[DEFAULT
[DEFAULTwartość_domyślna]
wartość_domyślna]
[[[CONSTRAINT
nazwa_
ogr] ograniczenie_
atr],
[CONSTRAINT
nazwa_ogr]
ograniczenie_atr],
....
....
[[[CONSTRAINT
ogr] ograniczenie_
rel, ...]
[CONSTRAINTnazwa_
nazwa_ogr]
ograniczenie_rel,
...]););
Język definicji danych
1
Typy atrybutów relacji
•
•
•
•
•
•
•
•
•
Język definicji danych
number,
number(r),
number(r,n)
char(r)
varchar2(r),
varchar(r)
date
long
long raw
2
Ograniczenia integralnościowe atrybutu
ograniczenie_
atr
ograniczenie_atr
NULL
NULL
przykład
przykład
placa
_dod number
(6,2)
placa_dod
number(6,2)
NOT
NOTNULL
NULL
UNIQUE
UNIQUE
placa
_pod number
(6,2) not
,
placa_pod
number(6,2)
notnull
null,
nazwisko
nazwiskovarchar2(12)
varchar2(12)unique
unique
PRIMARY
PRIMARYKEY
KEY
REFERENCES
REFERENCES
numer
(4) primary
numernumber
number(4)
primarykey
key
id_
zesp number
(4)
id_zesp
number(4)
ON
ONDELETE
DELETECASCADE
CASCADE
references
(id_zesp)
referenceszespoly
zespoly(id_zesp)
id_
zesp number
(4)
id_zesp
number(4)
references
(id_zesp)
referenceszespoly
zespoly(id_zesp)
on
ondelete
deletecascade
cascade
CHECK
CHECK
Język definicji danych
placa
_pod number
(6,2) check
placa_pod
number(6,2)
check
((placa_pod
placa_pod between
between100
100and
and3000)
3000)
3
Ograniczenia integralnościowe relacji
• UNIQUE
• PRIMARY KEY
• REFERENCES
• ON DELETE CASCADE
• CHECK
• FOREIGN KEY ... REFERENCES
Domyślna wartość atrybutu
• definiując atrybut możemy mu przypisać
wartość domyślną, którą poprzedzamy słowem
kluczowym DEFAULT
placa_pod number(6,2) DEFAULT 0
Język definicji danych
4
Tworzenie relacji - przykład
CREATE
CREATETABLE
TABLEdydaktycy
dydaktycy((
id_
dydakt number
(2) CONSTRAINT
dydakt_pk PRIMARY
id_dydakt
number(2)
CONSTRAINTid_
id_dydakt_pk
PRIMARYKEY,
KEY,
nazwisko
nazwiskovarchar2(15)
varchar2(15)NOT
NOTNULL,
NULL,
tytuł
tytułvarchar2(10)
varchar2(10)NOT
NOTNULL);
NULL);
CREATE
CREATETABLE
TABLEprzedmioty
przedmioty((
id_
przedm number
(2) CONSTRAINT
przedm_pk PRIMARY
id_przedm
number(2)
CONSTRAINTid_
id_przedm_pk
PRIMARYKEY,
KEY,
nazwa
nazwavarchar2(15)
varchar2(15)NOT
NOTNULL);
NULL);
Język definicji danych
5
Tworzenie relacji - przykład cd.
CREATE
CREATETABLE
TABLEzajęcia
zajęcia((
id_
zajeć number
(2) CONSTRAINT
zajeć_pk PRIMARY
id_zajeć
number(2)
CONSTRAINTid_
id_zajeć_pk
PRIMARYKEY,
KEY,
rodzaj_
zaj varchar2(15)
zaj_chk CHECK
rodzaj_zaj
varchar2(15)CONSTRAINT
CONSTRAINTrodzaj_
rodzaj_zaj_chk
CHECK
(rodzaj_
zaj in
(rodzaj_zaj
in('wykład',
('wykład','ćwiczenia',
'ćwiczenia','laboratorium',
'laboratorium','projekt'
'projekt')),
)),
id_
dydakt number
(2) NOT
id_dydakt
number(2)
NOTNULL,
NULL,
id_
przedm number
(2) NOT
id_przedm
number(2)
NOTNULL,
NULL,
foreign
dydakt) REFERENCES
dydakt)
foreignkey
key(id_
(id_dydakt)
REFERENCESdydaktycy(id_
dydaktycy(id_dydakt)
ON
ONDELETE
DELETECASCADE,
CASCADE,
foreign
przedm) REFERENCES
przedm)
foreignkey
key(id_
(id_przedm)
REFERENCESprzedmioty(id_
przedmioty(id_przedm)
););
Język definicji danych
6
Słownik bazy danych
• opis zdefiniowanych ograniczeń integralnościowych
– USER_CONSTRAINTS
– USER_CONS_COLUMNS
• opis zdefiniowanych relacji
– USER_TABLES
select
_name from
selecttable
table_name
fromUSER_TABLES;
USER_TABLES;
Język definicji danych
7
Tworzenie relacji cd.
• CREATE TABLE AS SELECT
CREATE
CREATETABLE
TABLEnazwa_relacji
nazwa_relacji
[(nazwa
null|not null
], ...)]
[(nazwaatrybutu
atrybutu[[null|not
null],
...)]
AS
ASSELECT
SELECTklauzula_SELECT;
klauzula_SELECT;
CREATE
CREATETABLE
TABLElista_plac
lista_plac
AS
_pod
ASSELECT
SELECTnazwisko,
nazwisko,placa
placa_pod
FROM
FROMpracownicy;
pracownicy;
Język definicji danych
8
Modyfikowanie schematu relacji
• modyfikowanie definicji atrybutu
ALTER
ALTERTABLE
TABLErelacja
relacja
MODIFY
MODIFY(atrybut
(atrybuttyp
typ(rozmiar)
(rozmiar)
[[default
default wartość_domyślna]
|not null
] ););
wartość_domyślna][[null
null|not
null]
ALTER
ALTERTABLE
TABLEpracownicy
pracownicy
MODIFY
.’
MODIFY(tytuł_nauk
(tytuł_naukvarchar2(15)
varchar2(15)DEFAULT
DEFAULT’mgr
’mgrinż
inż.’
NOT
NOTNULL);
NULL);
Język definicji danych
9
Modyfikowanie schematu relacji cd.
• dodanie atrybutu
ALTER
ALTERTABLE
TABLErelacja
relacja
ADD
ADD(nazwa_atrybutu
(nazwa_atrybututyp
typ(rozmiar)
(rozmiar)
[DEFAULT
[DEFAULTwartość_domyślna]
wartość_domyślna]
[[[[constraint
constraint nazwa_
ogr] ograniczenie_
atr] ););
nazwa_ogr]
ograniczenie_atr]
ALTER
ALTERTABLE
TABLEpracownicy
pracownicy
ADD
ADD(tytuł_nauk
(tytuł_naukVARCHAR2(10)
VARCHAR2(10)););
• usuwanie atrybutu
ALTER
ALTERTABLE
TABLErelacja
relacjaDROP
DROP(nazwa_atrybutu);
(nazwa_atrybutu);
Język definicji danych
10
Modyfikowanie schematu relacji cd.
• dodanie ograniczenia integralnościowego relacji
ALTER
ALTERTABLE
TABLErelacja
relacja
ADD
constraint nazwa_
ogr] ograniczenie_
rel);
ADD([([constraint
nazwa_ogr]
ograniczenie_rel);
ALTER
ALTERTABLE
TABLEpracownicy
pracownicy
ADD
chk CHECK
ADD(CONSTRAINT
(CONSTRAINTetat_
etat_chk
CHECK(etat
(etatIN
IN
('DYREKTOR',
('DYREKTOR','PROFESOR',
'PROFESOR','ADIUNKT',
'ADIUNKT',
'ASYSTENT',
'ASYSTENT','STAŻYSTA',
'STAŻYSTA','SEKRETARKA')
'SEKRETARKA')))););
ALTER
ALTERTABLE
TABLEpracownicy
pracownicy
ADD
fk FOREIGN
zesp)
ADD(CONSTRAINT
(CONSTRAINTprac_
prac_fk
FOREIGNKEY
KEY(id_
(id_zesp)
REFERENCES
(id_zesp ))););
REFERENCESzespoly
zespoly(id_zesp
Język definicji danych
11
Zarządzanie ograniczeniami
integralnościowymi
• włączenie ograniczenia integralnościowego
ALTER
ALTERTABLE
TABLErelacja
relacja
ENABLE
ogr;
ENABLErodzaj_
rodzaj_ogr;
ALTER
ALTERTABLE
TABLErelacja
relacja
ENABLE
ogr;
ENABLECONSTRAINT
CONSTRAINTnazwa_
nazwa_ogr;
ALTER
ALTERTABLE
TABLEpracownicy
pracownicy
ENABLE
fk;
ENABLECONSTRAINT
CONSTRAINTprac_
prac_fk;
• wyłączenie ograniczenia integralnościowego
ALTER
ALTERTABLE
TABLErelacja
relacja
DISABLE
ogr;
DISABLErodzaj_
rodzaj_ogr;
ALTER
ALTERTABLE
TABLErelacja
relacja
DISABLE
ogr;
DISABLECONSTRAINT
CONSTRAINTnazwa_
nazwa_ogr;
ALTER
ALTERTABLE
TABLEpracownicy
pracownicy
DISABLE
DISABLEPRIMARY
PRIMARYKEY;
KEY;
Język definicji danych
12
Zarządzanie ograniczeniami
integralnościowymi cd.
• usunięcie ograniczenia integralnościowego
ALTER
ALTERTABLE
TABLErelacja
relacja
DROP
ogr [CASCADE];
DROProdzaj_
rodzaj_ogr
[CASCADE];
ALTER
ALTERTABLE
TABLErelacja
relacja
DROP
ogr [CASCADE];
DROPCONSTRAINT
CONSTRAINTnazwa_
nazwa_ogr
[CASCADE];
ALTER
ALTERTABLE
TABLEpracownicy
pracownicy
DROP
DROPPRIMARY
PRIMARYKEY
KEYCASCADE;
CASCADE;
ALTER
ALTERTABLE
TABLEpracownicy
pracownicy
DROP
chk;
DROPCONSTRAINT
CONSTRAINTetat_
etat_chk;
Język definicji danych
13
Zmiana nazwy relacji
RENAME
RENAMEstara_nazwa
stara_nazwaTO
TOnowa_nazwa;
nowa_nazwa;
Usuwanie relacji
DROP
DROPTABLE
TABLEnazwa_relacji
nazwa_relacji[CASCADE
[CASCADECONSTRAINTS];
CONSTRAINTS];
PRACOWNICY
ZESPOLY
REFERENCES zespoly(id_zesp)
DROP
DROPTABLE
TABLEzespoly
zespolyCASCADE
CASCADECONSTRAINTS;
CONSTRAINTS;
Język definicji danych
14

Podobne dokumenty