Advertisement
almina-basic

[BP II] Zadatak_vjezba

Apr 5th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 11.01 KB | None | 0 0
  1. --1. Kreirati bazu podataka Radna2.
  2.  
  3. CREATE DATABASE Radna2
  4. USE Radna2
  5.  
  6. /*2. Kreirati tabelu Autori koja će se sastojati od sljedećih polja:
  7. -AutorID, 11 karaktera, primarni ključ, obavezan unos,
  8. -Prezime, 40 karaktera, obavezan unos,
  9. -Ime, 20 karaktera, obavezan unos,
  10. -Telefon, 11 karaktera, obavezan unos,
  11. -Adresa, 11 karaktera,
  12. -Grad, 20 karaktera,
  13. -Drzava, 2 karaktera,
  14. -PostanskiBroj, 5 karaktera,
  15. -StanjeUgovora, bit polje*/
  16.  
  17. CREATE TABLE Autori
  18. (
  19. AutorID NVARCHAR (11) NOT NULL CONSTRAINT PK_AutorID
  20.     PRIMARY KEY (AutorID),
  21. Prezime NVARCHAR (40) NOT NULL,
  22. Ime NVARCHAR (20) NOT NULL,
  23. Telefon NVARCHAR (12) NOT NULL,
  24. Adresa NVARCHAR (40) NULL,
  25. Grad NVARCHAR (20) NULL,
  26. Drzava NVARCHAR (2) NULL,
  27. PostanskiBroj NVARCHAR (5) NULL,
  28. StanjeUgovora BIT NULL
  29. )
  30.  
  31.  
  32. /*3. Importovati u tabelu Autori podatke iz tabele authors baze pubs uz uslov da ID autora
  33. započinje brojevima 1, 2 ili 3 i da autor ima zaključen ugovor.*/
  34.  
  35. INSERT INTO Autori
  36. SELECT *
  37. FROM pubs.[dbo].[authors] AS A
  38. WHERE A.au_id LIKE '[123]%' AND A.contract=1
  39.  
  40.  
  41. /*4. U tabelu Autori iz tabele authors baze pubs importovati vrijednosti iz polja
  42.  au_id, au_lname, au_fname, phone i address pri čemu adresa počinje cifrom 3
  43.  i na trećem mjestu se nalazi cifra 1. Uzeti da svi autori imaju potpisan ugovor.*/
  44.  
  45.  INSERT INTO Autori
  46.  SELECT A.au_id, A.au_lname, A.au_fname, A.phone , A.address, NULL,NULL,NULL,1
  47.  FROM pubs.[dbo].[authors] AS A
  48.  WHERE A.address LIKE '3_1%' AND A.contract=1
  49.  
  50.  
  51.  /*5.Iz tabele Autori obrisati sve autore čiji broj telefona počinje sa 40 ili 70.*/
  52.  
  53.  DELETE FROM Autori
  54.  WHERE (LEFT(Telefon,2) LIKE '40' OR LEFT(Telefon,2) LIKE '70')
  55.  
  56.  
  57. /*6. U tabeli Autori izvršiti izmjenu svih NULL odgovarajućim vrijednostima.*/
  58.  
  59. UPDATE Autori
  60. SET Grad='Zenica', Drzava='BH', PostanskiBroj='72000'
  61. WHERE Grad IS NULL
  62.  
  63. /*7. Izbrisati sve podatke iz tabele Autori i importovati sve podatke iz tabele authors baze pubs.*/
  64. DELETE FROM Autori
  65.  
  66. INSERT INTO Autori
  67. SELECT * FROM pubs.[dbo].[authors]
  68.  
  69.  
  70. /*8. Kreirati tabelu Djelo koja će se sastojati od polja:
  71.  
  72. DjeloID, 6 karaktera, primarni ključ, obavezan unos,
  73. NazivDjela, 80 karaktera, obavezan unos,
  74. Zanr, 12 karaktera, obavezan unos,
  75. IzdavacID, 4 karaktera,
  76. Cijena, novčana varijabla,
  77. Dobit, novčana varijabla,
  78. Klasifikacija, cjelobrojna varijabla,
  79. GodisnjaProdaja, cjelobrojna varijabla,
  80. Biljeska, 200 karaktera,
  81. DatumIzdavanja, datumska varijabla, obavezan unos,
  82. VrijemeIzdavanja, vremenska varijabla, obavezan unos*/
  83.  
  84. CREATE TABLE Djelo
  85. (
  86. DjeloID NVARCHAR (6) NOT NULL CONSTRAINT PK_DjeloID
  87.     PRIMARY KEY (DjeloID),
  88. NazivDjela NVARCHAR (80) NOT NULL,
  89. Zanr NVARCHAR (12) NOT NULL,
  90. IzdavacID NVARCHAR (4) NULL,
  91. Cijena MONEY NULL,
  92. Dobit MONEY NULL,
  93. Klasifikacija INT NULL,
  94. GodisnjaProdaja INT NULL,
  95. Biljeska NVARCHAR (200) NULL,
  96. DatumIzdavanja DATE NOT NULL,
  97. VrijemeIzdavanja TIME NOT NULL
  98. )
  99.  
  100.  
  101. /*9. Importovati u tabelu Djelo podatke iz svih polja tabele titles baze pubs uz uslov da
  102. vrijednsot polja price bude NULL. Voditi računa o načinu punjenja polja DatumIzdavanja i VrijemeIzdavanja.*/
  103.  
  104.  
  105. INSERT INTO Djelo
  106. SELECT T.title_id,T.title,T.type,T.pub_id,T.price,T.advance,T.royalty,T.ytd_sales,T.notes, LEFT(T.pubdate,11), RIGHT(T.pubdate,8)
  107. FROM pubs.[dbo].[titles] AS T
  108. WHERE T.price IS NULL
  109.  
  110.  
  111. /*10. Trenutno je u toku akcija na prodaju svih djela. Potrebno je u tabelu Djela importovati
  112. podatke iz svih polja tabela titles baze pubs pri čemu će cijena biti korigovana na sljedeći način:
  113.  
  114. a) djela čija je cijena veća ili jednaka 15 KM cijenu smanjiti za 20%
  115. b) djela čija je cijena manja od 15 KM cijenu smanjiti za 15% */
  116.  
  117.  
  118. INSERT INTO Djelo
  119. SELECT  T.title_id,T.title,T.type,T.pub_id,T.price-(0.20*T.price),T.advance,T.royalty,T.ytd_sales,T.notes,
  120.         LEFT(T.pubdate,11), RIGHT(T.pubdate,8)
  121. FROM pubs.[dbo].[titles] AS T
  122. WHERE T.price >=15
  123.  
  124.  
  125. INSERT INTO Djelo
  126. SELECT  T.title_id,T.title,T.type,T.pub_id,T.price-(0.15*T.price),T.advance,T.royalty,T.ytd_sales,T.notes,
  127.         LEFT(T.pubdate,11), RIGHT(T.pubdate,8)
  128. FROM pubs.[dbo].[titles] AS T
  129. WHERE T.price <15
  130.  
  131.  
  132. /*11. U tabeli Djelo zamijeniti NULL odgovarjućim vrijednostima u
  133. svim poljima u kojima nije postavljen zanr djela.*/
  134.  
  135.  
  136. UPDATE Djelo
  137. SET Cijena=10, Dobit=1000, Klasifikacija=16,GodisnjaProdaja=2000, Biljeska='Biljeska'
  138. WHERE Zanr='UNDECIDED'
  139.  
  140.  
  141. /*12. Iz tabele Djelo obrisati sve zapise u kojima je u bilo kojem polju NULL vrijednost
  142. ili je cijena manja od 5 KM.*/
  143.  
  144. DELETE FROM Djelo
  145. WHERE Cijena IS NULL OR Cijena <5
  146.  
  147.  
  148. /*13. Obrisati sve zapise iz tabele Djelo i importovati sve zapise iz tabele titleauthor
  149.  uz vođenje računa da se ispravno popune sva polja tabele Djelo.*/
  150.  
  151.  
  152. DELETE FROM Djelo
  153.  
  154. INSERT INTO Djelo
  155. SELECT T.title_id, T.title,T.type, T.pub_id, T.price, T.advance, T.royalty, T.ytd_sales, T.notes, LEFT(T.pubdate,11), RIGHT(T.pubdate,8)
  156. FROM pubs.[dbo].[titles] AS T
  157.  
  158.  
  159.  
  160. /*14. Kreirati tabelu AutorDjelo koja će se sastojati od sljedećih polja:
  161. AutorID, 11 znakova, primarni ključ, obavezan unos,
  162. DjeloID, 6 znakova, primarni kljuć, obavezan unos,
  163. RedBrAutora, kratka cjelobrojna varijabla,
  164. UdioAutPrava, cjelobrojna varijabla,
  165. ISBN, 25 znakova
  166. Polja AutorID i DjeloID su spoljni ključevi prema tabelama Autor i Djelo.*/
  167.  
  168.  
  169. CREATE TABLE AutorDjelo
  170. (
  171. AutorID NVARCHAR (11) NOT NULL,
  172. DjeloID NVARCHAR (6) NOT NULL,
  173. RedBrAutora TINYINT NULL,
  174. UdioAutPrava INT NULL,
  175. ISBN NVARCHAR (25) NULL,
  176. CONSTRAINT PK_AutorDjelo PRIMARY KEY (AutorID,DjeloID),
  177. CONSTRAINT FK_AutorDjelo_Autori FOREIGN KEY(AutorID) REFERENCES dbo.Autori (AutorID),
  178. CONSTRAINT FK_AutorDjelo_Djelo FOREIGN KEY(DjeloID) REFERENCES dbo.Djelo (DjeloID)
  179. )
  180.  
  181.  
  182. /*15. Obrisati ograničenja spoljnih ključeva, a zatim ih ponovo uspostaviti.*/
  183.  
  184. ALTER TABLE AutorDjelo
  185. DROP CONSTRAINT FK_AutorDjelo_Autori
  186.  
  187. ALTER TABLE AutorDjelo
  188. DROP CONSTRAINT FK_AutorDjelo_Djelo
  189.  
  190. ALTER TABLE dbo.AutorDjelo  
  191. WITH CHECK ADD CONSTRAINT FK_AutorDjelo_Autori FOREIGN KEY(AutorID)
  192. REFERENCES dbo.Autori (AutorID)
  193.  
  194. ALTER TABLE dbo.AutorDjelo  
  195. WITH CHECK ADD  CONSTRAINT FK_AutorDjelo_Djelo FOREIGN KEY(DjeloID)
  196. REFERENCES dbo.Djelo (DjeloID)
  197.  
  198.  
  199. /*16. U tabelu AutorDjelo importovati sve zapise iz tabele titleauthor baze pubs,
  200.       pri čemu će se polje ISBN popunjavati na sljedeći način:
  201.       iz polja title_id preuzeti cifre, te prije njih ubaciti riječ ISBN pri čemu između ISBN i
  202.       cifara treba biti jedno prazno mjesto, a poslije njih prazno mjesto i vrijednost polja
  203.       au_id iz tabele titleauthor baze pubs.*/
  204.  
  205. INSERT INTO AutorDjelo
  206. SELECT TA.au_id, TA.title_id, TA.au_ord,TA.royaltyper, 'ISBN' + SUBSTRING(TA.title_id, 3,4) + ' ' + TA.au_id
  207. FROM pubs.[dbo].[titleauthor] AS TA
  208.  
  209.  
  210. /*17. Iz tabele AutorDjelo dati pregled 10 zapisa sa najmanjim udjelom autorskih prava. Potrebno je dati prikaz svih polja.*/
  211.  
  212. SELECT TOP 10 *
  213. FROM AutorDjelo
  214. ORDER BY UdioAutPrava
  215.  
  216. SELECT TOP 10 WITH TIES *
  217. FROM pubs.[dbo].[titleauthor]
  218. ORDER BY royaltyper
  219.  
  220.  
  221.  
  222. /*18. Kreirati bazu podataka RadnaBaza.*/
  223.  
  224. CREATE DATABASE RadnaBaza
  225.  
  226. USE RadnaBaza
  227.  
  228.  
  229.  
  230.  
  231. /*CREATE TABLE Narudzba
  232. (
  233.     NarudzbaID INT CONSTRAINT PK_Narudzba PRIMARY KEY,
  234.     NaruciteljID VARCHAR (5),
  235.     ZaposlenikID INT,
  236.     DatumNarudbe DATE,
  237.     KrajnjiDatumIsporuke DATE,
  238.     DatumIsporuke DATE,
  239.     IsporuciteljID INT,
  240.     CijenaPrevoza MONEY,
  241.     NazivNarucitelja VARCHAR (40),
  242.     AdresaNarucitelja NVARCHAR (60),
  243.     GradNarucitelja NVARCHAR (15),
  244.     RegijaNarucitelja NVARCHAR (15),
  245.     PostBrojNarucitelja NVARCHAR (10),
  246.     DrzavaNarucitelja NVARCHAR (15)
  247. )
  248. */
  249.  
  250.  
  251.  
  252. CREATE TABLE Narudzbe
  253. (
  254. NaruzdbaID INT CONSTRAINT PK_Narudzba PRIMARY KEY,
  255. NaruciteljID NVARCHAR (5) NULL,
  256. ZaposlenikID INT NULL,
  257. DatumNarudzbe DATE NULL,
  258. KrajnjiDatumIsporuke DATE NULL,
  259. DatumIsporuke DATE NULL,
  260. IsporuciteljID INT NULL,
  261. CijenaPrevoza MONEY NULL,
  262. NazivNarucitelja NVARCHAR (40) NULL,
  263. AdresaNarucitelja NVARCHAR (60) NULL,
  264. GradNarucitelja NVARCHAR (15) NULL,
  265. RegijaNarucitelja NVARCHAR (15) NULL,
  266. PostBrojNarucitelja NVARCHAR (10) NULL,
  267. DrzavaNarucitelja NVARCHAR (10) NULL
  268. )
  269.  
  270.  
  271. /*20. U tabelu Narudzbe importovati sve zapise iz tabele Orders baze Northwind kod kojih je
  272. cijena prevoza manja od 100 i prva dva znaka adrese su cifra ili prazno mjesto, a nakon
  273. toga slijede znaci koji nisu cifre. U datumske varijable upisati samo datum (bez vremena).
  274. Također, sve NULL vrijednosti polja ShipRegion zamijeniti sa BH. */
  275.  
  276. INSERT INTO Narudzbe
  277. SELECT O.OrderID, O.CustomerID,O.EmployeeID,CONVERT(DATETIME,O.OrderDate,4),CONVERT(DATETIME,O.RequiredDate,4),CONVERT(DATETIME,O.ShippedDate,4),
  278.        O.ShipVia,O.Freight,O.ShipName,O.ShipAddress,O.ShipCity,ISNULL(O.ShipRegion,'BH'),O.ShipPostalCode,O.ShipCountry
  279. FROM NORTHWND.[dbo].[Orders] AS O
  280. WHERE O.Freight < 100 AND O.ShipAddress LIKE '[0-9]%'  AND O.ShipAddress LIKE '__[^0-9]%'
  281.  
  282.  
  283. /*21. U tabeli Narudzbe kreirati novu kolonu Broj_u_Ulici u koju će se
  284. smjestiti broj iz kolone AdresaNarucitelja, dok će u koloni AdresaNarucitelja biti preostali dio adrese.*/
  285.  
  286. ALTER TABLE Narudzbe
  287. ADD Broj_u_ulici NVARCHAR (2)
  288.  
  289. UPDATE Narudzbe
  290. SET Broj_u_ulici =LEFT(AdresaNarucitelja,2),
  291.     AdresaNarucitelja = SUBSTRING (AdresaNarucitelja,3,60)
  292. WHERE Broj_u_ulici IS NULL
  293.  
  294.  
  295. /*22. Iz tabele Orders baze Northwind ispisati prvu riječ naziva naručitelja pri čemu
  296. treba izostaviti one čiji naziv predstavlja neprekinuti niz znakova.*/
  297.  
  298. SELECT  LEFT (Shipname, CHARINDEX (' ', ShipName)) AS PrvaRijec
  299. FROM    NORTHWND.dbo.Orders
  300. WHERE   (LEFT (Shipname, CHARINDEX (' ', ShipName)) <> '')
  301.  
  302.  
  303. /*23. U tabeli Narudzba kreirati novu kolonu Lozinka. Kolonu popuniti koristeći polja LoginID i
  304. HireDate iz tabele HumanResources.Employee baze AdventureWorks2014. Lozinka se formira tako
  305. što se spoje datum zaposlenja i ime zaposlenika, te se tako dobijeni string obrne.*/
  306.  
  307.  
  308. ALTER TABLE Narudzbe
  309. ADD Lozinka NVARCHAR (50)
  310.  
  311.  
  312. UPDATE Narudzbe
  313. SET Lozinka = REVERSE ( CONVERT (NVARCHAR, HireDate) + (SUBSTRING(LoginID, 17, LEN (LoginID) - CHARINDEX('\',LoginID)-1)))
  314. FROM AdventureWorks2016.[HumanResources].[Employee]
  315. WHERE Lozinka IS NULL
  316.  
  317.  
  318.  
  319. /*24. U tabeli Orders baze Northwind prebrojati koliko ima naručitelja čiji
  320. naziv se sastoji iz neprikinutog niza znakova.*/
  321.  
  322.  
  323. SELECT COUNT (ShipName) AS BrojNeprekinuti
  324. FROM NORTHWND.dbo.Orders
  325. WHERE (LEFT (Shipname, CHARINDEX (' ', ShipName)) = '')
  326.  
  327.  
  328. /*25.a Kreirati šemu vjezba u bazi podataka Radna2.*/
  329.  
  330. USE Radna2
  331. CREATE SCHEMA vjezba
  332.  
  333.  
  334. /*25.b Kreirati tabelu Autori u šemi vjezba koja će se sastojati od sljedećih polja:
  335. AutorID, 11 karaktera, primarni ključ, obavezan unos,
  336. Prezime, 40 karaktera, obavezan unos,
  337. Ime, 20 karaktera, obavezan unos,
  338. Telefon, 11 karaktera, obavezan unos,
  339. Adresa, 11 karaktera,
  340. Grad, 20 karaktera,
  341. Drzava, 2 karaktera,
  342. PostanskiBroj, 5 karaktera,
  343. StanjeUgovora, bit polje*/
  344.  
  345.  
  346. CREATE TABLE vjezba.Autori
  347. (
  348.     AutorID NVARCHAR (11) NOT NULL CONSTRAINT PK_AutorID
  349.     PRIMARY KEY (AutorID),
  350.     Prezime nvarchar(40) NOT NULL,
  351.     Ime nvarchar(20) NOT NULL,
  352.     Telefon nvarchar(12) NOT NULL,
  353.     Adresa nvarchar(40) NULL,
  354.     Grad nvarchar(20) NULL,
  355.     Drzava nvarchar(2) NULL,
  356.     PostanskiBroj nvarchar(5) NULL,
  357.     StanjeUgovora bit NOT NULL
  358. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement