--tworzymy tabele knt CREATE TABLE knt( nknt number(10) not null, --pole o nazwie nkt typu number o maksymalnej dlugosci 10 (nie moze byc puste) nazw varchar(100) not null, misc varchar(30), ulic varchar(30), kodp varchar(6), telf varchar(20), CONSTRAINT knt_pk primary key (nknt) ); --tworzymy sekwencje zaczynającą się od 1, inkrementacja o 1, minimalna wartosc 1 :-) CREATE SEQUENCE KNT_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 NOCACHE NOCYCLE NOORDER; -- -- dodanie klucza glownego do stworzonej uprzednio tabeli -- -- alter table knt add constraint knt_pk primary key (nknt) --(powyższe zapytanie nie zostanie wykonanie gdyż linia zaczyna sie od znaku komentarza --) -- tworzymy tabele uslugi CREATE TABLE USG( NUSG NUMBER(10) NOT NULL, nazw varchar(100) not null, cena number(6,2) not null, rodz char(1) not null constraint usg_rodz_chk check (rodz in ('J','M')) --ograniczenie - rodz musi nalezec do zbioru ); --dodanie klucza podstawowego o nazwie usg_pk do tabeli usg na pole nusg. (aby zadzialalo tabela usg musi zostac wcześniej stworzona) ALTER TABLE usg add constraint usg_pk PRIMARY KEY (nusg); --znow sekwencja CREATE SEQUENCE USG_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 NOCACHE NOCYCLE NOORDER; --tworzymy tabele umo CREATE TABLE umo( numo number(10) not null, nknt number(10) not null, dtod date not null, dtdo date, constraint umo_pk primary key (numo), --klucz podstawowy constraint umo_knt_fk foreign key (nknt) REFERENCES knt (nknt) -- klucz obcy ); --tworzymy sekwencje umo_seq dla tabeli umo który bedzie wykorzystany przy wstawianiu (INSERT) rekordów do tabeli CREATE SEQUENCE UMO_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 NOCACHE NOCYCLE NOORDER; --tworzymy index na kluczy obcym w tabeli umo CREATE INDEX umo_knt_fk_i ON umo(nknt); -- tworzymy tabele ump deklarując jednocześnie klucz glowny (primary) oraz trzy klucze obce (foreign) CREATE table ump( numo number(10) not null, pozc number(5) not null, nusg number(10) not null, nknt number(10) not null, ilos number(3) not null, cena number(6,2) not null, constraint ump_pk primary key (numo, pozc), constraint ump_umo_fk foreign key (numo) references umo (numo), constraint ump_knt_fk foreign key (nknt) references knt (nknt), constraint ump_usg_fk foreign key (nusg) references usg (nusg) ); --tworzymy indexy na kluczach obcych w tabeli ump CREATE INDEX ump_knt_fk_i ON ump(nknt); CREATE INDEX ump_usg_fk_i ON ump(nusg); --wstawiamy rekord do tabeli usg INSERT INTO usg (NUSG, NAZW, CENA, RODZ) VALUES (usg_seq.nextval, 'Dostêp do internetu 512', 50,'M'); --wstawiamy rekord do tabeli knt INSERT INTO knt (NKNT, NAZW, MISC, ULIC, KODP, TELF) VALUES (knt_seq.nextval, 'Jan Nowak', 'Bytom','Krakowska','41-902','123123'); -- wstawienie do tabeli umo nowego rekordu (umo_seq.nextval pobiera za sekwencji umo_seq aktualna wartosc sekwencji powiekszona o 1 :-) INSERT INTO umo (NUMO, NKNT, DTOD, DTDO) VALUES (umo_seq.nextval, 1,'2006-10-01', null); --wylistowanie wszystkich rekordow z tabeli usg SELECT * FROM usg; --zapis do bazy danych COMMIT;