Advertisement
42n4

Baza Oracle do ćwiczeń

Apr 7th, 2015
1,137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 13.13 KB | None | 0 0
  1. /* Schemat bazy laboratoryjnej dla bazy Oracle Express*/
  2.  
  3. /* Usuwanie tabel, jeśli były poprzednio utworzone */
  4. DROP TABLE Dostawy;
  5. DROP SEQUENCE dostawy_seq;
  6. DROP TABLE Oferty_dostawcow;
  7. DROP TABLE Dostawcy;
  8. DROP SEQUENCE dostawcy_seq;
  9. DROP TABLE Pozycje_zamowien;
  10. DROP TABLE Towary;
  11. DROP SEQUENCE towary_seq;
  12. DROP TABLE Zamowienia;
  13. DROP SEQUENCE zamowienia_seq;
  14. DROP TABLE Klienci;
  15. DROP SEQUENCE klienci_seq;
  16.  
  17. /* Ustawienie formatu daty*/
  18.  
  19. ALTER SESSION SET nls_date_format = 'DD/MM/YYYY';
  20.  
  21. /* Tworzenie tabeli Klienci (w nazwach tabel i kolumn nie ma polskich znaków)
  22. Nazwa_firmy, Adres, Miasto nie mogą być niewypełnione, trzeba je zawsze podać (ograniczenie not null) */
  23. CREATE TABLE Klienci(
  24.     Id_klienta      INTEGER,
  25.     Nazwa_firmy     varchar2(40) NOT NULL,
  26.     Adres       varchar2(80) NOT NULL,
  27.     Miasto      varchar2(40) NOT NULL,
  28.     Nr_tel      varchar2(20),
  29.     Nr_faksu    varchar2(20)
  30. );  
  31. /*Tworzenie sekwencji klienci_seq i trigera inkrementującego klucz główny*/
  32. CREATE SEQUENCE klienci_seq;
  33. CREATE OR REPLACE TRIGGER klienci_trg
  34. BEFORE INSERT ON Klienci
  35. FOR EACH ROW
  36. BEGIN
  37.   :NEW.Id_klienta := klienci_seq.NEXTVAL;
  38. END;
  39. /
  40. /* Dodawanie do tabeli klucza głównego – kolumny o unikalnych wartościach dla każdego wiersza osobno */
  41. ALTER TABLE Klienci ADD CONSTRAINT klienci_pk PRIMARY KEY(Id_klienta);
  42. /* Dodawanie danych do tabeli Klienci
  43. insert into Klienci(Id_klienta,Nazwa_firmy,Adres,Miasto,Nr_tel,Nr_faksu)
  44. values(null, 'Sortex', 'ul. Dziwna 5', 'Warszawa', '223456789', '223456788');
  45. insert into Klienci(Id_klienta,Nazwa_firmy,Adres,Miasto,Nr_tel,Nr_faksu)
  46. values(null, 'Evtex', 'ul. Kolorowa 2', 'Kraków', '343456711', '343456710');
  47. insert into Klienci(Id_klienta,Nazwa_firmy,Adres,Miasto,Nr_tel,Nr_faksu)
  48. values(null, 'Hortex', 'ul. Fajowa 3', 'Poznań', '123456733', '123456734');
  49.  */
  50. --generuj dane dla klientów
  51. CREATE OR REPLACE PROCEDURE klienci_gen AS
  52.     ile NUMBER(10);
  53.     TYPE TABSTR IS TABLE OF VARCHAR2(250);
  54.     nazwa TABSTR;
  55.     ulica TABSTR;
  56.     miasto TABSTR;
  57.     ile_nazw NUMBER(10);
  58.     ile_ulic NUMBER(10);
  59.     ile_miast NUMBER(10);
  60.     telefon NUMBER(10);
  61.     wybor_nazwy NUMBER(10);
  62.     wybor_ulicy NUMBER(10);
  63.     wybor_miasta NUMBER(10);
  64.     ulnum NUMBER(10);
  65. BEGIN
  66.     ile := 200;
  67.     nazwa := TABSTR ('Sortex','Diabex','Wilemix','Evtex','Hetex','Iluminaks','Werrtiks','Adiabex',
  68.     'Fedex','Direx','Goeks','frex');
  69.     ile_nazw := 12;
  70.     ulica := TABSTR ('Dziwna ','Kolorowa ','Fajowa ','Genialna ');
  71.     ile_ulic := 4;
  72.     miasto := TABSTR ('Warszawa','Kraków','Łódź','Olsztyn','Lublin','Poznań','Szczecin','Zakopane','Gdynia','Jelenia Góra');
  73.     ile_miast := 10;
  74.     FOR i IN 1..ile LOOP
  75.         wybor_nazwy := dbms_random.VALUE(1,ile_nazw);
  76.         wybor_ulicy := dbms_random.VALUE(1,ile_ulic);
  77.         wybor_miasta := dbms_random.VALUE(1,ile_miast);
  78.         telefon := dbms_random.VALUE(100000000,999999999);
  79.         ulnum := dbms_random.VALUE(1,99);
  80.         INSERT INTO Klienci VALUES (NULL, nazwa(wybor_nazwy) || to_char(ulnum,'99'),
  81.         'ul. ' || ulica(wybor_ulicy) || to_char(ulnum,'99'), miasto(wybor_miasta), telefon, telefon+1);
  82.     END LOOP;
  83.     DBMS_OUTPUT.put_line('Wszyscy klienci dodani.');
  84. END klienci_gen;
  85. /
  86. DELETE FROM Klienci;
  87. EXECUTE klienci_gen();
  88. SELECT * FROM klienci;
  89.  
  90.  
  91.  
  92. /* Tworzenie tabeli kursy */
  93. CREATE TABLE Zamowienia(
  94.     Nr_zam      INTEGER,
  95.     Data_zam    DATE NOT NULL,
  96.     Id_klienta      INTEGER,
  97.     Wartosc_zam     NUMBER(20,2)
  98. );
  99. /*Tworzenie sekwencji zamowienia_seq i trigera inkrementującego klucz główny*/
  100. CREATE SEQUENCE zamowienia_seq;
  101. CREATE OR REPLACE TRIGGER zamowienia_trg
  102. BEFORE INSERT ON Zamowienia
  103. FOR EACH ROW
  104. BEGIN
  105.   :NEW.Nr_zam := zamowienia_seq.NEXTVAL;
  106. END;
  107. /
  108. /* Dodawanie do tabeli klucza głównego – kolumny z indeksem i ograniczeniem unique */
  109. ALTER TABLE Zamowienia ADD CONSTRAINT zamowienia_pk PRIMARY KEY(Nr_zam);
  110. /* Dodawanie do tabeli klucza obcego – kolumny z powtarzającymi się wartościami pobranymi z klucza głównego innej tabeli (poprzez słowo kluczowe references) */
  111. ALTER TABLE Zamowienia ADD CONSTRAINT zamowienia_fk1 FOREIGN KEY(Id_klienta) REFERENCES Klienci(Id_klienta);
  112.  
  113.  
  114. /* Dodawanie danych do tabeli Zamowienia */
  115. INSERT INTO Zamowienia(Nr_zam,Data_zam,Id_klienta,Wartosc_zam)
  116. VALUES(NULL,TO_DATE('10/02/2015'),1,20000);
  117. INSERT INTO Zamowienia(Nr_zam,Data_zam,Id_klienta,Wartosc_zam)
  118. VALUES(NULL,TO_DATE('11/02/2015'),2,3000);
  119. INSERT INTO Zamowienia(Nr_zam,Data_zam,Id_klienta,Wartosc_zam)
  120. VALUES(NULL,TO_DATE('12/03/2015'),3,10000);
  121. INSERT INTO Zamowienia(Nr_zam,Data_zam,Id_klienta,Wartosc_zam)
  122. VALUES(NULL,TO_DATE('13/03/2015'),1,10000);
  123. INSERT INTO Zamowienia(Nr_zam,Data_zam,Id_klienta,Wartosc_zam)
  124. VALUES(NULL,TO_DATE('14/03/2015'),3,10000);
  125. INSERT INTO Zamowienia(Nr_zam,Data_zam,Id_klienta,Wartosc_zam)
  126. VALUES(NULL,TO_DATE('15/03/2015'),2,10000);
  127. INSERT INTO Zamowienia(Nr_zam,Data_zam,Id_klienta,Wartosc_zam)
  128. VALUES(NULL,TO_DATE('16/03/2015'),3,10000);
  129.  
  130.  
  131. /* Wypisywanie zawartości tabeli Klienci */
  132. SELECT * FROM Klienci;
  133. /* wypisywanie zawartości tabeli Zamowienia */
  134. SELECT * FROM Zamowienia;
  135.  
  136. /* Tworzenie tabeli Towary */
  137. CREATE TABLE Towary(
  138. Nr_katalog_towaru   INTEGER,
  139. Rodzaj_towaru       varchar2(40),
  140. Nazwa_producenta    varchar2(40),
  141. Model           varchar2(40) NOT NULL,
  142. Cena_sprzed     NUMBER(20,2),
  143. Ilosc_w_mag     INTEGER
  144. );
  145. /*Tworzenie sekwencji towary_seq i trigera inkrementującego klucz główny*/
  146. CREATE SEQUENCE towary_seq;
  147. CREATE OR REPLACE TRIGGER towary_trg
  148. BEFORE INSERT ON Towary
  149. FOR EACH ROW
  150. BEGIN
  151.   :NEW.Nr_katalog_towaru := towary_seq.NEXTVAL;
  152. END;
  153. /
  154.  
  155. /* Dodawanie do tabeli klucza głównego – kolumny z indeksem i ograniczeniem unique */
  156. ALTER TABLE Towary ADD CONSTRAINT towary_pk PRIMARY KEY(Nr_katalog_towaru);
  157. /* Dodawanie ograniczenia check – innej wartości niż dni tygodnia nie da się wpisać */
  158. ALTER TABLE Towary ADD CONSTRAINT towary_rodzaj_towaru_check  
  159. CHECK (Rodzaj_towaru IN ('Samochód', 'Rower', 'Namiot', 'Plecak', 'Śpiwór'));
  160.  
  161.  
  162.  
  163. /* Dodawanie danych do tabeli Towary */
  164. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  165. VALUES(NULL,'Samochód','Honda','SX',40000,12);
  166. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  167. VALUES(NULL,'Rower','PRS','FX',4000,32);
  168. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  169. VALUES(NULL,'Plecak','PRS','EXtra',900,100);
  170. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  171. VALUES(NULL,'Namiot','PRS','Extra',500,30);
  172. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  173. VALUES(NULL,'Śpiwór','PRS','Extra',400,200);
  174.  
  175. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  176. VALUES(NULL,'Plecak','TWX','Super',800,100);
  177. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  178. VALUES(NULL,'Namiot','TWX','Super',300,30);
  179. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  180. VALUES(NULL,'Śpiwór','TWX','Super',200,200);
  181.  
  182. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  183. VALUES(NULL,'Plecak','XYZ','Sen',400,100);
  184. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  185. VALUES(NULL,'Namiot','XYZ','Sen',200,30);
  186. INSERT INTO Towary(Nr_katalog_towaru,Rodzaj_towaru,Nazwa_producenta,Model,Cena_sprzed,Ilosc_w_mag)
  187. VALUES(NULL,'Śpiwór','XYZ','Sen',100,200);
  188. /* Wypisywanie zawartości tabeli Towary */
  189. SELECT * FROM Towary;
  190.  
  191. /* Tworzenie tabeli Pozycje_zamowien */
  192. CREATE TABLE Pozycje_zamowien(
  193.   Nr_zam        INTEGER,
  194.   Nr_katalog_towaru     INTEGER,
  195.   Ilosc_zam     INTEGER
  196. );
  197.  
  198. /* Dodawanie do tabeli klucza obcego – kolumny z powtarzającymi się wartościami pobranymi z klucza głównego innej tabeli (poprzez słowo kluczowe references) */
  199. ALTER TABLE Pozycje_zamowien ADD CONSTRAINT pozycje_zamowien_fk1 FOREIGN KEY(Nr_zam) REFERENCES Zamowienia(Nr_zam);
  200. /* Dodawanie do tabeli klucza obcego – kolumny z powtarzającymi się wartościami pobranymi z klucza głównego innej tabeli (poprzez słowo kluczowe references) */
  201. ALTER TABLE Pozycje_zamowien ADD CONSTRAINT pozycje_zamowien_fk2 FOREIGN KEY(Nr_katalog_towaru) REFERENCES Towary(Nr_katalog_towaru);
  202. /* Dodawanie do tabeli klucza głównego – kolumny z indeksem i ograniczeniem unique */
  203. ALTER TABLE Pozycje_zamowien ADD CONSTRAINT pozycje_zamowien_pk PRIMARY KEY(Nr_zam,Nr_katalog_towaru);
  204. DELETE FROM Pozycje_zamowien;
  205. /* Dodawanie danych do tabeli Pozycje_zamowien */
  206. INSERT INTO Pozycje_zamowien(Nr_zam,Nr_katalog_towaru,Ilosc_zam)
  207. VALUES(1,1,10);
  208. INSERT INTO Pozycje_zamowien(Nr_zam,Nr_katalog_towaru,Ilosc_zam)
  209. VALUES(1,2,1);
  210. INSERT INTO Pozycje_zamowien(Nr_zam,Nr_katalog_towaru,Ilosc_zam)
  211. VALUES(1,3,5);
  212. INSERT INTO Pozycje_zamowien(Nr_zam,Nr_katalog_towaru,Ilosc_zam)
  213. VALUES(1,4,7);
  214. INSERT INTO Pozycje_zamowien(Nr_zam,Nr_katalog_towaru,Ilosc_zam)
  215. VALUES(1,5,15);
  216. INSERT INTO Pozycje_zamowien(Nr_zam,Nr_katalog_towaru,Ilosc_zam)
  217. VALUES(1,6,15);
  218.  
  219.  
  220. /* Tworzenie tabeli Dostawcy */
  221. CREATE TABLE Dostawcy(
  222.     Id_dostawcy     INTEGER,
  223.     Nazwa_firmy     varchar2(40) NOT NULL,
  224.     Adres       varchar2(80) NOT NULL,
  225.     Miasto      varchar2(40) NOT NULL,
  226.     Kraj        varchar2(40) NOT NULL
  227. );
  228. /*Tworzenie sekwencji dostawcy_seq i trigera inkrementującego klucz główny*/
  229. CREATE SEQUENCE dostawcy_seq;
  230. CREATE OR REPLACE TRIGGER dostawcy_trg
  231. BEFORE INSERT ON Dostawcy
  232. FOR EACH ROW
  233. BEGIN
  234.   :NEW.Id_dostawcy := dostawcy_seq.NEXTVAL;
  235. END;
  236. /
  237. /* Dodawanie do tabeli klucza głównego – kolumny z indeksem i ograniczeniem unique */
  238. ALTER TABLE Dostawcy ADD CONSTRAINT dostawcy_pk PRIMARY KEY(Id_dostawcy);
  239. /* Dodawanie danych do tabeli Dostawcy */
  240. INSERT INTO Dostawcy(Id_dostawcy,Nazwa_firmy,Adres,Miasto,Kraj)
  241. VALUES(NULL,'Intrex','ul. Felgi 3','Warszawa','Polska');
  242. INSERT INTO Dostawcy(Id_dostawcy,Nazwa_firmy,Adres,Miasto,Kraj)
  243. VALUES(NULL,'Solexus','ul. Gitza 3','Wiedeń','Austria');
  244. INSERT INTO Dostawcy(Id_dostawcy,Nazwa_firmy,Adres,Miasto,Kraj)
  245. VALUES(NULL,'Denvus','ul. Kościuszki 3','Washington','USA');
  246.  
  247. /* Tworzenie tabeli Oferty_dostawcow */
  248. CREATE TABLE Oferty_dostawcow(
  249.   Id_dostawcy       INTEGER,
  250.   Nr_katalog_towaru     INTEGER,
  251.   Cena          INTEGER
  252. );
  253.  
  254. /* Dodawanie do tabeli klucza obcego – kolumny z powtarzającymi się wartościami pobranymi z klucza głównego innej tabeli (poprzez słowo kluczowe references) */
  255. ALTER TABLE Oferty_dostawcow ADD CONSTRAINT oferty_dostawcow_fk1 FOREIGN KEY(Id_dostawcy) REFERENCES Dostawcy(Id_dostawcy);
  256. /* Dodawanie do tabeli klucza obcego – kolumny z powtarzającymi się wartościami pobranymi z klucza głównego innej tabeli (poprzez słowo kluczowe references) */
  257. ALTER TABLE Oferty_dostawcow ADD CONSTRAINT oferty_dostawcow_fk2 FOREIGN KEY(Nr_katalog_towaru) REFERENCES Towary(Nr_katalog_towaru);
  258. /* Dodawanie do tabeli klucza głównego – kolumny z indeksem i ograniczeniem unique */
  259. ALTER TABLE Oferty_dostawcow ADD CONSTRAINT oferty_dostawcow_pk PRIMARY KEY(Id_dostawcy,Nr_katalog_towaru);
  260.  
  261. /* Dodawanie danych do tabeli Oferty_dostawcow */
  262. INSERT INTO Oferty_dostawcow(Id_dostawcy,Nr_katalog_towaru,Cena)
  263. VALUES(1,1,150);
  264. INSERT INTO Oferty_dostawcow(Id_dostawcy,Nr_katalog_towaru,Cena)
  265. VALUES(2,1,350);
  266. INSERT INTO Oferty_dostawcow(Id_dostawcy,Nr_katalog_towaru,Cena)
  267. VALUES(3,1,150);
  268. INSERT INTO Oferty_dostawcow(Id_dostawcy,Nr_katalog_towaru,Cena)
  269. VALUES(1,2,100);
  270. INSERT INTO Oferty_dostawcow(Id_dostawcy,Nr_katalog_towaru,Cena)
  271. VALUES(2,2,500);
  272. INSERT INTO Oferty_dostawcow(Id_dostawcy,Nr_katalog_towaru,Cena)
  273. VALUES(3,2,200);
  274. INSERT INTO Oferty_dostawcow(Id_dostawcy,Nr_katalog_towaru,Cena)
  275. VALUES(1,4,111);
  276.  
  277. /* Tworzenie tabeli Dostawy */
  278. CREATE TABLE Dostawy(
  279.     Nr_dostawy  INTEGER,
  280.     Data_zam    DATE NOT NULL,
  281.     Data_przyjecia  DATE,
  282.     Id_dostawcy     INTEGER NOT NULL,
  283.     Nr_katalog_towaru INTEGER NOT NULL,
  284.     Ilosc       INTEGER NOT NULL
  285. );
  286. /*Tworzenie sekwencji dostawy_seq i trigera inkrementującego klucz główny*/
  287. CREATE SEQUENCE dostawy_seq;
  288. CREATE OR REPLACE TRIGGER dostawy_trg
  289. BEFORE INSERT ON Dostawy
  290. FOR EACH ROW
  291. BEGIN
  292.   :NEW.Nr_dostawy := dostawy_seq.NEXTVAL;
  293. END;
  294. /
  295. /* Dodawanie do tabeli klucza głównego – kolumny z indeksem i ograniczeniem unique */
  296. ALTER TABLE Dostawy ADD CONSTRAINT dostawy_pk PRIMARY KEY(Nr_dostawy);
  297. /* Dodawanie do tabeli klucza obcego – kolumny z powtarzającymi się wartościami pobranymi z klucza głównego innej tabeli (poprzez słowo kluczowe references) */
  298. ALTER TABLE Dostawy ADD CONSTRAINT dostawy_fk1 FOREIGN KEY(Id_dostawcy) REFERENCES Dostawcy(Id_dostawcy);
  299. /* Dodawanie do tabeli klucza obcego – kolumny z powtarzającymi się wartościami pobranymi z klucza głównego innej tabeli (poprzez słowo kluczowe references) */
  300. ALTER TABLE Dostawy ADD CONSTRAINT dostawy_fk2 FOREIGN KEY(Nr_katalog_towaru) REFERENCES Towary(Nr_katalog_towaru);
  301.  
  302. /* Dodawanie danych do tabeli Dostawy */
  303. INSERT INTO Dostawy(Nr_dostawy,Data_zam,Data_przyjecia,Id_dostawcy,Nr_katalog_towaru,Ilosc)
  304. VALUES(NULL,TO_DATE('10/12/2014'),TO_DATE('20/01/2015'),1,1,2);
  305. INSERT INTO Dostawy(Nr_dostawy,Data_zam,Data_przyjecia,Id_dostawcy,Nr_katalog_towaru,Ilosc)
  306. VALUES(NULL,TO_DATE('14/12/2014'),TO_DATE('24/02/2015'),2,10,20);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement