limun11

Septembarski rok

Jan 19th, 2017
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.35 KB | None | 0 0
  1. CREATE DATABASE sara1901
  2. ON
  3. (NAME=sara1901_dat, FILENAME='C:\BP2\DATA\sara1901.mdf', SIZE=20MB, MAXSIZE=UNLIMITED, FILEGROWTH=10%)
  4. LOG ON
  5. (NAME=sara1901_log, FILENAME='C:\BP2\LOG\sara1901.ldf', SIZE=2MB, MAXSIZE=UNLIMITED, FILEGROWTH=5%)
  6.  
  7. USE sara1901
  8. GO
  9. CREATE TABLE Klijenti
  10. (
  11. KlijentID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  12. Ime nvarchar (30) NOT NULL,
  13. Prezime nvarchar(30) NOT NULL,
  14. Telefon nvarchar (20) NOT NULL,
  15. Mail nvarchar (50) UNIQUE NOT NULL,
  16. BrojRacuna nvarchar (15) NOT NULL,
  17. KorisnickoIme nvarchar (20) NOT NULL,
  18. Lozinka nvarchar (20) NOT NULL
  19. );
  20.  
  21. GO
  22. CREATE TABLE Transakcije
  23. (
  24. TransakcijaID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  25. Datum SMALLDATETIME NOT NULL,
  26. TipTransakcije nvarchar (30) NOT NULL,
  27. PosiljalacID int FOREIGN KEY REFERENCES Klijenti (KlijentID) NOT NULL,
  28. PrimalacID int FOREIGN KEY REFERENCES Klijenti (KlijentID) NOT NULL,
  29. Svrha nvarchar (50) NOT NULL,
  30. Iznos decimal NOT NULL
  31. );
  32.  
  33. /*Popunjavanje tabela podacima:
  34. a) Koristeći bazu podataka AdventureWorks2014,
  35. preko INSERT i SELECT komande importovati 10 kupaca u tabelu Klijenti.
  36. Ime, prezime, telefon, mail i broj računa (AccountNumber) preuzeti od kupca,
  37. korisničko ime generisati na osnovu imena i prezimena u formatu ime.prezime,
  38. a lozinku generisati na osnovu polja PasswordHash, i to uzeti samo zadnjih 8 karaktera.*/
  39.  
  40. GO
  41. INSERT INTO Klijenti
  42. (Ime, Prezime, Telefon, Mail, BrojRacuna, KorisnickoIme, Lozinka)
  43. SELECT TOP 10
  44. pp.FirstName AS [ime],
  45. pp.LastName AS [prezime],
  46. ppp.PhoneNumber AS [telefon],
  47. pea.EmailAddress AS [mail],
  48. sc.AccountNumber AS [broj racuna],
  49. pp.FirstName + '.' + pp.LastName AS [korisnicko ime],
  50. RIGHT(ppass.PasswordHash,8) AS [lozinka]
  51. FROM AdventureWorks2014.Person.Person AS pp
  52. INNER JOIN AdventureWorks2014.Person.PersonPhone AS ppp ON pp.BusinessEntityID=ppp.BusinessEntityID
  53. INNER JOIN AdventureWorks2014.Person.EmailAddress AS pea ON pp.BusinessEntityID=pea.BusinessEntityID
  54. INNER JOIN AdventureWorks2014.Sales.Customer AS sc ON pp.BusinessEntityID=sc.PersonID
  55. INNER JOIN AdventureWorks2014.Person.Password AS ppass ON pp.BusinessEntityID=ppass.BusinessEntityID
  56.  
  57. SELECT RIGHT(PasswordHash,8)
  58. FROM AdventureWorks2014.Person.Password
  59.  
  60. SELECT AccountNumber
  61. FROM AdventureWorks2014.Sales.Customer
  62.  
  63. SELECT *
  64. FROM Klijenti
  65. /*b) Putem jedne INSERT komande u tabelu Transakcije dodati minimalno 10 transakcija.*/
  66. GO
  67. INSERT INTO Transakcije (Datum, TipTransakcije, PosiljalacID, PrimalacID, Svrha, Iznos)
  68. VALUES
  69. ('2016-10-31 18:05:00', 'povrat','2', '2', 'kupovina', '1021'),
  70. ('2014-10-31 19:05:00', 'povrat','1', '1', 'kupovina', '1001'),
  71. ('2015-08-14 18:06:01', 'uplata','2', '2', 'rata', '205'),
  72. ('2015-12-26 15:07:12', 'povrat','3', '3', 'kupovina', '333'),
  73. ('2017-01-19 16:45:31', 'povrat','1', '1', 'kupovina', '11'),
  74. ('2013-01-01 19:05:00', 'povrat','1', '1', 'kupovina', '10'),
  75. ('2014-02-02 18:06:01', 'uplata','2', '2', 'rata', '20'),
  76. ('2015-03-03 15:07:12', 'povrat','3', '3', 'kupovina', '3'),
  77. ('2016-04-01 19:14:53', 'uplata','4', '4', 'rata', '50'),
  78. ('2013-11-11 11:15:00', 'povrat','1', '1', 'kupovina', '100')
  79.  
  80. SELECT *
  81. FROM Transakcije
  82.  
  83. /*3. Kreiranje indeksa u bazi podataka nada tabelama:
  84. a) Non-clustered indeks nad tabelom Klijenti.
  85. Potrebno je indeksirati Ime i Prezime. Također, potrebno je uključiti kolonu BrojRacuna.
  86. */
  87. GO
  88. CREATE NONCLUSTERED INDEX Klijenti_index
  89. ON Klijenti (Ime, Prezime)
  90. INCLUDE (BrojRacuna)
  91. /*b) Napisati proizvoljni upit nad tabelom Klijenti koji u potpunosti iskorištava indeks iz prethodnog koraka.
  92. Upit obavezno mora imati filter.*/
  93. GO
  94. SELECT Ime, Prezime, BrojRacuna
  95. FROM Klijenti
  96.  
  97. /*c) Uraditi disable indeksa iz koraka a)*/
  98. GO
  99. ALTER INDEX Klijenti_index
  100. ON Klijenti
  101. DISABLE;
  102.  
  103. /*4. Kreirati uskladištenu proceduru koja će vršiti upis novih klijenata.
  104. Kao parametre proslijediti sva polja. Provjeriti ispravnost kreirane procedure.*/
  105. CREATE PROCEDURE Upis
  106. @imeklijenta nvarchar (30),
  107. @prezimeKlijenta nvarchar (30),
  108. @telefonKlijenta nvarchar (20),
  109. @mailKlijenta nvarchar (50),
  110. @brojRacunaKlijenta nvarchar (15),
  111. @korisnickoImeKlijenta nvarchar (20),
  112. @lozinkaKlijenta nvarchar (20)
  113. AS
  114. BEGIN
  115. INSERT INTO Klijenti
  116. (Ime, Prezime, Telefon, Mail, BrojRacuna, KorisnickoIme, Lozinka)
  117. VALUES
  118. (@imeklijenta, @prezimeKlijenta, @telefonKlijenta, @mailKlijenta,@brojRacunaKlijenta,
  119. @korisnickoImeKlijenta,@lozinkaKlijenta)
  120. END;
  121.  
  122. EXECUTE Upis 'Sara', 'Saric' ,'033222111', '[email protected]', '11AA', 'sara.saric','sara123-'
  123.  
  124. SELECT *
  125. FROM Klijenti
  126.  
  127. /*5. Kreirati view sa sljedećom definicijom.
  128. Objekat treba da prikazuje datum transakcije, tip transakcije, ime i prezime pošiljaoca (spojeno),
  129. broj računa pošiljaoca, ime i prezime primaoca (spojeno), broj računa primaoca, svrhu i iznos transakcije.*/
  130. GO
  131. CREATE VIEW Pogled
  132. AS
  133. SELECT t.Datum,
  134. t.TipTransakcije,
  135. kposiljalac.Ime+''+kposiljalac.Prezime AS [ime i prezime pošiljaoca],
  136. kposiljalac.BrojRacuna AS [broj računa pošiljaoca],
  137. kprimaoc.Ime+''+kprimaoc.Prezime AS [ime i prezime primaoca],
  138. kprimaoc.BrojRacuna AS [broj računa primaoca],
  139. t.Svrha,
  140. t.Iznos
  141. FROM Transakcije AS t
  142. INNER JOIN Klijenti AS kposiljalac ON t.PosiljalacID=kposiljalac.KlijentID
  143. INNER JOIN Klijenti AS kprimaoc ON t.PrimalacID=kprimaoc.KlijentID
  144.  
  145. /*6.reirati uskladištenu proceduru koja će na osnovu unesenog broja računa pošiljaoca prikazivati
  146. sve transakcije koje su provedene sa računa klijenta. U proceduri koristiti prethodno kreirani view.
  147. Provjeriti ispravnost kreirane procedure.*/
  148. CREATE PROCEDURE UnosRacuna
  149. @brojRacunaPosiljaoca nvarchar (30)
  150. AS
  151. BEGIN
  152. SELECT Pogled.[ime i prezime pošiljaoca],
  153. Pogled.Datum,
  154. Pogled.Iznos,
  155. Pogled.Svrha,
  156. Pogled.TipTransakcije
  157. FROM Pogled
  158. WHERE Pogled.[broj računa pošiljaoca]=@brojRacunaPosiljaoca
  159. END;
  160.  
  161. EXECUTE UnosRacuna 'AW00011062'
  162.  
  163. SELECT BrojRacuna
  164. FROM Klijenti
  165.  
  166. /*7. Kreirati upit koji prikazuje sumaran iznos svih transakcija po godinama,
  167. sortirano po godinama. U rezultatu upita prikazati samo dvije kolone:
  168. kalendarska godina i ukupan iznos transakcija u godini.*/
  169.  
  170. SELECT SUM(Iznos) AS [ukupan iznos transakcija u godini],
  171. DATEPART(YYYY, Datum) AS [kalendarska godina]
  172. FROM Transakcije
  173. GROUP BY Datum
  174. ORDER BY Datum DESC
  175.  
  176. /*8. Kreirati uskladištenu proceduru koje će vršiti brisanje klijenta uključujući sve njegove transakcije,
  177. bilo da je za transakciju vezan kao pošiljalac ili kao primalac. Provjeriti ispravnost kreirane procedure.*/
  178. CREATE PROCEDURE BrisanjeKlijenata
  179. @kkkk nvarchar(30)
  180. AS
  181. BEGIN
  182.  
  183. END;
  184. /*9. Kreirati uskladištenu proceduru koja će na osnovu unesenog broja računa ili prezimena pošiljaoca vršiti
  185. pretragu nad prethodno kreiranim view-om (zadatak 5). Testirati ispravnost procedure u sljedećim situacijama:
  186. a) Nije postavljena vrijednost niti jednom parametru (vraća sve zapise)
  187. b) Postavljena je vrijednost parametra broj računa,
  188. c) Postavljena je vrijednost parametra prezime,
  189. d) Postavljene su vrijednosti oba parametra.*/
  190. CREATE PROCEDURE Pretraga
  191. @brojRacunPosiljaoca nvarchar (30) ='',
  192. @prezimePosiljaoca nvarchar (30)=''
  193. AS
  194. BEGIN
  195.  
  196. SELECT*
  197. FROM Pogled
  198. WHERE Pogled.[broj računa pošiljaoca] LIKE @brojRacunPosiljaoca
  199. OR Pogled.[ime i prezime pošiljaoca] LIKE @prezimePosiljaoca
  200. END;
  201.  
  202. ALTER PROCEDURE Pretraga
  203. @brojRacunPosiljaoca nvarchar (30) ='',
  204. @prezimePosiljaoca nvarchar (30)=''
  205. AS
  206. BEGIN
  207.  
  208. SELECT*
  209. FROM Pogled
  210. WHERE Pogled.[broj računa pošiljaoca] LIKE @brojRacunPosiljaoca
  211. OR Pogled.[ime i prezime pošiljaoca] LIKE @prezimePosiljaoca
  212. END;
  213.  
  214. --a) Nije postavljena vrijednost niti jednom parametru (vraća sve zapise)
  215. EXECUTE Pretraga
  216. --ne radi
  217.  
  218. --b) Postavljena je vrijednost parametra broj računa,
  219. EXECUTE Pretraga 'AW00011062'
  220.  
  221. --c) Postavljena je vrijednost parametra prezime,
  222. EXECUTE Pretraga 'NoahPowell'
  223. --ne radi
  224.  
  225. --d) Postavljene su vrijednosti oba parametra.
  226. EXECUTE Pretraga @brojRacunPosiljaoca='AW00011062' , @prezimePosiljaoca='NoahPowell'
  227.  
  228.  
  229. /*10. Napraviti full i diferencijalni backup baze podataka na default lokaciju servera:
  230. a) C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup*/
  231.  
  232. BACKUP DATABASE sara1901
  233. TO DISK ='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\sara1901.bak'
  234.  
  235. BACKUP DATABASE sara1901
  236. TO DISK ='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\sara1901.bak'
  237. WITH DIFFERENTIAL
Advertisement
Add Comment
Please, Sign In to add comment