· 6 years ago · Jun 24, 2019, 04:54 PM
1------------ VIEW_1 ------------
2CREATE VIEW zajecia_dod(imie, nazwisko, tematyka)
3 AS
4 (
5 SELECT n.imie,
6 n.nazwisko,
7 z.tematyka
8 FROM nauczyciele n inner join Zajecia_dodatkowe z
9 ON z.id_nauczyciela = n.PESEL
10 )
11GO
12
13
14SELECT *
15FROM zajecia_dod;
16
17
18DROP VIEW zajecia_dod;
19
20
21------------ VIEW_2 ------------
22
23CREATE VIEW IIIa(imie, nazwisko)
24 AS
25 (
26 SELECT imie, nazwisko
27 FROM uczniowie
28 WHERE id_klasy = 'IIIa'
29 )
30GO
31
32
33SELECT *
34FROM IIIa
35ORDER BY nazwisko;
36
37
38DROP VIEW IIIa;
39
40
41------------ Procedura_1 ------------
42CREATE PROCEDURE usuwanie_ocen
43@id_o INT
44 AS
45 BEGIN
46 IF EXISTS (SELECT *
47 FROM Oceny
48 WHERE id_oceny=@id_o)
49 DELETE FROM Oceny
50 WHERE id_oceny = @id_o
51 ELSE
52 RAISERROR('Nie ma takiej oceny', 11, 1);
53END;
54GO
55
56
57EXEC usuwanie_ocen 4;
58
59
60DROP PROCEDURE usuwanie_ocen;
61
62------------ Procedura_2 ------------
63CREATE PROCEDURE nowe_nazwisko
64@pesel VARCHAR(11) ,
65@nazwisko VARCHAR (20)
66 AS
67 BEGIN
68 IF EXISTS (SELECT *
69 FROM Uczniowie
70 WHERE @pesel=PESEL)
71 UPDATE uczniowie
72 SET uczniowie.nazwisko=@nazwisko
73 WHERE pesel=@pesel
74 ELSE
75 RAISERROR('Nie ma takiego dziecka', 11, 1);
76 END;
77GO
78
79
80EXECUTE nowe_nazwisko 95041029264,niezabazdanych;
81
82
83DROP PROCEDURE nowe_nazwisko;
84
85
86------------ Procedura_3 ------------
87
88CREATE PROCEDURE dodaj_przedmiot
89 @id_przedmiotu VARCHAR(5),
90 @nazwa_przedmiotu VARCHAR(20),
91 @poziom VARCHAR(20)
92AS
93BEGIN
94 IF NOT EXISTS (SELECT *
95 FROM Przedmioty
96 WHERE id_przedmiotu=@id_przedmiotu and @nazwa_przedmiotu=nazwa and @poziom=poziom)
97 INSERT INTO Przedmioty VALUES
98 (@id_przedmiotu,@nazwa_przedmiotu,@poziom)
99 ELSE
100 RAISERROR('Taki przedmiot juz istnieje', 11, 1);
101
102END;
103GO
104
105
106EXECUTE dodaj_przedmiot 'His','Historia',1;
107
108
109DROP PROCEDURE dodaj_przedmiot;
110
111
112------------ Procedura_4 ------------
113
114CREATE OR ALTER PROCEDURE Rodzice_dzieciakow
115 @PESEL VARCHAR(11),
116 @imie_r VARCHAR(20) OUTPUT
117AS
118BEGIN
119 IF EXISTS (SELECT *
120 FROM Rodzice_dzieci
121 WHERE id_dziecka=@PESEL)
122 BEGIN
123 SELECT *
124 FROM Rodzice_dzieci
125 Where id_dziecka=@PESEL
126 END;
127 ELSE
128 RAISERROR('Nie ma takiego dziecka', 11, 1);
129END;
130GO
131
132
133BEGIN TRY
134 DECLARE @imie_rodzica VARCHAR(20);
135
136 EXEC Rodzice_dzieciakow -- EXEC jest aliasem dla EXECUTE
137 97020345161,
138 @imie_rodzica OUTPUT;
139
140 PRINT @imie_rodzica;
141END TRY
142BEGIN CATCH
143 SELECT ERROR_NUMBER() AS 'NUMER BLEDU',
144 ERROR_MESSAGE() AS 'KOMUNIKAT';
145END CATCH;
146
147
148DROP PROCEDURE Rodzice_dzieciakow;
149
150
151------------ Funkcja_1 ------------
152
153CREATE FUNCTION ile_nb
154 (
155 @PESEL VARCHAR(11)
156 )
157 RETURNS INT
158 AS
159 BEGIN RETURN(SELECT COUNT(id_ucznia)
160 FROM Frekwencja
161 WHERE id_ucznia=@PESEL and obecnosc='nb')
162END;
163GO
164
165
166SELECT dbo.ile_nb (97080714219) AS 'liczba niebecnosci';
167
168DROP FUNCTION ile_nb;
169
170------------ Funkcja_2 ------------
171
172CREATE FUNCTION Ocenki
173(
174 @PESEL VARCHAR(11)
175)
176 RETURNS TABLE
177 AS
178 RETURN SELECT ocena, id_przedmiotu, data_oc
179 FROM Oceny
180 WHERE Oceny.id_ucznia = @PESEL;
181
182GO
183
184
185Select *
186FROM Ocenki (97080714219)
187ORDER BY id_przedmiotu, data_oc;
188
189
190DROP FUNCTION Ocenki;
191
192
193------------ Trigger_1 ------------
194
195CREATE TRIGGER nowa_ocena
196ON Oceny
197AFTER INSERT
198 AS
199 PRINT 'Pracownik ' + user_name() + ' dodal oceny'
200GO
201
202
203INSERT INTO Oceny(ocena,id_ucznia,id_nauczyciela,id_przedmiotu,typ_oceny,waga,data_oc) VALUES
204(4,'97080714219','75010482946','Mat','sprawdzian',2,'2018-06-12');
205
206
207DROP TRIGGER nowa_ocena;
208
209
210------------ Trigger_2 ------------
211
212CREATE TRIGGER delete_ocena
213on Oceny
214AFTER DELETE
215 AS
216 PRINT 'Pracownik ' + user_name() + ' usuna oceny'
217GO
218
219
220DELETE FROM Oceny
221WHERE id_ucznia = '97080714219';
222
223
224DROP TRIGGER delete_ocena
225
226
227------------ Trigger_3 ------------
228
229CREATE TRIGGER trig_oceny
230on Oceny
231AFTER INSERT, UPDATE, DELETE
232 AS
233 SELECT * FROM deleted;
234 SELECT * FROM inserted
235GO
236
237
238UPDATE Oceny
239SET ocena = 5
240WHERE id_ucznia = '97012511534'
241AND id_przedmiotu = 'Inf';
242
243
244DROP TRIGGER trig_oceny
245
246
247------------ Trigger_4 ------------
248CREATE TRIGGER nowy_uczen
249ON Uczniowie
250AFTER INSERT
251 AS
252 PRINT 'Pracownik ' + user_name() + ' dodaje ucznia'
253GO
254
255
256INSERT INTO Uczniowie VALUES
257('97122654895','Marek','Kalina','1997-12-26','IIa');
258
259
260DROP TRIGGER nowy_uczen;