Advertisement
eramic

ISPIT DBMS 04.07.15

Sep 12th, 2015
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.42 KB | None | 0 0
  1. /* Iz baze podataka AdventureWorks2014 prikazati sve kupce koji su u maju mjesecu 2014.
  2. godine naručili proizvod Front Brakes u količini većoj od 5 komada. */
  3.  
  4. USE AdventureWorks2014
  5.  
  6. SELECT P.FirstName,P.LastName,PR.Name,SOH.OrderDate,SOD.OrderQty
  7. FROM Person.Person AS P JOIN Sales.Customer AS C ON P.BusinessEntityID = C.PersonID
  8.     JOIN Sales.SalesOrderHeader AS SOH ON C.CustomerID = SOH.CustomerID
  9.     JOIN Sales.SalesOrderDetail AS SOD ON SOH.SalesOrderID = SOD.SalesOrderID
  10.     JOIN Production.Product AS PR ON SOD.ProductID = PR.ProductID
  11. WHERE YEAR(SOH.OrderDate) = 2014 AND MONTH(SOH.OrderDate) = 05 AND PR.Name LIKE '%Front Brakes%' AND SOD.OrderQty>5
  12.  
  13.  
  14. /*Iz baze podataka AdventureWorks2014 prikazati 5 najprodavanijih (količina prodaje)
  15.  planinskih bicikala (Mountain Bikes) na području Kanade.*/
  16.  
  17. SELECT top 5 P.Name, SUM(SOD.OrderQty) AS kolicina, ST.Name
  18. FROM Production.Product AS P JOIN Production.ProductSubcategory AS PS ON P.ProductSubcategoryID = PS.ProductCategoryID
  19.         JOIN Sales.SalesOrderDetail AS SOD ON P.ProductID = SOD.ProductID
  20.         JOIN Sales.SalesOrderHeader AS SOH ON SOD.SalesOrderID = SOH.SalesOrderID
  21.         JOIN Sales.SalesTerritory AS ST ON SOH.TerritoryID = ST.TerritoryID
  22. WHERE PS.Name LIKE 'Mountain Bikes' AND ST.Name = 'Canada'
  23. GROUP BY P.Name, ST.Name
  24. ORDER BY kolicina DESC
  25.  
  26. /*Kreirati bazu podataka koju ćete imenovati Vašim brojem dosijea. Fajlove baze smjestiti na sljedeće lokacije:
  27.  - Data fajl -> D:\DBMS\Data
  28.  - Log fajl -> D:\DBMS\Log*/
  29.  
  30.  CREATE DATABASE [2514] ON PRIMARY
  31.  (
  32.  NAME = '2514',
  33.  FILENAME = 'c:\DBMS\2514.mdf',
  34.  SIZE = 5MB,
  35.  MAXSIZE = UNLIMITED,
  36.  FILEGROWTH = 10%
  37.  )
  38.  LOG ON
  39.  (
  40.  NAME = '2514_log',
  41.  FILENAME = 'c:\DBMS\2514log.ldf',
  42.  SIZE = 5MB,
  43.  MAXSIZE = UNLIMITED,
  44.  FILEGROWTH = 10%
  45.  )
  46.  
  47.  /* U bazi podataka kreirati sljedeće tabele:
  48. a. Klijenti
  49. - JMBG, polje za unos 13 karaktera (obavezan unos i jedinstvena vrijednost),
  50. - Ime, polje za unos 30 karaktera (obavezan unos),
  51. - Prezime, polje za unos 30 karaktera (obavezan unos),
  52. - Adresa, polje za unos 100 karaktera (obavezan unos),
  53. - Telefon, polje za unos 20 karaktera (obavezan unos),
  54. - Email, polje za unos 50 karaktera (jedinstvena vrijednost),
  55. - Kompanija, polje za unos 50 karaktera.*/
  56.  
  57. CREATE TABLE Klijenti(
  58.     KlijentID INT IDENTITY(1,1) PRIMARY KEY,
  59.     JMBG VARCHAR(13) UNIQUE nonclustered NOT NULL,
  60.     Ime nvarchar(30) NOT NULL,
  61.     Prezime nvarchar(30) NOT NULL,
  62.     Adresa nvarchar(100) NOT NULL,
  63.     Telefon nvarchar(20) NOT NULL,
  64.     Email nvarchar(50) UNIQUE nonclustered,
  65.     Kompanija nvarchar(50)
  66. )
  67.  
  68.  
  69. /* Krediti
  70. - Datum, polje za unos datuma (obavezan unos),
  71. - Namjena, polje za unos 50 karaktera (obavezan unos),
  72. - Iznos, polje za decimalnog broja (obavezan unos),
  73. - BrojRata, polje za unos cijelog broja (obavezan unos),
  74. - Osiguran, polje za unos bit vrijednosti (obavezan unos),
  75. - Opis, polje za unos dužeg niza karaktera. */
  76.  
  77. CREATE TABLE Krediti(
  78.     KreditID INT IDENTITY (1,1) PRIMARY KEY,
  79.     Datum DATE NOT NULL,
  80.     Iznos DECIMAL(18,2) NOT NULL,
  81.     BrojRata INT NOT NULL,
  82.     Osiguran BIT NOT NULL,
  83.     Opis nvarchar(300)
  84. )
  85.  
  86. /*Otplate
  87.  Datum, polje za unos datuma (obavezan unos)
  88.  Iznos, polje za unos decimalnog broja (obavezan unos),
  89.  Rata, polje za unos cijelog broja (obavezan unos),
  90.  Opis, polje za unos dužeg niza karaktera. */
  91.  
  92. CREATE TABLE Otplate(
  93.     KreditID INT FOREIGN KEY(KreditID) REFERENCES Krediti(KreditID),
  94.     KlijentID INT FOREIGN KEY(KlijentID) REFERENCES Klijenti(KlijentID),
  95.     PRIMARY KEY (KreditID,KlijentID),
  96.     Datum DATE NOT NULL,
  97.     Iznos DECIMAL(18,2) NOT NULL,
  98.     Rata INT NOT NULL,
  99.     Opis nvarchar(300)
  100. )
  101.  
  102.  
  103. /*Koristeći AdventureWorks2014 bazu podataka, importovati 10 kupaca u tabelu Klijenti i to sljedeće kolone:
  104. a. Zadnjih 13 karaktera kolone rowguid (Crticu '-' zamijeniti brojem 1)-> JMBG,
  105. b. FirstName (Person) -> Ime,
  106. c. LastName (Person) -> Prezime,
  107. d. AddressLine1 (Address) -> Adresa,
  108. e. PhoneNumber (PersonPhone) -> Telefon,
  109. f. EmailAddress (EmailAddress) -> Email,
  110. g. 'FIT' -> Kompanija
  111. Također, u tabelu Krediti unijeti minimalno tri zapisa sa proizvoljnim podacima.*/
  112.  
  113. INSERT INTO Klijenti(JMBG,Ime,Prezime,Adresa,Telefon,Email, Kompanija)
  114. SELECT top 10
  115.         REPLACE(RIGHT(P.[rowguid],13),'-','1' ),
  116.         FirstName,
  117.         LastName,
  118.         AddressLine1,
  119.         PhoneNumber,
  120.         EmailAddress,
  121.         'FIT'
  122.        
  123. FROM AdventureWorks2014.Person.Person AS P JOIN AdventureWorks2014.Person.BusinessEntityAddress  AS PBA
  124.         ON P.BusinessEntityID =  PBA.BusinessEntityID JOIN AdventureWorks2014.Person.Address AS PA ON
  125.         PBA.AddressID = PA.AddressID JOIN AdventureWorks2014.Person.PersonPhone PHONE ON
  126.         P.BusinessEntityID = PHONE.BusinessEntityID JOIN AdventureWorks2014.Person.EmailAddress AS EM ON
  127.         P.BusinessEntityID = EM.BusinessEntityID
  128.  
  129. SELECT * FROM Klijenti
  130.  
  131. INSERT INTO Krediti(Datum,Iznos,BrojRata,Osiguran,Opis)
  132. VALUES ('2011-03-03',100000,10,1,'Super kredit')
  133.  
  134. INSERT INTO Krediti(Datum,Iznos,BrojRata,Osiguran,Opis)
  135. VALUES ('2012-03-03',200000,20,1,'Extra ponuda')
  136.  
  137. INSERT INTO Krediti(Datum,Iznos,BrojRata,Osiguran,Opis)
  138. VALUES ('2014-03-03',300000,30,1,'Tristo hiljada ')
  139.  
  140. SELECT * FROM Krediti
  141.  
  142. /*Kreirati stored proceduru koja će na osnovu proslijeđenih parametara služiti za unos podataka u tabelu Otplate.
  143. Proceduru pohraniti pod nazivom usp_Otplate_Insert.
  144.  Obavezno testirati ispravnost kreirane procedure (unijeti minimalno 5 zapisa sa proizvoljnim podacima).*/
  145.  
  146.  CREATE PROCEDURE usp_Otplate_Isert(
  147.     @KreditID INT,
  148.     @KlijentID INT,
  149.     @Datum DATE,
  150.     @Iznos DECIMAL(18,2),
  151.     @Rata INT,
  152.     @Opis nvarchar(300)
  153.  )
  154.  AS
  155.  BEGIN
  156.  INSERT INTO Otplate(KreditID,KlijentID,Datum,Iznos,Rata,Opis)
  157.  VALUES (@KreditID,@KlijentID,@Datum,@Iznos,@Rata,@Opis)
  158.  END
  159.  
  160.  EXEC usp_Otplate_Isert 2,1,'2014-05-06',100000,10,'Dugorocni kredit'
  161.  
  162.  /*Kreirati view (pogled) nad podacima koji će prikazivati sljedeća polja:
  163.  jmbg, ime i prezime, adresa, telefon i email klijenta, zatim datum, namjenu i iznos kredita,
  164.  te ukupan broj otplaćenih rata i ukupan otplaćeni iznos. View pohranite pod nazivom view_Krediti_Otplate.*/
  165.  
  166.  ALTER VIEW view_Krediti_Otplate
  167.  AS
  168.  SELECT [JMBG],[Prezime],[Adresa],[Telefon],[Email],O.[Datum],O.[Opis],O.[Iznos],
  169.  datediff(mm,O.[Datum],getdate()) AS 'broj rata',datediff(mm,O.[Datum],getdate()) * [Rata] AS 'otplaceni iznos'
  170.  FROM Klijenti AS K JOIN Otplate AS O ON K.KlijentID = O.KlijentID JOIN Krediti AS KR ON O.KreditID = KR.KreditID
  171.  
  172.  SELECT * FROM view_Krediti_Otplate
  173.  
  174.  /*Kreirati stored proceduru koja će na osnovu proslijeđenog parametra @JMBG
  175.  prikazivati podatke o otplati kredita. Kao izvor podataka koristiti prethodno kreirani view.
  176.  Proceduru pohraniti pod nazivom usp_Krediti_Otplate_SelectByJMBG. Obavezno testirati ispravnost kreirane procedure.*/
  177.  
  178.  CREATE PROCEDURE usp_Krediti_Otplate_SelectByJMBG(@JMBG VARCHAR(13) )
  179.  AS
  180.  SELECT * FROM view_Krediti_Otplate
  181.  WHERE JMBG = @JMBG
  182.  
  183.  EXEC usp_Krediti_Otplate_SelectByJMBG '1EF6D13AFCBC6'
  184.  
  185.  /*Kreirati proceduru koja će služiti za izmjenu podataka o otplati kredita.
  186.  Proceduru pohraniti pod nazivom usp_Otplate_Update.
  187.  \ Obavezno testirati ispravnost kreirane procedure. */
  188.  
  189.  CREATE PROCEDURE usp_Otplate_Update(
  190.     @KreditID INT,
  191.     @KlijentID INT,
  192.     @Datum DATE,
  193.     @Iznos DECIMAL(18,2),
  194.     @Rata INT,
  195.     @Opis nvarchar(300)
  196.  )
  197.  AS
  198.  BEGIN
  199.  UPDATE Otplate
  200.  SET Datum = @Datum,Iznos = @Iznos,Rata = @Rata,Opis = @Opis
  201.  WHERE KreditID = @KreditID AND KlijentID = @KlijentID
  202.  END
  203.  
  204.  SELECT * FROM Otplate
  205.  
  206.  EXEC usp_Otplate_Update 2,1,'2014-05-05',200000,5000,'opis otplate'
  207.  
  208.  /*Kreirati stored proceduru koja će služiti za brisanje kredita zajedno sa svim otplatama.
  209.  Proceduru pohranite pod nazivom usp_Krediti_Delete. Obavezno testirati ispravnost kreirane procedure. */
  210.  
  211.  CREATE PROCEDURE usp_Krediti_Delete(
  212.     @KreditID INT
  213.  ) AS
  214.  BEGIN
  215.  
  216.  DELETE FROM Otplate
  217.  WHERE KreditID = @KreditID
  218.  DELETE FROM Krediti
  219.  WHERE KreditID = @KreditID
  220.  
  221.  END
  222.  
  223.  SELECT * FROM Otplate
  224.  
  225.  EXEC usp_Krediti_Delete 2
  226.  
  227.  /*Kreirati trigger koji će spriječiti brisanje zapisa u tabeli Otplate.
  228.   Trigger pohranite pod nazivom tr_Otplate_IO_Delete.
  229.   Obavezno testirati ispravnost kreiranog triggera. */
  230.  
  231.   CREATE TRIGGER tr_Otplate_IO_Delete ON Otplate
  232.   FOR DELETE AS
  233.   BEGIN
  234.   print'nema brisanja'
  235.   ROLLBACK
  236.   END
  237.  
  238.   SELECT * FROM Otplate
  239.  
  240.   EXEC usp_Otplate_Isert 3,3,'2013-02-03',10000,100,'bla bla'
  241.  
  242.   DELETE FROM Otplate
  243.  
  244.  /* Uraditi full backup Vaše baze podataka na lokaciju D:\DBMS\Backup.*/
  245.  
  246.  backup DATABASE [2514]
  247.  TO disk = 'c:\DBMS\2514.bak'
  248.  WITH noformat
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement