Advertisement
limun11

BPII-Parcijalni II vjezba

Jun 16th, 2017
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.68 KB | None | 0 0
  1. /*1. Kroz SQL kod, napraviti bazu podataka koja nosi ime vašeg broja dosijea. U postupku kreiranja u obzir uzeti samo DEFAULT postavke.*/
  2.  
  3. CREATE DATABASE ParcijalniII
  4.  
  5. /*2. U svoju baze podataka putem Import/Export alata prebaciti sljedeće tabele sa podacima:
  6. CreditCard, PersonCreditCard i Person koje se nalaze u AdventureWorks2014 bazi podataka.*/
  7. USE ParcijalniII
  8. GO
  9.  
  10. /*3. Kreiranje indeksa u bazi podataka nada tabelama koje ste importovali u zadatku broj 2:
  11. a) Non-clustered indeks nad tabelom Person. Potrebno je indeksirati Lastname i FirstName. Također, potrebno je uključiti kolonu Title.
  12. b) Napisati proizvoljni upit nad tabelom Person koji u potpunosti iskorištava indeks iz prethodnog koraka
  13. c) Uraditi disable indeksa iz koraka a)
  14. d) Clustered indeks nad tabelom CreditCard i kolonom CreditCardID
  15. e) Non-clustered indeks nad tabelom CreditCard i kolonom CardNumber. Također, potrebno je uključiti kolone ExpMonth i ExpYear.*/
  16. --a
  17. GO
  18. CREATE NONCLUSTERED INDEX index_Zadatak
  19. ON Person.Person (LastName, FirstName)
  20. INCLUDE (Title)
  21. --b
  22. SELECT LastName, FirstName, Title
  23. FROM ParcijalniII.Person.Person
  24. --c
  25. ALTER INDEX index_Zadatak
  26. ON Person.Person
  27. DISABLE
  28. --d
  29. CREATE CLUSTERED INDEX index_Zadatak1
  30. ON Sales.CreditCard (CreditCardID)
  31. --e
  32. CREATE NONCLUSTERED INDEX index_Zadatak2
  33. ON Sales.CreditCard (CardNumber)
  34. INCLUDE (ExpMonth, ExpYear)
  35.  
  36. /*4. Kreirati view sa sljedećom definicijom. Objekat treba da prikazuje: Prezime, ime, broj kartice i tip kartice,
  37. ali samo onim osobama koje imaju karticu tipa Vista i nemaju titulu.*/
  38. ALTER VIEW view_Zadatak
  39. AS 
  40. SELECT  LastName AS Prezime,
  41.         FirstName AS Ime,
  42.         CardType AS [Tip kartice],
  43.         CardNumber AS [Broj kartice]
  44.     FROM Person.Person AS pp
  45.     INNER JOIN Sales.PersonCreditCard AS pcc ON pp.BusinessEntityID = pcc.BusinessEntityID
  46.     INNER JOIN Sales.CreditCard AS scc ON pcc.CreditCardID =scc.CreditCardID
  47.     WHERE scc.CardType='Vista' AND pp.Title IS NULL
  48. SELECT * FROM view_Zadatak
  49.  
  50. /*5. Kreirati uskladištenu proceduru koja vrši modifikaciju prezimena osobe za uneseni BusinessEntityID.
  51. Nakon toga izvršiti proceduru i jednostavnom SELECT komandom provjeriti rezultat.*/
  52. CREATE PROCEDURE usp_modifikacija
  53. (
  54.     @businessEntityID int,
  55.     @prezime nvarchar (35)
  56. )
  57.     AS
  58.     BEGIN
  59.         UPDATE Person.Person
  60.         SET LastName=@prezime
  61.         WHERE BusinessEntityID=@businessEntityID
  62.     END
  63. EXEC usp_modifikacija  
  64.  
  65. SELECT * FROM Person.Person WHERE BusinessEntityID=2190
  66. --lastname: Rapier
  67. EXEC usp_modifikacija @businessEntityID=2190, @prezime='Spaho'
  68.  
  69. /*6. Napraviti full i diferencijalni backup baze podataka na default lokaciju servera:
  70. C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup*/
  71. BACKUP DATABASE ParcijalniII
  72. TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\ParcijalniII.bak'
  73.  
  74. BACKUP DATABASE ParcijalniII
  75. TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\ParcijalniII.bak'
  76. WITH DIFFERENTIAL
  77.  
  78. /*7. Mapirati login sa SQL Server-a pod imenom „student“ u svoju bazu kao korisnika pod svojim imenom.*/
  79. CREATE LOGIN _student
  80. WITH PASSWORD='0512ad'
  81.  
  82. CREATE USER sara FOR LOGIN _student
  83.  
  84. /*8. Kreirati uskladištenu proceduru koja će za uneseno prezime, ime ili broj kartice vršiti pretragu nad prethodno kreiranim
  85. view-om (zadatak 4). Procedura obavezno treba da vraća rezultate bez obzira da li su vrijednosti parametara postavljene.
  86. Testirati ispravnost procedure u sljedećim situacijama:
  87. a) Nije postavljena vrijednost niti jednom parametru (vraća sve zapise)
  88. b) Postavljena je vrijednost parametra prezime, a ostala dva parametra nisu (pretraga po prezimenu)
  89. c) Postavljene su vrijednosti parametara prezime i ime, a broj kartice nije (pretraga po prezimenu i imenu)
  90. d) Postavljene su vrijednosti sva tri parametra (pretraga po svim parametrima)
  91. Također, procedura treba da pretragu prezimena i imena vrši parcijalno (počinje sa).*/
  92. CREATE PROCEDURE usp_unos
  93. (
  94.     @prezime nvarchar (50)=NULL,
  95.     @ime nvarchar (35)=NULL,
  96.     @brojKartice nvarchar (20)=NULL
  97. )
  98. AS
  99.     BEGIN
  100.         SELECT *
  101.         FROM view_Zadatak
  102.         WHERE
  103.         (Prezime LIKE @prezime OR Prezime LIKE @prezime + '%' OR @prezime IS NULL) AND
  104.         (Ime LIKE @ime OR Ime LIKE @ime + '%' OR @ime IS NULL) AND
  105.         ([Broj kartice] LIKE @brojKartice OR [Broj kartice] LIKE @brojKartice + '%' OR @brojKartice IS NULL)
  106.     END;
  107. --a
  108. EXEC usp_unos
  109. --b
  110. EXEC usp_unos @prezime='Huang'
  111. --c
  112. EXEC usp_unos @prezime='Huang', @ime='Laura'
  113. --d
  114. EXEC usp_unos @prezime='Huang', @ime='Laura',@brojKartice='11112693724565'
  115.  
  116. --b
  117. EXEC usp_unos @prezime='H%'
  118. --c
  119. EXEC usp_unos @prezime='H%', @ime='L%'
  120. --d
  121. EXEC usp_unos @prezime='H%', @ime='L%',@brojKartice='11112693724565'
  122. SELECT * FROM view_Zadatak
  123.  
  124. /*9. Kreirati uskladištenu proceduru koje će za uneseni broj kartice vršiti brisanje kreditne kartice (CreditCard).
  125. Također, u istoj proceduri (u okviru jedne transakcije) prethodno obrisati sve zapise o vlasništvu kartice (PersonCreditCard).
  126. Obavezno testirati ispravnost kreirane procedure.*/
  127. CREATE PROCEDURE usp_delete
  128. (
  129.     @brojKartice nvarchar (25)
  130. )
  131.     AS
  132.     BEGIN
  133.         DELETE FROM Sales.PersonCreditCard
  134.         FROM Sales.PersonCreditCard AS pcc
  135.         INNER JOIN Sales.CreditCard AS scc ON pcc.CreditCardID = scc.CreditCardID
  136.         WHERE CardNumber=@brojKartice
  137.  
  138.         DELETE FROM Sales.CreditCard
  139.         WHERE CardNumber=@brojKartice
  140.     END;
  141. EXEC usp_delete 33332664695310
  142. SELECT * FROM Sales.CreditCard
  143.  
  144. /*10. Kreirati trigger koji će spriječiti brisanje zapisa u tabeli PersonCreditCard. Testirati ispravnost kreiranog triggera.*/
  145. CREATE TRIGGER zastita
  146. ON Sales.PersonCreditCard
  147. FOR DELETE
  148.     AS
  149.     PRINT 'Zabranjeno brisanje!!!'
  150.     ROLLBACK;
  151.  
  152. DELETE Sales.PersonCreditCard
  153. SELECT * FROM Sales.PersonCreditCard
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement