Advertisement
eramic

sql upiti vjezba 10

Sep 12th, 2015
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.42 KB | None | 0 0
  1. /* 1. Kreirati bazu podatka sa jednim data i jednim log fajlom.
  2.  Imenovati je Vašim brojem dosijea.
  3.  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.  
  13. CREATE DATABASE [2514]
  14. ON PRIMARY(
  15. NAME = '2514', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\2514.mdf',
  16. SIZE = 5MB, maxsize = unlimited, filegrowth = 10%
  17. )
  18. log ON (
  19. NAME = N'2514_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\2514_log.ldf',
  20. SIZE = 2MB, maxsize = unlimited, filegrowth = 10%
  21. )
  22.  USE [2514]
  23.  
  24.  /*Koristeći SQL::DDL komande kreirati sljedeće tabele i osigurati referencijalni integritet:
  25. Edukatori (Ime, Prezime, Titula, Email, Telefon, CV, Slika)
  26. Predmeti (Naziv, Oznaka, ECTS [int])
  27. EdukatoriPredmeti (Edukator, Predmet, Zvanje, BrojSati)*/
  28.  
  29. DROP TABLE Edukatori
  30. DROP TABLE EdukatoriPredmeti
  31. CREATE TABLE Edukatori(
  32.     EdukatorID INT IDENTITY(1,1) PRIMARY KEY,
  33.     Ime nvarchar(30) NOT NULL,
  34.     Prezime nvarchar(30) NOT NULL,
  35.     Titula nvarchar(20) NULL,
  36.     Email nvarchar(50) NULL,
  37.     Telefon nvarchar(20),
  38.     CV varbinary(MAX) NULL,
  39.     Slika image  NULL
  40. )
  41. CREATE TABLE Predmeti (
  42.     PredmetID INT IDENTITY(1,1) PRIMARY KEY,
  43.     Naziv nvarchar(30) UNIQUE nonclustered NOT NULL,
  44.     Oznaka nvarchar(10) NOT NULL,
  45.     ECTS INT NOT NULL
  46.  )
  47.  
  48.  CREATE TABLE EdukatoriPredmeti(
  49.     EdukatorID INT FOREIGN KEY(EdukatorID) REFERENCES Edukatori(EdukatorID),
  50.     PredmetID INT FOREIGN KEY(PredmetID) REFERENCES Predmeti(PredmetID),
  51.     PRIMARY KEY(EdukatorID,PredmetID),
  52.     zvanje nvarchar(20) NULL,
  53.     BrojSati INT NULL
  54.  )
  55.  
  56.  
  57. /* Također, kreirati tabelu Fakulteti (Naziv, Telefon, Fax)
  58. i povezati je sa prethodno kreiranim tabelama Edukatori i EdukatoriPredmeti.
  59. U tabelu Edukatori dodati polje Adresa. Za polje ECTS u tabeli Predmeti izmijeniti tip podatka u DECIMAL.*/
  60.  
  61. CREATE TABLE Fakulteti(
  62.     FakultetID INT IDENTITY(1,1) PRIMARY KEY,
  63.     Naziv VARCHAR(30) NOT NULL,
  64.     Telefon VARCHAR(20) NULL,
  65.     Fax VARCHAR(20) NULL
  66. )
  67.  
  68. ALTER TABLE Edukatori
  69. ADD FakultetID INT FOREIGN KEY(FakultetID) REFERENCES Fakulteti(FakultetID)
  70.  
  71. ALTER TABLE EdukatoriPredmeti
  72. ADD FakultetID INT FOREIGN KEY (FakultetID) REFERENCES Fakulteti(FakultetID)
  73.  
  74. ALTER TABLE Predmeti
  75. ALTER COLUMN ECTS DECIMAL(18,2)
  76.  
  77.  
  78. /* Kreirati stored proceduru za upis podataka u tabelu Edukatori.
  79. Također, kreirati procedure za izmjenu i brisanje podataka u istoj tabeli.
  80. Koristeći procedure za upis podataka u tabelu dodati 5 novih edukatora. */
  81.  
  82. CREATE PROCEDURE sp_Edukatori_update (
  83.     @EdukatorID INT,
  84.     @Ime nvarchar(30),
  85.     @Prezime nvarchar(30),
  86.     @Titula nvarchar(20) = NULL,
  87.     @Email nvarchar(50) = NULL,
  88.     @Telefon nvarchar(20) = NULL,
  89.     @CV varbinary(MAX) = NULL,
  90.     @Slika image = NULL
  91. )
  92. AS
  93. BEGIN
  94.     UPDATE Edukatori
  95.     SET Ime = @Ime,Prezime=@Prezime,Titula=@Titula,Email=@Email,Telefon=@Telefon,CV=@CV,Slika=@Slika
  96.     WHERE EdukatorID = @EdukatorID
  97. END
  98.  
  99. CREATE PROCEDURE sp_Edukatori_insert (
  100.     @Ime nvarchar(30),
  101.     @Prezime nvarchar(30),
  102.     @Titula nvarchar(20) = NULL,
  103.     @Email nvarchar(50) = NULL,
  104.     @Telefon nvarchar(20) = NULL,
  105.     @CV varbinary(MAX) = NULL,
  106.     @Slika image = NULL
  107. )
  108. AS
  109. BEGIN
  110.     INSERT INTO Edukatori
  111.     VALUES (@Ime,@Prezime,@Titula,@Email,@Telefon,@CV,@Slika)
  112. END
  113.  
  114. CREATE PROCEDURE sp_Edukatori_delete(
  115. @EdukatorId INT
  116. )
  117. AS
  118. DELETE FROM Edukatori WHERE EdukatorID = @EdukatorId
  119.  
  120. EXEC sp_Edukatori_insert 'Edukator1','Prezime1',NULL,NULL,NULL,NULL,NULL
  121. EXEC sp_Edukatori_insert 'Edukator2','Prezime2',NULL,NULL,NULL,NULL,NULL
  122. EXEC sp_Edukatori_insert 'Edukator3','Prezime3',NULL,NULL,NULL,NULL,NULL
  123. EXEC sp_Edukatori_insert 'Edukator4','Prezime4',NULL,NULL,NULL,NULL,NULL
  124. EXEC sp_Edukatori_insert 'Edukator5','Prezime5',NULL,NULL,NULL,NULL,NULL
  125.  
  126. SELECT * FROM Edukatori
  127.  
  128. /*U tabele Predmeti i Fakulteti dodati po 5 zapisa.
  129. Također, u tabelu EduktoriPredmeti dodati proizvoljne podatke
  130. (ko predaje određeni predmet, te na kojem fakultetu).*/
  131.  
  132. INSERT INTO Predmeti
  133. VALUES ('predmet 1', 'p1', 5)
  134.  
  135. INSERT INTO Predmeti
  136. VALUES ('predmet 2', 'p2', 8)
  137.  
  138. INSERT INTO Predmeti
  139. VALUES ('predmet 3', 'p3', 20)
  140.  
  141. INSERT INTO Predmeti
  142. VALUES ('predmet 4', 'p4', 22)
  143.  
  144. INSERT INTO Predmeti
  145. VALUES ('predmet 5', 'p5', 22.5)
  146.  
  147. INSERT INTO Fakulteti
  148. VALUES('Fakultet 1','123456','1123 132')
  149.  
  150. INSERT INTO Fakulteti
  151. VALUES('Fakultet 2','123456','1123 132')
  152. INSERT INTO Fakulteti
  153. VALUES('Fakultet 3','123456','1123 132')
  154. INSERT INTO Fakulteti
  155. VALUES('Fakultet 4','123456','1123 132')
  156. INSERT INTO Fakulteti
  157. VALUES('Fakultet 5','123456','1123 132')
  158.  
  159. INSERT INTO EdukatoriPredmeti
  160. VALUES(1,2,'prof',50 )
  161. INSERT INTO EdukatoriPredmeti
  162. VALUES(1,3,'prof',50 )
  163. INSERT INTO EdukatoriPredmeti
  164. VALUES(1,4,'prof',50 )
  165. INSERT INTO EdukatoriPredmeti
  166. VALUES(3,4,'prof',50 )
  167.  
  168. SELECT * FROM EdukatoriPredmeti
  169.  
  170.  
  171. /*Kreirati pogled (View) koji obuhvata sljedeće podatke:
  172.  ime i prezime edukatora (spojeno), titula, oznaka predmeta, naziv predmeta, broj ECTS kredita, broj sati.*/
  173.  
  174.  CREATE VIEW view_edukatori
  175.  AS
  176.  SELECT Ime + ' ' Prezime, Titula,[Naziv], [ECTS], [BrojSati]
  177.  FROM [dbo].[Edukatori] AS E JOIN EdukatoriPredmeti AS EP ON E.EdukatorID = EP.EdukatorID
  178.   JOIN Predmeti AS P ON EP.PredmetID = P.PredmetID
  179.  
  180.   SELECT * FROM view_edukatori
  181.  
  182.  /* Kreirati stored proceduru koja će na osnovu proslijeđenog parametra
  183.   NazivPredmeta prikazti nastavno osoblje angažovano na predmetu.
  184.   Iskoristiti prethodno kreirani view.
  185.   Izmijeniti prethodno kreiranu stored proceduru tako da prima dva parametra:
  186.   NazivPredmeta i ImePrezime edukatora. U zavisnosti od proslijeđenog/ih parametra,
  187.   procedura treba da prikaže podatke o predmetima i nastavnom osoblju. */
  188.  
  189. CREATE PROCEDURE sp_osoblje_predmeti(
  190.     @NazivPredmeta nvarchar(30)
  191.   )
  192.   AS
  193.  SELECT Ime + ' ' + Prezime, Titula,[Naziv]
  194.  FROM [dbo].[Edukatori] AS E JOIN EdukatoriPredmeti AS EP ON E.EdukatorID = EP.EdukatorID
  195.   JOIN Predmeti AS P ON EP.PredmetID = P.PredmetID
  196.   WHERE P.Naziv LIKE @NazivPredmeta
  197.  
  198.   EXEC sp_osoblje_predmeti 'predmet 3'
  199.  
  200.   CREATE PROCEDURE sp_osoblje_predmeti2(
  201.     @NazivPredmeta nvarchar(30) = NULL,
  202.     @ImePrezime nvarchar(61) = NULL
  203.   )
  204.   AS
  205.  SELECT Ime + ' ' + Prezime, Titula,[Naziv]
  206.  FROM [dbo].[Edukatori] AS E JOIN EdukatoriPredmeti AS EP ON E.EdukatorID = EP.EdukatorID
  207.   JOIN Predmeti AS P ON EP.PredmetID = P.PredmetID
  208.   WHERE (P.Naziv LIKE @NazivPredmeta OR @NazivPredmeta IS NULL) AND
  209.         ((E.Ime + ' ' + Prezime) LIKE @ImePrezime OR @ImePrezime IS NULL)
  210.  
  211.         EXEC sp_osoblje_predmeti2 @ImePrezime = 'Edukator1 Prezime1'
  212.  
  213. /*Koristeći proceduru za brisanje zapisa u tabeli Edukatori (Zadatak 3) obrisati 2 edukatora.
  214. Ukoliko edukatori imaju dodijeljene predmete,
  215. modifikovati proceduru tako da prethodno obriše sve edukatoru dodijeljene predmete,
  216. a zatim obriše zapis iz tabele Edukatori.*/
  217.  
  218. CREATE PROCEDURE sp_Edukatori_delete2(
  219. @EdukatorId INT
  220. )
  221. AS
  222. BEGIN
  223.  
  224. DELETE FROM EdukatoriPredmeti WHERE EdukatoriPredmeti.EdukatorID = @EdukatorId
  225. DELETE FROM Edukatori WHERE Edukatori.EdukatorID = @EdukatorId
  226.  
  227. END
  228.  
  229. SELECT * FROM Edukatori
  230.  
  231. EXEC sp_Edukatori_delete2 1
  232.  
  233. /*Kreirati trigger koji će u tabelu EdukatoriAudit zapisati detalje izmjene podataka nad tabelom Edukatori. */
  234.  
  235. CREATE TRIGGER tr_edukatoriAudit
  236. ON [dbo].[Edukatori]
  237. after UPDATE AS
  238. BEGIN
  239. INSERT INTO  [dbo].[EdukatoriAudit]
  240. ([Korisnik],[Datum],[EdukatorId],[Ime],[Prezime],[Titula],[Email],[Telefon],[CV],[Slika],[Komanda])
  241. SELECT  SYSTEM_USER,
  242.         getdate(),
  243.         d.EdukatorID,
  244.         d.Ime,
  245.         d.Prezime,
  246.         d.Titula,
  247.         d.Email,
  248.         d.Telefon,
  249.         d.CV,
  250.         NULL,
  251.         'update'
  252. FROM deleted AS d
  253.  
  254. END
  255.  
  256. CREATE TABLE EdukatoriAudit
  257. (
  258.     EdukatorAuditID INT IDENTITY(1,1) PRIMARY KEY,
  259.     Korisnik nvarchar(50),
  260.     Datum datetime,
  261.     EdukatorId INT,
  262.     Ime nvarchar(30) NOT NULL,
  263.     Prezime nvarchar(30) NOT NULL,
  264.     Titula nvarchar(20) NULL,
  265.     Email nvarchar(50) NULL,
  266.     Telefon nvarchar(20),
  267.     CV varbinary(MAX) NULL,
  268.     Slika image  NULL
  269. )
  270.  
  271. SELECT * FROM Edukatori
  272.  
  273. /*
  274. Koristeći proceduru za izmjenu zapisa u tabeli Edukatori (Zadatak 3) izmijeniti mail i telefon određenom edukatoru. */
  275.  
  276. EXEC sp_Edukatori_update 2,'Edukator','Prazime',NULL,'bla@bla.ba','21231321',NULL,NULL
  277.  
  278. /*Uraditi full backup baze podataka na lokaciju D:\DB_Backup.*/
  279. BACKUP DATABASE [2514]
  280. TO DISK='D:\DB_Backup\3020.bak'
  281. WITH NOFORMAT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement