rijads

Vjezbe 10

May 31st, 2014
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.77 KB | None | 0 0
  1. --Vježba 10 – DDL komande
  2.  
  3. --1. Kreirati bazu podatka sa jednim data i jednim log fajlom. Imenovati je Vašim brojem dosijea. Prilikom kreiranje baze podataka za data fajl postaviti sljedeće parametre:
  4. --Lokacija: D:\DBMS_Data
  5. --Veličina: inicijalno 5 MB,  maksimalna veličina neograničena
  6. --Uvećanje: 10%
  7.  
  8. --Za Log fajl postaviti sljedeće paramtre:
  9. --Lokacija: C:\DBMS_Data\Log
  10. --Veličina: inicijalno 2 MB,  maksimalna veličina neograničena
  11. --Uvećanje: 5%
  12. CREATE DATABASE [3020]
  13. ON PRIMARY
  14. (NAME='3020',FILENAME='D:\DBMS_Data\3020.mdf',SIZE=5120KB,FILEGROWTH=10%)
  15. LOG ON
  16. (NAME='3020_log',FILENAME='C:\DBMS_Data\Log\3020.ldf',SIZE=2048KB, FILEGROWTH=5%)
  17. GO
  18.  
  19. --2. Koristeći SQL::DDL komande kreirati sljedeće tabele i osigurati referencijalni integritet:
  20. --Edukatori (Ime, Prezime, Titula, Email, Telefon, CV, Slika)
  21. --Predmeti (Naziv, Oznaka, ECTS [int])
  22. --EdukatoriPredmeti (Edukator, Predmet, Zvanje, BrojSati)
  23. USE [3020]
  24. CREATE TABLE dbo.Edukatori
  25. (EdukatorID int IDENTITY(1,1) PRIMARY KEY,
  26. Ime NVARCHAR(20) NULL,
  27. Prezime NVARCHAR(40) NULL,
  28. Titula NVARCHAR(5) NULL,
  29. Email NVARCHAR(30) NULL,
  30. Telefon NVARCHAR(20) NULL,
  31. CV VARBINARY(MAX) NULL,
  32. Slika IMAGE NULL
  33. )GO
  34.  
  35. CREATE TABLE dbo.Predmeti
  36. (PredmetID int IDENTITY(1,1) PRIMARY KEY,
  37. Naziv NVARCHAR(20) NOT NULL,
  38. Oznaka NVARCHAR(10) NULL,
  39. ECTS INT NULL
  40. )GO
  41.  
  42. CREATE TABLE EdukatoriPredmeti
  43. (EdukatorPredmetID int IDENTITY(1,1) PRIMARY KEY,
  44. EdukatorID int NOT NULL FOREIGN KEY (EdukatorID) REFERENCES dbo.Edukatori(EdukatorID),
  45. PredmetID int NOT NULL FOREIGN KEY (PredmetID) REFERENCES dbo.Predmeti(PredmetID),
  46. Zvanje NVARCHAR(16) NULL,
  47. BrojSati int NULL
  48. )GO
  49.  
  50. --Također, kreirati tabelu Fakulteti (Naziv, Telefon, Fax) i povezati je sa prethodno kreiranim tabelama Edukatori i EdukatoriPredmeti. U tabelu Edukatori dodati polje Adresa.
  51. --Za polje ECTS u tabeli Predmeti izmijeniti tip podatka u DECIMAL.
  52. CREATE TABLE dbo.Fakulteti
  53. (FakultetID int IDENTITY(1,1) PRIMARY KEY,
  54. EdukatorPredmetID int NOT NULL FOREIGN KEY (EdukatorPredmetID) REFERENCES dbo.EdukatoriPredmeti(EdukatorPredmetID), -- ne treba dodavati EdukatorID FK jer ga imamo u EdukatorPredmetID
  55. Naziv NVARCHAR(20) NULL,
  56. Telefon NVARCHAR(16) NULL,
  57. Fax NVARCHAR(16) NULL
  58. )GO
  59.  
  60. ALTER TABLE dbo.Edukatori
  61. ADD Adresa NVARCHAR(20) NULL;
  62. GO
  63.  
  64. ALTER TABLE dbo.Predmeti
  65. ALTER COLUMN ECTS DECIMAL NULL
  66. GO
  67.  
  68. --3. Kreirati stored proceduru za upis podataka u tabelu Edukatori. Također, kreirati procedure za izmjenu i brisanje podataka u istoj tabeli.
  69. --Koristeći procedure za upis podataka u tabelu dodati 5 novih edukatora.
  70. SELECT *
  71. FROM Edukatori
  72. GO
  73.  
  74. CREATE PROCEDURE UpisEdukatora
  75. @Ime NVARCHAR(20)=NULL,
  76. @Prezime NVARCHAR(40)=NULL,
  77. @Titula NVARCHAR(5)=NULL,
  78. @Email NVARCHAR(30)=NULL,
  79. @Telefon NVARCHAR(16)=NULL,
  80. @CV VARBINARY(MAX)=NULL,
  81. @Slika IMAGE=NULL,
  82. @Adresa NVARCHAR(20)=NULL
  83. AS
  84. INSERT INTO Edukatori
  85. VALUES(@Ime,@Prezime,@Titula,@Email,@Telefon,@CV,@Slika,@Adresa)
  86. GO
  87.  
  88. CREATE PROCEDURE IzmjenaEdukatora
  89. @EdukatorID INT,
  90. @Ime NVARCHAR(20)=NULL,
  91. @Prezime NVARCHAR(40)=NULL,
  92. @Titula NVARCHAR(5)=NULL,
  93. @Email NVARCHAR(30)=NULL,
  94. @Telefon NVARCHAR(16)=NULL,
  95. @CV VARBINARY(MAX)=NULL,
  96. @Slika IMAGE=NULL,
  97. @Adresa NVARCHAR(20)=NULL
  98. AS
  99. UPDATE Edukatori
  100. SET Ime=@Ime,Prezime=@Prezime,Titula=@Titula,Email=@Email,Telefon=@Telefon,CV=@CV,Adresa=@Adresa
  101. WHERE EdukatorID=@EdukatorID
  102. GO
  103.  
  104. CREATE PROCEDURE BrisanjeEdukatora
  105. @EdukatorID int
  106. AS
  107. DELETE FROM Edukatori
  108. WHERE EdukatorID=@EdukatorID
  109. GO
  110.  
  111. EXEC UpisEdukatora @Ime='Mike',@Prezime='Smith',@Titula='Mr.',@Email='[email protected]',@Telefon=NULL,@CV=NULL,@Adresa=NULL
  112. GO
  113. EXEC UpisEdukatora
  114. GO
  115. EXEC UpisEdukatora  @Prezime='Neko', @Email='[email protected]'
  116. GO
  117. EXEC UpisEdukatora 'David','Theblack',NULL,NULL,NULL,NULL,NULL,'Neverstreet'
  118. GO
  119. EXEC UpisEdukatora 'Mali','Hamo',@Email='[email protected]'
  120. GO
  121.  
  122. --4. U tabele Predmeti i Fakulteti dodati po 5 zapisa. Također, u tabelu EduktoriPredmeti dodati proizvoljne podatke (ko predaje određeni predmet, te na kojem fakultetu).
  123. SELECT *
  124. FROM Predmeti
  125. GO
  126.  
  127. INSERT INTO Predmeti
  128. VALUES('Demokratija i ljudska prava','smijesno..',1.0),
  129. ('Lokalna samouprava i javna prava','zalosno..',1),
  130. ('Medjunarodni odnosi i diplomatija','LOL..',2),
  131. ('Sigurnosne i mirovne studije','kek..',1),
  132. ('Socijalna politika','HAHAHHA..',1)
  133. GO
  134.  
  135. SELECT *
  136. FROM Fakulteti
  137. GO
  138.  
  139. INSERT INTO Fakulteti
  140. VALUES('Fakultet plitkih nauka','+387/33 203-562','+387/33 666-884')
  141. GO
  142.  
  143. UPDATE Edukatori
  144. SET FakultetID=3
  145. GO
  146.  
  147. SELECT *
  148. FROM Edukatori
  149. GO
  150.  
  151. SELECT *
  152. FROM EdukatoriPredmeti
  153. GO
  154.  
  155. INSERT INTO EdukatoriPredmeti
  156. VALUES(6,4,'U penziju',6),
  157. (6,4,'U penziju',6),
  158. (2,4,'U penziju',3),
  159. (3,5,'U penziju',2),
  160. (3,6,'U penziju',12),
  161. (4,6,'U penziju',8),
  162. (5,7,'U penziju',6),
  163. (5,8,'U penziju',6)
  164. GO
  165.  
  166. --5. Kreirati pogled (View) koji obuhvata sljedeće podatke: ime i prezime edukatora (spojeno), titula, oznaka predmeta, naziv predmeta, broj ECTS kredita, broj sati.
  167. CREATE VIEW osnovno
  168. AS
  169. SELECT E.Ime+' '+E.Prezime AS 'Ime i prezime',E.Titula AS 'Titula',P.Oznaka 'Oznaka predmeta',P.Naziv'Naziv predmeta',P.ECTS'Broj ECTS kredita',EP.BrojSati'Broj sati'
  170. FROM Edukatori AS E JOIN EdukatoriPredmeti AS EP
  171. ON E.EdukatorID=EP.EdukatorID JOIN Predmeti AS P
  172. ON EP.PredmetID=P.PredmetID JOIN Fakulteti AS F
  173. ON E.FakultetID=F.FakultetID
  174.  
  175. SELECT *
  176. FROM osnovno
  177. GO
  178. --6. Kreirati stored proceduru koja će na osnovu proslijeđenog parametra NazivPredmeta prikazti nastavno osoblje angažovano na predmetu. Iskoristiti prethodno kreirani view.
  179. CREATE PROCEDURE ProsljediPredmet
  180. @ImePredmeta NVARCHAR(40)
  181. AS
  182. SELECT *
  183. FROM osnovno
  184. WHERE [Naziv predmeta]=@ImePredmeta
  185. GO
  186.  
  187. EXEC ProsljediPredmet 'Demokratija i ljudska prava'
  188. GO
  189.  
  190. --Izmijeniti prethodno kreiranu stored proceduru tako da prima dva parametra: NazivPredmeta i ImePrezime edukatora. U zavisnosti od proslijeđenog/ih parametra,
  191. --procedura treba da prikaže podatke o predmetima i nastavnom osoblju.
  192. ALTER PROCEDURE ProsljediPredmet
  193. @ImePredmeta NVARCHAR(40),
  194. @ImeEdukatora NVARCHAR(20)
  195. AS
  196. SELECT *
  197. FROM osnovno
  198. WHERE [Naziv predmeta]=@ImePredmeta AND [Ime i prezime]=@ImeEdukatora
  199. GO
  200.  
  201. EXEC ProsljediPredmet 'Demokratija i ljudska prava','Mike Smith'
  202. GO
  203. --7. Koristeći proceduru za brisanje zapisa u tabeli Edukatori (Zadatak 3) obrisati 2 edukatora. Ukoliko edukatori imaju dodijeljene predmete,
  204. --modifikovati proceduru tako da prethodno obriše sve edukatoru dodijeljene predmete, a zatim obriše zapis iz tabele Edukatori.
  205. SELECT *
  206. FROM Edukatori
  207. GO
  208.  
  209. EXEC BrisanjeEdukatora 3
  210.  
  211. ALTER PROCEDURE BrisanjeEdukatora
  212. @EdukatorID int
  213. AS
  214. DELETE FROM EdukatoriPredmeti
  215. WHERE EdukatoriPredmeti.EdukatorID=@EdukatorID
  216. DELETE FROM Edukatori
  217. WHERE EdukatorID=@EdukatorID
  218. GO
  219.  
  220. EXEC BrisanjeEdukatora 3
  221.  
  222. --8. Kreirati trigger koji će u tabelu EdukatoriAudit zapisati detalje izmjene podataka nad tabelom Edukatori.
  223. CREATE TABLE tEdukatoriaudit
  224. (
  225. PromjenaID int IDENTITY(1,1) PRIMARY KEY,
  226. AIme NVARCHAR(20) NULL,
  227. APrezime NVARCHAR(40) NULL,
  228. ATitula NVARCHAR(5) NULL,
  229. AEmail NVARCHAR(30) NULL,
  230. ATelefon NVARCHAR(20) NULL,
  231. vrijeme datetime NULL,
  232. korisnik NVARCHAR(40)
  233. )
  234. GO
  235.  
  236. CREATE TRIGGER Edukatoriaudit
  237. ON Edukatori
  238. FOR INSERT,UPDATE,DELETE
  239. AS
  240. BEGIN
  241. SET NOCOUNT ON;
  242. INSERT INTO tEdukatoriaudit
  243. (AIme,Aprezime,ATitula,AEmail,ATelefon,vrijeme,korisnik)
  244. SELECT E.Ime,E.Prezime,E.Titula,E.Email,E.Telefon,SYSDATETIME(),SYSTEM_USER
  245. FROM Edukatori AS E;
  246. END;
  247.  
  248. --9. Koristeći proceduru za izmjenu zapisa u tabeli Edukatori (Zadatak 3) izmijeniti mail i telefon određenom edukatoru.
  249. SELECT *
  250. FROM Edukatori
  251. GO
  252.  
  253. EXEC IzmjenaEdukatora 5,'David','TheBlack','Mr.','[email protected]',NULL,NULL,NULL,'New street 22'
  254. GO
  255.  
  256. SELECT *
  257. FROM tEdukatoriaudit
  258. GO
  259.  
  260. --10. Uraditi full backup baze podataka na lokaciju D:\DB_Backup.
  261. BACKUP DATABASE [3020]
  262. TO DISK='D:\DB_Backup\3020.bak'
  263. WITH NOFORMAT
Advertisement
Add Comment
Please, Sign In to add comment