· 10 years ago · Sep 23, 2016, 11:08 PM
1--ISP 1:
2--Ishod2:
3//ZADATAK6. Napravite pogled koji će vraćati podatke o tome koliko je raÄuna izdano kojeg mjeseca
4//, neovisno o godini, sortirano rastuće po mjesecima. Napišite naredbu za uklanjanje pogleda.
5create view mjeseci
6as
7select top 99.99 percent MONTH(r.DatumIzdavanja) as mjeseci, count(*) as broj from Racun as r
8group by month(r.DatumIzdavanja)
9order by mjeseci asc
10go
11
12select * from mjeseci
13drop view mjeseci
14
15//ZADATAK7: Napravite pogled koji ce vracati sve kupce (ime,prezime) koji su napravili najmanje
16// tri kupnje (imaju tri racuna).Napišite naredbu za promjenu pogleda kako biste dodali i stupac
17// koji će sadržavati toÄan broj raÄuna pojedinog kupca.
18
19create view imeiprezime
20as
21select k.Ime, k.Prezime
22from Kupac as k where (select count(*) from Racun as r where r.KupacID = k.IDKupac)> 3
23go
24
25select * from imeiprezime
26
27alter view imeiprezime
28as
29select k.Ime, k.Prezime,(select count(*) from Racun as r where r.KupacID = k.IDKupac)as broj
30from Kupac as k where (select count(*) from Racun as r where r.KupacID = k.IDKupac)> 3
31go
32select * from imeiprezime
33drop view imeiprezime
34
35//ZADATAK8: Napravite pogled koji ce vraćati sve proizvode koji imaju definiranu boju i Äija je cijena
36// vrća ili jednaka 1000 kn. Nakon nekog vremena vam stižu pritužba od korisnika "Dodao sam novi proizvod,
37// u taj vas pogled, ali kada ga zelim pronaci, nema ga!". Napišite potrebne naredbe kako biste
38// rješili problem, ako znate da je poslovna politika da ne smiju postojati proizvodi bez
39//definirane boje i s cijenom manjom od 1000 kn.
40
41create view proizvodview
42as
43select p.Naziv from Proizvod as p
44where p.Boja is not null and p.CijenaBezPDV >= 1000
45with check option
46go
47
48
49select * from proizvodview
50
51drop view proizvodview
52
53//ZADATAK9: Napravite pogled koji vraća godinu i mjesec ( u obliku 2005-12) i koliko visa kartica
54//istjeÄe te godine i tog mjeseca. Iskoristite poged za dohvaÄanje 2 mjeseca u kojima istjeće najviÅ¡e
55//kartica. nekon nekog vre. stiže pritužba: "Vaš pogled je prestao raditi i javlja grešku da ne može"
56//pronaći zablicu kreditnaKartica". Nakon izvida, primjećujete da je netko uklonio tablicu iz baze
57//Pa je vraćate iz kopije. NapiÅ¡ite naredbe kojima Äete sprijeÄiti ovakvu situaciju u buduÄnosti.
58create view kartice
59as
60select cast(kk.IstekGodina as varchar(5))+'-'+ CAST(kk.IstekMjesec as varchar(5)) as godina_i_mjesec, COUNT(*) as broj_kartica
61from KreditnaKartica as kk where kk.Tip='Visa'
62group by kk.IstekGodina, kk.IstekMjesec
63go
64
65--provjera
66select * from KreditnaKartica as kk where kk.Tip ='Visa' and kk.IstekGodina=2006
67and kk.IstekMjesec=5
68
69alter view kartice
70with schemabinding
71as
72select top 2 CAST(kk.IstekMjesec as varchar(5)) as mjeseci, COUNT(*) as broj_kartica
73from dbo.KreditnaKartica as kk
74group by kk.IstekMjesec
75order by broj_kartica desc
76go
77
78select * from kartice
79
80drop view kartice
81
82//ISHOD 3:
83//ZADATAK 10: Uklonite sve neklasterirane indekse s tablice RaÄun. Unutar SQL skrip.
84//napisite odgovore na pitanja te naredbe kojima ste do njih dosli:
85// A) Na koliko stranica su smješteni podaci iz tablice Racun? Na koliko stranica su
86// smješteni indeksi iz tablice Racun
87
88dbcc traceon(3604)
89dbcc ind('AdventureWorksOBP', 'Racun', -1)
90--Podaci su smješteni na 200 stranica, a indeksi su smjesteni na 1 stranicu
91--gledamo koliko ima Pagetype sa 1 i indexID
92
93//B) Lpka ke vrokedmpst stišca ODRacun za prvi, a koja za posljednji proizvod na prvoj pod. stranici
94
95dbcc page('AdventureWorksOBP', 1, 458, 3) with tableresults
96--Vrijednost stupca IDRacun za 1 je 43659, a za zadnji 43816 na prvoj stranici
97
98
99//C) Na kojoj stranici se nalazi racun s IDRACUN jednak 43818?
100
101dbcc page('AdventureWorksOBP', 1, 459, 3) with tableresults
102--Nalazi ste na stranici 493
103
104//D) Umetnite novi racun. Na koju stranicu je dodan?
105
106insert into Racun(DatumIzdavanja, BrojRacuna, KupacID)
107values('20151115', 'SO75123', 4189)
108--dobio je ID 75124
109dbcc ind('AdventureWorksOBP', 'Racun', -1)
110dbcc page('AdventureWorksOBP', 1, 1032, 3) with tableresults
111--Nalazi se na stranici 1032
112
113//ZADATAK 11 ( i 12). Uklonite sve neklasterirane indeske s tablice Kupac. Opti. što je bolje moguce
114
115SET STATISTICS IO ON
116
117select IDKupac from Kupac where Prezime = 'Adams' and GradID = 9 //ovaj dio koda dobijemo u testu
118
119create nonclustered index kup on Kupac(Prezime)
120include(GradID)
121
122drop index kup on kupac
123
124//ZADATAK 12
125
126select IDKupac, Ime, Prezime from Kupac where Prezime like 'A%'
127and GradID = 9 // kod od testa
128
129create nonclustered index kup2 on Kupac(Prezime)
130include(Ime, GradID)
131
132drop index kup2 on Kupac
133
134
135//ISHOD4:
136
137//ZADATAK1: Napiite proceduru koja prima naziv grada i ID države,umeće novi grad za tu državu
138//u tablicu grad i kroz izlazni parametar vraća vrijednost primarnog kljuca umetnutog retka.
139//Ako vec postoji grad zadanog imena i države, ne treba ga upisivati i u tom slucaju kroz
140//izlazni parametar vratite vrijednost -1. pozovite proceduru dva puta s istom nazivod i id-em
141
142create proc zad1
143@naziv nvarchar(50),
144@iddrz int,
145@kljuc int output
146as
147declare @nazivdr nvarchar(50)
148declare @drid int
149select @nazivdr = Naziv, @drid = DrzavaID from grad
150
151if @nazivdr = @naziv and @iddrz = @drid
152 begin
153 set @kljuc = -1
154 print 'Grad je vec kreiran'
155 end
156else
157 begin
158 insert into Grad(Naziv, DrzavaID) values(@naziv, @iddrz)
159 set @kljuc = SCOPE_IDENTITY()
160 end
161go
162
163declare @ispis nvarchar(50)
164exec zad1 'Tokyo', 3, @ispis output
165print @ispis
166go
167
168drop proc zad1
169
170--provjera
171select * from Grad
172delete from Grad where IDGrad = 15
173--------------------------------------------------------------------------
174
175//ZADATAK2: NapiÅ¡ite funkciju koja prima ID komercijalista i dohvaća broj njegovih raÄuna iz
176//Tablice RAČUN. Koristeći funkciju ispišite sve komercijaliste iz tablice Komercijalist i uz
177//svakog komercijalista ispiÅ¡ite koliko je izdao raÄuna. Ako komerc. nije izdao niti jedan
178//raÄun, funkcija mora vratiti 0. Rezultat sortirajte prema broju izdanih raÄuna od najviÅ¡e Prema najmanje
179create function BrojRacunaKomercijalista(
180@IDkom int
181)
182returns int
183as
184begin
185
186declare @brojac int
187
188select @brojac = count(*) from Komercijalist as k inner join Racun as r
189on k.IDKomercijalist = r.KomercijalistID
190where r.KomercijalistID = @IDkom
191
192return @brojac
193end
194go
195
196select k.Ime, k.Prezime, k.StalniZaposlenik, dbo.BrojRacunaKomercijalista(k.IDKomercijalist)
197as [Broj Racuna] from Komercijalist as k
198---------------------------------------------------------------------------
199
200//ZADATAK3(I6): Implementirajte CRUD operacije na tablici Komerijalist pomoću jedne procedure i jedne funkcije.
201// Napravite umetanje, izmjenu, dohvaćanje i brisanje jednog komercijalista pomoću napravljenih objekata.
202
203
204create proc crud
205 @ime nvarchar(50),
206 @prezime nvarchar(50),
207 @stalnozaposlen bit,
208 @status char(1),
209 @ime2 nvarchar(50),
210 @prezime2 nvarchar(50)
211 as
212 if @status ='i'
213 insert into Komercijalist(Ime, Prezime, StalniZaposlenik)
214 values(@ime, @prezime, @stalnozaposlen)
215else if @status = 'u'
216 update Komercijalist set Ime = @ime, Prezime = @prezime,
217 StalniZaposlenik = @stalnozaposlen where IDKomercijalist = dbo.cruder(@ime2, @prezime2)
218else if @status = 's'
219 select * from Komercijalist where IDKomercijalist = dbo.cruder(@ime, @prezime)
220else if @status = 'd'
221 delete from Komercijalist where IDKomercijalist = dbo.cruder(@ime, @prezime)
222else
223 print 'Krivo unseno slovo'
224go
225
226create function cruder(
227 @ime nvarchar(50),
228 @prezime nvarchar(50)
229)
230returns int
231as
232begin
233
234declare @vracaj int
235select @vracaj = IDKomercijalist from Komercijalist where Ime = @ime and Prezime = @prezime
236
237return @vracaj
238end
239go
240
241execute crud 'tester', 'testeric', 1, 'u', 'tester', 'testeric'
242
243select * from Komercijalist
244--------------------------------------------------------------
245//ISHOD 6:
246//ZADATAK 1:Napišite proceduru koja prima XML dokument oblika:
247<Drzava Naziv="Hrvatska"> //Neka procedura ubaci poslanu državu i gradove u pripadne tablice Država i Grad.
248<Grad>Bjelovar</Grad> // U proceduri provjerite da li poslana država već postoji. Ukoliko država već postoji
249<Grad>Vinkovci</Grad> // nemojte ju ubaciti ponovo, već joj pridružite poslane gradove.
250<Grad>Koprivnica</Grad>
251</Drzava>
252
253CREATE PROC Zadatak3
254 @inputXML XML
255AS
256DECLARE @DrzavaID INT
257IF EXISTS (SELECT * FROM Drzava WHERE Naziv IN (SELECT Tablica.Stupac.VALUE('@Naziv','nvarchar(50)')
258 FROM @inputXML.nodes('/Drzava') AS Tablica(Stupac)))
259
260 BEGIN
261 SELECT @DrzavaID=IDDrzava FROM Drzava WHERE Naziv IN (SELECT Tablica.Stupac.VALUE('@Naziv','nvarchar(50)')
262 FROM @inputXML.nodes('/Drzava') AS Tablica(Stupac))
263 INSERT INTO Grad
264 SELECT Tablica.Stupac.VALUE('.','nvarchar(50)') AS Naziv,
265 @DrzavaID AS DrzavaID
266 FROM @inputXML.nodes('/Drzava/Grad') AS Tablica(Stupac)
267 END
268ELSE
269 BEGIN
270 INSERT INTO Drzava
271 SELECT Tablica.Stupac.VALUE('@Naziv','nvarchar(50)')
272 FROM @inputXML.nodes('/Drzava') AS Tablica(Stupac)
273 SET @DrzavaID=SCOPE_IDENTITY()
274
275 INSERT INTO Grad
276 SELECT Tablica.Stupac.VALUE('.','nvarchar(50)') AS Naziv,
277 @DrzavaID AS DrzavaID
278 FROM @inputXML.nodes('/Drzava/Grad') AS Tablica(Stupac)
279 END
280
281EXEC Zadatak3 '<Drzava Naziv="Hrvatska14515">
282 <Grad>Bjelovar</Grad>
283 <Grad>Vinkovci</Grad>
284 <Grad>Koprivnica</Grad>
285 </Drzava>'
286GO
287-------------------------------------------------------------
288
289//ZADATAK 2(I6): NapiÅ¡ite proceduru koja u jednom pozivu omogućuje umetanje viÅ¡e kupaca u tablicu KUPAC. Koristite tabliÄne varijable.
290
291select * from Kupac
292
293create type Kupac as table(
294Ime nvarchar(50),
295Prezime nvarchar(50)
296)
297
298Create proc UmetniKupca
299@MojiKupci Kupac readonly
300as
301insert into Kupac(Ime, Prezime)
302select * from @MojiKupci
303GO
304
305
306DECLARE @var Kupac
307insert into @var values('Tester1', 'Tester2')
308insert into @var values('Tester3', 'Tester4')
309Exec UmetniKupca @var
310go
311SELECT top 2 * FROM Kupac as k
312order by k.IDKupac desc
313
314----------------------------------------------------
315//ISHOD 8:
316//ZADATAK5: Napišite skriptu koja radi sljedeće:
317//Izrađuje sigurnosnu kopiju baze AdventureWorksOBP na neko mjest na disku. Umeće redak u tablicu KreditnaKartica.
318//radi diferencijalnu kopiju na isto mjesto. Radi novu bazu imena AdventureWorksOBP_Vraceno iz napravljenih
319//sigurnosnih kopija. Nova Baza treba sadržavati identiÄne podatke kao i AdventureWorkds OBP
320
321EXEC sp_addumpdevice
322 @devtype = 'DISK',
323 @logicalname = 'Moja_lokacija',
324 @physicalname = 'C:\baza\OBP1.bak'
325
326BACKUP DATABASE AdventureWorksOBP TO Moja_lokacija
327WITH
328 NAME = 'Prva kopija',
329 DESCRIPTION = 'Ovo je prva kopija',
330 STATS
331
332insert into KreditnaKartica(Tip, Broj, IstekMjesec, IstekGodina)
333values('Visa', '33333333333', 11, 2054)
334
335select * from KreditnaKartica
336
337BACKUP DATABASE AdventureWorksOBP TO Moja_lokacija
338WITH
339 DIFFERENTIAL,
340 NAME = 'Druga kopija',
341 DESCRIPTION = 'Ovo je druga kopija',
342 STATS
343
344SELECT * FROM sys.backup_devices
345
346--za viditi na kojoj pozicije FILE cemo uzet
347RESTORE HEADERONLY FROM Moja_lokacija
348
349--da vidimo od cega se sastoji nasa prva baza
350--AdeventureWorksOBP i AdvetntureWorksOBP_LOG
351RESTORE FILELISTONLY FROM Moja_lokacija
352
353RESTORE DATABASE AdventureWorksOBP_Vraceno FROM Moja_lokacija
354WITH
355 FILE = 1,
356 MOVE 'AdventureWorksOBP' TO 'C:\baza\OBP1_vraceno.mdf',
357 MOVE 'AdventureWorksOBP_log' TO 'C:\baza\OBP1_vraceno.ldf',
358 NORECOVERY,
359 STATS
360
361--Tu pomaze ovaj HeaderOnly da vidim koja je zadnja pozicija i nju vratim
362RESTORE DATABASE AdventureWorksOBP_Vraceno FROM Moja_lokacija
363WITH
364 FILE = 2,
365 RECOVERY,
366 STATS
367
368EXEC sp_dropdevice
369 @logicalname = 'Moja_lokacija'
370GO
371
372
373//ZADATAK 6(I8): Omogućite zaposleniku vaše firme Vjenceslavu Krkimiroviću mogućnost selektiranja
374//Podataka o proizvodima. Prava nemojte dodijeliti direktno njemu, već neka ih dobije Älanstvom
375//U grupama. Neka korisnik ima minimalni skup prava potreban za obavljanje operacije.
376
377CREATE LOGIN [vjenceslav] WITH PASSWORD = 'abcd1234'
378--Nalazi se u security na AdventureWorksOBP
379CREATE USER vjenceslav FROM LOGIN [vjenceslav]
380
381--Pravljenje grupe
382CREATE ROLE Prodaja
383
384--Dodavanje opcije da moze samo select na tablicu Proizvod u roli Prodaja
385GRANT SELECT ON Proizvod TO Prodaja
386GO
387
388--Dodavanje role clanu vjenceslavu
389EXEC sp_addrolemember @rolename = 'Prodaja', @membername = 'vjenceslav'
390
391--Eksplicitna zabrana da vjencelsav iako je u grupi nemoze selektat Proizvod
392DENY SELECT ON Proizvod TO vjenceslav
393GO
394
395--Uklanjanje zabrane da vjenceslav opet moze selektat iz baze na tablici Proizvod
396REVOKE SELECT ON Proizvod TO vjenceslav
397GO
398
399--Micanje vjenceslava iz grupe Prodaja
400EXEC sp_droprolemember @rolename = 'Prodaja', @membername = 'vjenceslav'
401GO
402
403--Dopanje grupe iz baze
404DROP ROLE Prodaja
405GO
406
407
408------- DRUGI TES --------
409
410
411//--ZADATAK5. Napravite pogled koji ce vratiti sve kreditne kartice.
412//iskoristite pogled kako biste korisniku vratili: tip kartice, godinu te broj
413// kartica tog tipa koje istjeÄu u toj godini. NapiÅ¡ite naredbu za uklanjanje
414
415CREATE VIEW vwKreditneKartice
416AS
417 SELECT *
418 FROM KreditnaKartica KK
419GO
420
421SELECT
422 KK.Tip [Tip kartice],
423 KK.IstekGodina [Godina isteka],
424 COUNT(*) [Koliko ih istiÄe]
425FROM vwKreditneKartice KK
426GROUP BY KK.Tip, KK.IstekGodina
427GO
428
429--ZADATAK 6. Napravite pogled koji će vraćati sve komercijaliste koji su izdali
430--barem jedan raÄun. NapiÅ¡ite naredbu za promjenu pogleda kako biste dodali
431-- i stupac koji Äe sadržavati toÄan broj izdanih raÄuna
432
433GO
434CREATE VIEW Pogled2
435AS
436SELECT * FROM Komercijalist WHERE IDKomercijalist IN (SELECT KomercijalistID FROM Racun)
437GO
438ALTER VIEW Pogled2
439AS
440SELECT *,(SELECT COUNT(KomercijalistID) FROM Racun
441WHERE Racun.KomercijalistID=Komercijalist.IDKomercijalist) AS 'Broj izdanih raÄuna' FROM Komercijalist
442WHERE IDKomercijalist IN (SELECT KomercijalistID FROM Racun)
443GO
444
445--ishod3:
446
447--Zadatak 9. uklonite sve neklasterirane indekse s tablice Proizvod, ako ih ima
448--unutar SQL skripte napišite odgovore na pitanja te naredbe kojima ste do njih dosli:
449--a) na koliko stranica su smješteni podaci iz tablice Proizvod?
450DBCC TRACEON (3604)
451DBCC IND('AdventureWorksOBP','Proizvod',-1)
452
453--B)Koja je vrijednost stupca IDproizvod za prvi, a koja za posljednji proizvod na prvoj podatkovnoj stranici
454DBCC PAGE('AdventureWorksOBP',1,413,3) WITH TABLERESULTS
455
456--C) Umetnite novi proizvod. Na koju stranicu je dodan?
457INSERT INTO Proizvod (Naziv, BrojProizvoda, Boja, MinimalnaKolicinaNaSkladistu, CijenaBezPDV, PotkategorijaID)
458VALUES ('dfsnfgsd',22151,'sdnbgjsd',1,1,1)
459
460--------------------------------------------------------------
461
462
463
464--ISHOD4
465--ZADATAK 11 Napišite proceduru koja prima ime i prezime komercijalist, umeće novog komercijalistu
466-- u tablicu Komercijalist i kroz izlazni parametar vraća vrijednost primarnog kljuÄa
467--umetnutog retka. Ako već postoji komercijalist zadanog imena i prezimena, ne treba
468--ga upisivati ponovo i u tom sluÄaju kroz izlazni parametar vratite vrijednost -1.
469-- Pozovite proceduru dva puta s istim imenom i prezimenom te ispišite vraćenu vrijednost.
470
471create proc pr1
472@IDRedak int OUTPUT,
473@Ime nvarchar(50),
474@Prezime nvarchar(50)
475as
476if not exists (select * from Komercijalist where Ime=@Ime and Prezime=@Prezime)
477 begin
478 insert into Komercijalist (Ime,Prezime) values (@Ime,@Prezime)
479 set @IDRedak=SCOPE_IDENTITY()
480 end
481else
482 begin
483 set @IDRedak=-1
484 end
485go
486
487declare @t int, @Ime nvarchar(50),@Prezime nvarchar(50)
488exec pr1 @t output,'Luka','Sepat'
489print @t
490go
491
492declare @t int, @Ime nvarchar(50),@Prezime nvarchar(50)
493exec pr1 @t output, 'Luka','Sepat'
494print @t
495go
496
497select * from Komercijalist
498drop proc pr1
499go
500
501//ZADATAK 12 Napišite proceduru koja prima tri parametra: naziv države i dva naziva
502// grada iz te države. Ako država sa zadanim nazivom postoji, umetnite gradove i
503//vežite ih na tu državu. Ako država sa zadanim nazivom ne postoji,
504//prvo umetnite državu, a zatim na nju vežite gradove.
505
506create proc pr2
507@Drzava nvarchar(50),
508@Grad1 nvarchar(50),
509@Grad2 nvarchar(50)
510as
511declare @IDDrzava int
512
513if exists(select * from Drzava where Naziv=@Drzava)
514 begin
515 select IDDrzava=@IDDrzava from Drzava
516 where Naziv=@Drzava
517 end
518else
519 begin
520 insert into Drzava values (@Drzava)
521 set @IDDrzava=SCOPE_IDENTITY()
522 end
523 insert into Grad (Naziv,DrzavaID)
524 values (@Grad1,@IDDrzava), (@Grad2,@IDDrzava)
525go
526
527exec pr2 'Kanada','Toronto','Vancouver'
528go
529
530select * from Grad
531select * from Drzava
532go
533
534
535//ZADATAK 13 Implementirajte CRUD operacije na tablici Potkategorija pomoću
536// dvije procedure.Jedna neka obavlja operacije C i U, druga R i D.
537//Napravite umetanje, izmjenu, dohvaćanje i brisanje jedne potkategorije
538//pomoću napravljenih objekata.
539
540CREATE PROC prCreateOrUpdate
541 @IDPotkategorije INT, /* NULL - CREATE, OSTALO - UPDATE */
542 @NazivPotkategorije nvarchar(50),
543 @IDKategorije INT
544AS
545 IF @IDPotkategorije IS NULL BEGIN /* CREATE */
546 INSERT INTO Potkategorija (KategorijaID, Naziv)
547 VALUES
548 (@IDKategorije, @NazivPotkategorije)
549 END
550 ELSE BEGIN /* UPDATE */
551 UPDATE Potkategorija
552 SET
553 KategorijaID = @IDKategorije,
554 Naziv = @NazivPotkategorije
555 WHERE IDPotkategorija = @IDPotkategorije
556 END
557GO
558
559CREATE PROC prReadOrDelete
560 @IDPotkategorije INT,
561 @DELETE bit /* 0 - READ, 1 - DELETE */
562AS
563 IF @DELETE = 0 BEGIN /* READ */
564 SELECT *
565 FROM Potkategorija
566 WHERE IDPotkategorija = @IDPotkategorije
567 END
568 ELSE IF @DELETE = 1 BEGIN /* DELETE */
569 DELETE
570 FROM Potkategorija
571 WHERE IDPotkategorija = @IDPotkategorije
572 END
573GO
574
575
576--ISHOD6:
577--ZADATAK4: Napišite proceduru koja u jednom pozivu omogućuje pozivanje više
578//proizvoda u tablicu Proizvod. Koristite tabliÄne varijable.
579
580CREATE TYPE Optimus AS TABLE(
581 Naziv nvarchar(50),
582 BrojProizvoda nvarchar(50),
583 Boja nvarchar(50),
584 MinimalnaKolicinaNaSkladistu INT,
585 CijenaBezPDV money,
586 PotkategorijaID INT)
587GO
588
589CREATE PROC Zadatak04
590 (@inputTab Optimus READONLY)
591AS
592INSERT INTO Proizvod
593SELECT * FROM @inputTab
594GO
595
596DECLARE @inputTab Optimus
597 INSERT INTO @inputTab VALUES ('Test','15616565','plava',15,500,1)
598 INSERT INTO @inputTab VALUES ('Testic2','14187948','crvena',47,458,1)
599
600
601EXEC Zadatak04 @inputTab
602
603----ISHOD 8
604--omogucite zaposleniku Mirku Mirkicu mogućnosti selektiranja podataka o proizvodima. Prava
605--nemojte dodjeliti direktno njemu, vec neka ih dobije clanstvom u grupi. Neka korisnik ima minimalni
606-- skup prava potreban za obavljanje operacije.
607
608CREATE LOGIN [Mirko Mirkić]
609WITH PASSWORD = 'centos'
610GO
611
612CREATE USER Mirko FROM LOGIN [Mirko Mirkić]
613GO
614
615CREATE ROLE Selektori
616GO
617
618GRANT SELECT ON Proizvod TO Selektori
619GO
620
621EXEC sp_addrolemember
622 @rolename='Selektori',
623 @membername='Mirko'