· 9 years ago · Jun 20, 2017, 04:04 PM
1
2DROP TABLE IF EXISTS `Film`;
3
4CREATE TABLE `Film` (
5 `idFilm` int(11) unsigned NOT NULL AUTO_INCREMENT,
6 `nazwa` varchar(30) DEFAULT NULL,
7 PRIMARY KEY (`idFilm`)
8) ENGINE=InnoDB DEFAULT CHARSET=latin1;
9
10
11INSERT INTO `Film` (`idFilm`, `nazwa`)
12VALUES
13 (1,'Shrek 3'),
14 (2,'Niezniszczalni 5'),
15 (3,'Wyspa Tajemnic');
16
17DROP TABLE IF EXISTS `Kino`;
18
19CREATE TABLE `Kino` (
20 `idKino` int(11) unsigned NOT NULL AUTO_INCREMENT,
21 `nazwa` varchar(20) NOT NULL DEFAULT '',
22 `adres` varchar(40) NOT NULL DEFAULT '',
23 `miejscowosc` varchar(40) NOT NULL DEFAULT '',
24 `kod_pocztowy` varchar(6) NOT NULL DEFAULT '',
25 PRIMARY KEY (`idKino`)
26) ENGINE=InnoDB DEFAULT CHARSET=latin1;
27
28LOCK TABLES `Kino` WRITE;
29
30INSERT INTO `Kino` (`idKino`, `nazwa`, `adres`, `miejscowosc`, `kod_pocztowy`)
31VALUES
32 (1,'Krewetka','Niepodleglosci 1','Gdansk','12-412'),
33 (2,'Zlote Tarasy','Monte Casino 43','Warszawa','02-222'),
34 (3,'Cinemax','Grunwaldzka 311','Bialystok','54-213');
35
36DROP TABLE IF EXISTS `Klient`;
37
38CREATE TABLE `Klient` (
39 `idKlient` int(11) unsigned NOT NULL AUTO_INCREMENT,
40 `imie` varchar(20) NOT NULL DEFAULT '',
41 `nazwisko` varchar(30) NOT NULL DEFAULT ' ',
42 `email` varchar(40) NOT NULL DEFAULT ' ',
43 `telefon` int(9) NOT NULL,
44 PRIMARY KEY (`idKlient`)
45) ENGINE=InnoDB DEFAULT CHARSET=latin1;
46
47
48INSERT INTO `Klient` (`idKlient`, `imie`, `nazwisko`, `email`, `telefon`)
49VALUES
50 (1,'Adam','Mickiewicz','mickiewicz@gmail.com',668668987),
51 (2,'Adrianna','Kowalska','kowalska@gmail.com',512016453),
52 (3,'Kamila','Witek','witek@gmail.com',786778049);
53
54DROP TABLE IF EXISTS `Sala`;
55
56CREATE TABLE `Sala` (
57 `idSala` int(11) unsigned NOT NULL AUTO_INCREMENT,
58 `idKino` int(11) unsigned NOT NULL,
59 `numer` int(2) unsigned NOT NULL,
60 `ilosc_osob` int(2) unsigned NOT NULL,
61 PRIMARY KEY (`idSala`),
62 KEY `idKino` (`idKino`),
63 CONSTRAINT `Sala_ibfk_1` FOREIGN KEY (`idKino`) REFERENCES `Kino` (`idKino`)
64) ENGINE=InnoDB DEFAULT CHARSET=latin1;
65
66
67INSERT INTO `Sala` (`idSala`, `idKino`, `numer`, `ilosc_osob`)
68VALUES
69 (1,1,1,50),
70 (2,1,2,30),
71 (3,2,1,15),
72 (4,3,1,60),
73 (5,3,2,40);
74
75DROP TABLE IF EXISTS `Seans`;
76
77CREATE TABLE `Seans` (
78 `idSeans` int(11) unsigned NOT NULL AUTO_INCREMENT,
79 `idSala` int(11) unsigned NOT NULL,
80 `idFilm` int(11) unsigned NOT NULL,
81 `data` datetime NOT NULL,
82 PRIMARY KEY (`idSeans`),
83 KEY `idSala` (`idSala`),
84 KEY `idFilm` (`idFilm`),
85 CONSTRAINT `Seans_ibfk_1` FOREIGN KEY (`idSala`) REFERENCES `Sala` (`idSala`),
86 CONSTRAINT `Seans_ibfk_2` FOREIGN KEY (`idFilm`) REFERENCES `Film` (`idFilm`)
87) ENGINE=InnoDB DEFAULT CHARSET=latin1;
88
89
90INSERT INTO `Seans` (`idSeans`, `idSala`, `idFilm`, `data`)
91VALUES
92 (1,1,1,'2017-06-20 18:00:00'),
93 (2,2,1,'2017-06-20 20:00:00'),
94 (3,2,2,'2017-06-20 21:00:00'),
95 (7,3,3,'2017-06-20 13:00:00');
96
97DROP TABLE IF EXISTS `Rezerwacja`;
98
99CREATE TABLE `Rezerwacja` (
100 `idRezerwacja` int(11) unsigned NOT NULL AUTO_INCREMENT,
101 `idSeans` int(11) unsigned NOT NULL,
102 `idKlient` int(11) unsigned NOT NULL,
103 `ilosc_osob` int(2) unsigned NOT NULL,
104 `data` datetime NOT NULL,
105 PRIMARY KEY (`idRezerwacja`),
106 KEY `idSeans` (`idSeans`),
107 KEY `idKlient` (`idKlient`),
108 CONSTRAINT `Rezerwacja_ibfk_1` FOREIGN KEY (`idSeans`) REFERENCES `Seans` (`idSeans`),
109 CONSTRAINT `Rezerwacja_ibfk_2` FOREIGN KEY (`idKlient`) REFERENCES `Klient` (`idKlient`)
110) ENGINE=InnoDB DEFAULT CHARSET=latin1;
111
112INSERT INTO `Rezerwacja` (`idRezerwacja`, `idSeans`, `idKlient`, `ilosc_osob`, `data`)
113VALUES
114 (1,1,1,5,'2017-06-19 23:15:06'),
115 (2,1,2,20,'2017-06-19 14:43:21'),
116 (3,2,1,2,'2017-06-19 14:43:21'),
117 (4,3,3,40,'2017-06-18 10:05:21');
118
119
120 -- 1 Po dodaniu nowego kliena wyswietla sie liczba klienow
121
122 Set ServerOutPut On;
123 create or replace TRIGGER Policz_Klienow
124 After INSERT
125 ON Klient
126 DECLARE
127 licz_klient INTEGER;
128 BEGIN
129 SELECT Count(IdKlient) into licz_klient FROM Klient ;
130 DBMS_OUTPUT.PUT_LINE('Aktualna liczba klientow wynosi '||licz_klient||);
131 END Policz_Klienow;
132
133 Insert into Klient(idKlient, imie, nazwisko, email, telefon) Values(4, 'Kamil', 'Poplawski, 'mickiewicz@gmail.com', '768342964);
134 Delete from Klient Where idKlient = 4;
135-------------------------------------------
136
137
138-- 2 Blokada usuwania filmow
139 SET SERVEROUTPUT ON;
140 Create or replace Trigger usun_film
141 BEFORE delete
142 ON Film
143 BEGIN
144 RAISE_APPLICATION_ERROR(-20130,'Nie mozna usuwac filmow');
145 END usun_jezyk;
146
147
148 DELETE FROM Film WHERE idFilm = 1;
149------------------------
150
151
152-- 3 Blokada usuwania kin
153 SET SERVEROUTPUT ON;
154 Create or replace Trigger usun_kino
155 BEFORE delete
156 ON Kino
157 BEGIN
158 RAISE_APPLICATION_ERROR(-20130,'Nie mozna usuwac kin');
159 END usun_kino;
160
161
162 DELETE FROM Kino WHERE idKino = 2;
163------------------------
164
165
166--4 Blokada zmiany nazwy filmu
167
168 Create or replace trigger Film
169 Before update of nazwa on Film
170 For each row
171 Begin
172 if Updating then
173 if :old.nazwa != :new.nazwa then
174 raise_application_error(-20500,'Nie mozna zmienic nazwy filmu.');
175 end if;
176 end if;
177 End Film;
178
179 Update Film Set nazwa = 'Potop' where idFilm = 2;
180---------------------------
181
182
183 Create or replace procedure PoliczWidzow
184 As
185 iloscWidzow Integer;
186 Begin
187 Select sum(ilosc_osob) into iloscWidzow From Rezerwacja;
188 dbms_output.put_line('Dotychczasowa liczba widzow wynosi '||iloscWidzow||);
189 End;
190 --testy
191 Execute PoliczWidzow;