· 8 years ago · May 03, 2018, 12:14 AM
1CREATE TABLE IF NOT EXISTS `Klub` (
2`nazwa` varchar(40),
3`adres` varchar(40)
4)ENGINE=InnoDB DEFAULT CHARSET=utf8;
5
6CREATE TABLE IF NOT EXISTS `Zespol` (
7`nazwa` varchar(40),
8`ilosc czlonkow` int
9)ENGINE=InnoDB DEFAULT CHARSET=utf8;
10
11CREATE TABLE IF NOT EXISTS `Koncert` (
12`nazwa klubu` varchar(40),
13`nazwa zespolu` varchar(40),
14`data` datetime,
15INDEX (`nazwa klubu`, `nazwa zespolu`)
16)ENGINE=InnoDB DEFAULT CHARSET=utf8;
17
18insert into `Klub` values ('Dziekanat','Wyspianskiego'),('Spiz','Rynek');
19insert into `Zespol` values ('U2',5),('Metallica',3),('Perfect',4);
20insert into `Koncert` values ('Dziekanat','Perfect','2011-10-10'),('Spiz','U2','2025-12-12');
21insert into `Koncert` values ('Dziekanat','Metallica','2023-01-02');
22
23CREATE TABLE IF NOT EXISTS `Koncerty`(
24`nazwa klubu` varchar(40),
25`adres klubu` varchar(40),
26`nazwa zespolu` varchar(40),
27`ilosc czlonkow zespolu` int,
28`data` datetime
29)ENGINE=InnoDB DEFAULT CHARSET=utf8;
30
31insert into `Koncerty` values ('Dziekanat','Wyspianskiego','Metallica',3,'2023-01-02');
32insert into `Koncerty` values ('Dziekanat','Wyspianskiego','Perfect',4,'2011-10-10'),('Spiz','Rynek','U2',5,'2025-12-12');
33
34DELIMITER $$
35CREATE PROCEDURE Wstaw (klub varchar(40),ulica varchar(40), zespol varchar(40), ilosc int, termin datetime)
36begin
37declare czyistnieje int;
38declare czyistniejeklub int;
39declare czyistniejezespol int;
40declare czyblad int;
41set czyblad=0;
42set czyistnieje=(SELECT COUNT(*) FROM `Koncerty` WHERE klub=`nazwa klubu` AND ulica=`adres klubu` AND zespol=`nazwa zespolu` AND ilosc=`ilosc czlonkow zespolu` AND termin=`data`);
43if (czyistnieje>0) then
44 SELECT 'Ta krotka juz istnieje';
45else
46 set czyistniejeklub = (SELECT COUNT(*) FROM `Klub` WHERE klub=`nazwa`);
47 if (czyistniejeklub=0) then
48 INSERT INTO `Klub` values (klub,ulica);
49 else
50 if(ABS(STRCMP(ulica,(SELECT `adres` FROM `Klub` WHERE `nazwa`=klub)))=1) then
51 set czyblad=1;
52 SELECT 'Podano bledny adres';
53 end if;
54 end if;
55 set czyistniejezespol = (SELECT COUNT(*) FROM `Zespol` WHERE zespol=`nazwa`);
56 if (czyistniejezespol=0) then
57 INSERT INTO `Zespol` values (zespol,ilosc);
58 else
59 if(ilosc!=(SELECT `ilosc czlonkow` FROM `Zespol` WHERE `nazwa`=zespol)) then
60 set czyblad=1;
61 SELECT 'Podano bledna liczbe czlonkow';
62 end if;
63 end if;
64 if(czyblad=0) then
65 INSERT INTO `Koncerty` values (klub,ulica,zespol,ilosc,termin);
66 INSERT INTO `Koncert` values (klub,zespol,termin);
67 end if;
68end if;
69end;$$
70DELIMITER ;
71call Wstaw('Tawerna','Wyspianskiego','Re',4,'2013-03-15');
72
73DELIMITER $$
74CREATE PROCEDURE Usun (klub varchar(40),ulica varchar(40), zespol varchar(40), ilosc int, termin datetime)
75begin
76declare czyklub int;
77declare czyzespol int;
78DELETE k.* FROM `Koncert` k WHERE klub=k.`nazwa klubu` AND zespol=k.`nazwa zespolu` AND termin=k.`data`;
79DELETE k.* FROM `Koncerty` k WHERE klub=k.`nazwa klubu` AND zespol=k.`nazwa zespolu` AND termin=k.`data`;
80set czyklub=(SELECT COUNT(*) FROM `Koncert` WHERE `nazwa klubu`=klub);
81if (czyklub=0) then
82 DELETE k.* FROM `Klub` k WHERE k.`nazwa`=klub;
83end if;
84set czyzespol=(SELECT COUNT(*) FROM `Koncert` WHERE `nazwa zespolu`=zespol);
85if (czyzespol=0) then
86 DELETE z.* FROM `Zespol` z WHERE z.`nazwa`=zespol;
87end if;
88end;$$
89DELIMITER ;
90call Usun('Tawerna','Wyspianskiego','Re',4,'2013-03-15');