Advertisement
limun11

BPII - Parcijalni I

Apr 4th, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 7.34 KB | None | 0 0
  1. /*1. Kreirati novu bazu podataka i imenovati imenovati vašim brojem indexa.
  2. Postavke za data fajl:
  3.  Lokacija: C:\BP2\Data
  4.  Veličina: inicijalno 5 MB,
  5.  Maksimalna veličina: Bez ograničenja
  6.  Uvećanje: 10%
  7. Postavke za log fajl:
  8.  Lokacija: C:\BP2\Log
  9.  Veličina: inicijalno 2 MB, maksimalna veličina neograničena
  10.  Maksimalna veličina: Bez ograničenja
  11.  Uvećanje: 5%*/
  12.  
  13. CREATE DATABASE ParcijalniI
  14. ON
  15. (NAME=IB140261_dat, FILENAME='C:\BP2\DATA\ParcijalniI.mdf', SIZE=5MB, MAXSIZE=UNLIMITED, FILEGROWTH=10%)
  16. LOG ON
  17. (NAME=IB140261_log, FILENAME='C:\BP2\LOG\ParcijalniI.ldf', SIZE=2 MB, MAXSIZE=UNLIMITED, FILEGROWTH=5%)
  18.  
  19. /*2. U bazi podataka kreirati sljedeće tabele:
  20.  Kandidati
  21.  Ime, polje za unos 30 karaktera (obavezan unos),
  22.  Prezime, polje za unos 30 karaktera (obavezan unos),
  23.  JMBG, polje za unos 13 karaktera (obavezan unos i jedinstvena vrijednost),
  24.  DatumRodjenja, polje za unos datuma (obavezan unos),
  25.  MjestoRodjenja, polje za unos 30 karaktera,
  26.  Telefon, polje za unos 20 karaktera,
  27.  Email, polje za unos 50 karaktera (jedinstvena vrijednost).*/
  28.  
  29. USE ParcijalniI
  30. GO
  31.  
  32. CREATE TABLE Kandidati
  33. (
  34. KandidatID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  35. Ime nvarchar (30) NOT NULL,
  36. Prezime nvarchar (30) NOT NULL,
  37. JMBG nvarchar (13) UNIQUE NOT NULL,
  38. DatumRodjenja date NOT NULL,
  39. MjestoRodjenja nvarchar(30),
  40. Telefon nvarchar (20),
  41. Email nvarchar (50) UNIQUE
  42. );
  43. /*Testovi
  44.  Datum, polje za unos datuma i vremena (obavezan unos),
  45.  Naziv, polje za unos 50 karaktera (obavezan unos),
  46.  Oznaka, polje za unos 10 karaktera (obavezan unos i jedinstvena vrijednost),
  47.  Oblast, polje za unos 50 karaktera (obavezan unos),
  48.  MaxBrojBodova, polje za unos cijelog broja (obavezan unos),
  49.  Opis, polje za unos 250 karaktera.*/
  50. CREATE TABLE Testovi
  51. (
  52. TestID int IDENTITY (1,1) PRIMARY KEY NOT NULL,
  53. Datum datetime NOT NULL,
  54. Naziv nvarchar (50) NOT NULL,
  55. Oznaka nvarchar (10) UNIQUE NOT NULL,
  56. Oblast nvarchar (50) NOT NULL,
  57. MaxBrojBodova int NOT NULL,
  58. Opis nvarchar (250)
  59. );
  60. /*RezultatiTesta
  61.  Polozio, polje za unos ishoda testiranja – DA/NE (obavezan unos)
  62.  OsvojeniBodovi, polje za unos decimalnog broja (obavezan unos),
  63.  Napomena, polje za unos dužeg niza karaktera.
  64. Napomena: Kandidat može da polaže više testova i za svaki test ostvari određene rezultate, pri čemu kandidat ne može
  65. dva puta polagati isti test. Također, isti test može polagati više kandidata.*/
  66. CREATE TABLE RezultatiTesta
  67. (
  68. KandidatID int FOREIGN KEY REFERENCES Kandidati (KandidatID),
  69. TestID int FOREIGN KEY REFERENCES Testovi (TestID),
  70. Polozio bit NOT NULL,
  71. OsvojeniBodovi decimal NOT NULL,
  72. Napomena text
  73. )
  74.  
  75. /*3. Kreirati referentnu tabelu Gradovi i vezati je sa tabelom Kandidati. Također, u tabelu Kandidati dodati polje Adresa.*/
  76. CREATE TABLE Gradovi
  77. (
  78. GradID int IDENTITY(1,1) PRIMARY KEY NOT NULL,
  79. Naziv nvarchar(50)
  80. )
  81.  
  82. ALTER TABLE Kandidati ADD GradID INT CONSTRAINT FK_Kandidati_Gradovi FOREIGN KEY (GradID) REFERENCES Gradovi (GradID)
  83.  
  84. ALTER TABLE Kandidati
  85. ADD Adresa nvarchar (30)
  86.  
  87.  
  88. /*4. U tabelu Kandidati importovati 10 kupaca iz baze podataka AdventureWorks2014 i to sljedeće kolone:
  89.  FirstName (Person) -> Ime,
  90.  LastName (Person) -> Prezime,
  91.  Zadnjih 13 karaktera kolone rowguid iz tabele Customer (Crticu zamijeniti brojem 0) -> JMBG,
  92.  ModifiedDate (Customer) -> DatumRodjenja,
  93.  City (Address) -> MjestoRodjenja,
  94.  PhoneNumber (PersonPhone) -> Telefon,
  95.  EmailAddress (EmailAddress) -> Email.*/
  96.  
  97. INSERT INTO Kandidati (Ime, Prezime, JMBG, DatumRodjenja, MjestoRodjenja, Telefon, Email)
  98. SELECT TOP 10 pp.FirstName AS [Ime],
  99.         pp.LastName AS [Prezime],
  100.         REPLACE(RIGHT(pp.rowguid, 13), '-', '0') AS [JMBG],
  101.         pp.ModifiedDate AS [Datum rodjenja],
  102.         ppa.City AS [Mjesto rodjenja],
  103.         ppp.PhoneNumber AS [Telefon],
  104.         pea.EmailAddress AS [Email]
  105. FROM AdventureWorks2014.Person. Person AS pp
  106. INNER JOIN AdventureWorks2014.Person.PersonPhone AS ppp ON pp.BusinessEntityID=ppp.BusinessEntityID
  107. INNER JOIN AdventureWorks2014.Person.EmailAddress AS pea ON pp.BusinessEntityID=pea.BusinessEntityID
  108. INNER JOIN AdventureWorks2014.Person.Address AS ppa ON pp.BusinessEntityID=ppa.AddressID
  109.  
  110. SELECT * FROM Kandidati
  111.  
  112. --SELECT REPLACE(RIGHT(pp.rowguid, 13), '-', '0'),CONVERT(varchar, pp.ModifiedDate, 104)  FROM AdventureWorks2014.Person.Person AS pp
  113.  
  114. /*5. U tabelu Testovi unijeti minimalno 3 zapisa, a zatim u tabelu RezultatiTesta unijeti minimalno 10 zapisa.*/
  115. INSERT INTO Testovi (Datum, Naziv, Oznaka, Oblast, MaxBrojBodova, Opis)
  116. VALUES
  117. ('2011-11-11 11:11:11', 'Bosansi', 'Bos', 'Jezicka', '100' , 'Ovo je test iz bosanskog jezika'),
  118. ('2010-10-10 10:10:10', 'Matematika', 'Mat', 'Tehnicka', '80', 'Ovo je test iz matematike'),
  119. ('2012-12-12 12:12:12', 'Priroda', 'Pri', 'Prirodna', '60', 'Ovo je test iz prirode')
  120. SELECT * FROM Testovi
  121. SELECT * FROM Kandidati
  122.  
  123. INSERT INTO RezultatiTesta (KandidatID, TestID, Polozio, OsvojeniBodovi, Napomena)
  124. VALUES
  125. ('8', '1', '1', '60', 'Polozio'),
  126. ('9', '1', '0', '25', 'Pao'),
  127. ('10', '1', '1', '50', 'Polozio'),
  128. ('11', '2', '1', '75', 'Polozio'),
  129. ('12', '2', '0', '10', 'Pao'),
  130. ('13', '2', '1', '50', 'Polozio'),
  131. ('14', '3', '1', '40', 'Polozio'),
  132. ('15', '3', '0', '13', 'Pao'),
  133. ('16', '3', '1', '35', 'Polozio'),
  134. ('17','1','1','70', 'Polozio')
  135. SELECT * FROM RezultatiTesta
  136.  
  137. /*6. Kreirati upit koji prikazuje rezultate testiranja za određeni test (oznaka testa kao filter).
  138. Kao rezultat upita prikazati sljedeće kolone: ime i prezime, jmbg, telefon i email kandidata,
  139. zatim datum, naziv, oznaku, oblast i maksimalan broj bodova na testu, te polje položio,
  140. osvojene bodove i procentualni rezultat testa.*/
  141.  
  142. SELECT k.Ime, k.Prezime, k.JMBG, k.Telefon, k.Email,
  143.         t.Datum, t.Naziv, t.Oznaka, t.Oblast, t.MaxBrojBodova,
  144.         rt.Polozio, rt.OsvojeniBodovi, ROUND((rt.OsvojeniBodovi/t.MaxBrojBodova)/100,2) AS [Procentualni rezultat testa]
  145. FROM RezultatiTesta AS rt
  146. INNER JOIN Kandidati AS k ON rt.KandidatID=k.KandidatID
  147. INNER JOIN Testovi AS t ON rt.TestID=t.TestID
  148. WHERE t.Oznaka='Bos'
  149.  
  150. SELECT * FROM Testovi
  151.  
  152. /*7. Kreirati upit koji prikazuje naziv testa, datum održavanja, ukupan broj studenata koji su položili i ukupan broj studenata koji
  153. nisu položili test. Uzeti u obzir samo testove na kojima su minimalno dva kandidata položila.*/
  154. SELECT t.Naziv, t.Datum, COUNT(rt.KandidatID) AS [Broj polozenih]
  155. FROM Testovi AS t
  156. INNER JOIN RezultatiTesta AS rt ON rt.TestID=t.TestID
  157. WHERE rt.Polozio=1
  158. GROUP BY t.Naziv, t.Datum
  159. HAVING COUNT(rt.KandidatID) >=2
  160.  
  161. /*8. Izmijeniti rezultate testiranja svim kandidatima koji su položili određeni test (oznaka testa kao filter).
  162. Svim kandidatima koji su položili test broj osvojenih bodova uvećati za 5.*/
  163. UPDATE RezultatiTesta
  164. SET OsvojeniBodovi+=5
  165. FROM RezultatiTesta AS rt
  166. INNER JOIN Testovi AS t ON rt.TestID=t.TestID
  167. WHERE t.Oznaka='Mat' AND rt.Polozio=1
  168.  
  169. /*9. Obrisati jedan test i ostvarene rezultate na testu (oznaka testa kao filter).*/
  170.  
  171. SELECT * FROM Testovi
  172. GO
  173. DELETE FROM RezultatiTesta
  174. FROM RezultatiTesta AS rt
  175. INNER JOIN Testovi AS t ON rt.TestID=t.TestID
  176. WHERE t.Oznaka LIKE 'Pri'
  177.  
  178. DELETE FROM Testovi
  179. WHERE Testovi.Oznaka='Pri'
  180.  
  181. /*10.Obrisati tabelu Gradovi i ukloniti polja GradID i Adresa u tabeli Kandidati.*/
  182. ALTER TABLE Kandidati
  183. DROP CONSTRAINT FK_Kandidati_Gradovi
  184.  
  185. ALTER TABLE Kandidati
  186. DROP COLUMN GradID, Adresa
  187.  
  188. DROP TABLE Gradovi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement