Sie sind auf Seite 1von 52

BEOGRADSKA POSLOVNA KOLA

BP

SQL Server Praktikum


GORAN T. ARITONOVI

BEOGRAD 2003.

Glava 1-Uvod u Microsoft SQL server

1.Uvod u Microsoft SQL server


SQL server sistem Sistem sa SQL serverom moe biti implementiran kao desktop (stand-alone) sistem ili kao klijent/server sistem.Klijent-server sistem moe imati dvoslojnu ili troslojnu arhitekturu.Bez obzira na arhitekturu, SQL server softver i baze podataka su smetene na cenralnom kompjuteru koji se naziva server baze podataka. Korisnici imaju posebne kompjutere koji se nazivaju klijenti. Klijenti pristupaju podacima kroz aplikaciju na njihovim kompjuterima kod sistema sa dvoslojnom arhitekturom ili kroz aplikaciju koja radi na posebnim kompjuterima u sistemu sa troslojnom arhitekturom. Kod troslojne arhitekture aplikacioni server sadri aplikaciju koja izvrava poslovnu logiku.Aplikacioni server organizuje sve klijentske konekcije umesto da dozvoli klijentu da kreira svoju sopstvenu konekciju to troi resurse na serveru baze podataka.Klijentski zahtevi se smetaju u red i ekaju na raspoloivu vezu.im veza postane slobodna ona se koristi za obradu zahteva koji je na redu. Dvoslojna arhitektura se koristi za sluaj manjeg broja korisnika.

Rezultat Upit

OLTP OLAP

Klijentska Aplikacija

Sistem za upravljanje relacionim bazama podataka (RDBMS)

sl.1.1 SQL Klijent server sistem

Glava 1-Uvod u Microsoft SQL server

sl.1.2 Klijent-server sistem troslojne arhitekture Osnove RDBMS-a RDBMS je skraenica za Relational Database Management System (Sistem za upravljanje relacionim bazama podataka).RDBMS sistemi pruaju vie od samog skladitenja podataka. Za njih se moe rei da brinu o integritetu podataka tj. deo odgovornosti za integritet podataka u RDBMS sistemu se prebacuje na samu bazu podataka. Podaci u ovim istemima su namenjeni velikom broju korisnika. SQL server uva podatke u bazi podataka.Podaci u bazi su organizovani u logike komponente koje su vidljive korisniku, dok baza sama po sebi predstavljava nekoliko fajlova na disku. Jedna instanca SQL servera moe da opsluuje hiljade korisnika koji rade sa bazom u isto vreme. SQL server baza podataka je organizovana u nekoliko razliitih objekata koje korisnici vide kada se konektuju na bazu.Ti objekti su : tabele, tipovi podataka, pogledi, uskladitene procedure, funkcije, indeksi, ogranienja, pravila, trigeri. Svaka instanca SQL servera ima 4 sistemske baze podataka : master, tempdb, msdb, model i jednu ili vie korisnikih baza.

Glava 1-Uvod u Microsoft SQL server Sistemske baze podataka Svaki SQL Server bez obzira na verziju ili ugraene modifikacije ima bazu podataka master. Ova baza sadri poseban skup sistemskih tabela koje vode rauna o sistemu kao celini. Baza podataka model predstavlja obrazac po kome e se praviti nova baza podataka. Ako se obriu baze master ili model sistem nee raditi. Baza podataka msdb je baza u kojoj SQL Agent skladiti sistemske zadatke. Baza podataka tempdb predstavlja jednu od kljunih oblasti rada za SQL Server. Kad god se kreira sloeni upit, takav da SQL mora da kreira privremene tabele da bi reio problem- to se obavlja u bazi tempdb. I kada sami kreiramo privremenu tabelu ona se smeta u tempdb. Baza podataka pubs se prvenstveno koristi za vebanje i eksperimentisanje. Baza podataka Northwind se isto koristi za vebanje ali je sloenije od baze pubs. Sistemske baze podataka
master

model

tempdb

msdb

pubs

Northwind

User1

Korisnike baze sl.1.3. Baze podataka u SQL serveru Alati SQL-Servera Transact-SQL Struktuirani upitni jezik ( Structured Query Language, SQL) jeste jezik za zadavanje upita nad bazom podataka koji je razvijen u IBM u 70 tih godina.Dijalekt SQL koji se koristi u SQL serveru naziva se Transact-SQL i on predstavlja komponentu jezgra SQL servera.Iskazi jezika Transact-SQL mogu se npr. upotrebiti za stvaranje objekata kao to su npr. tabele koje se uvaju u bazi podataka.Iskazi ovog jezika koriste se dodavanje podataka, manipulaciju podacima i drugim objektima baze

Glava 1-Uvod u Microsoft SQL server Query Analyzer Query Analyzer je Windows verzija aplikacije za unos komandi jezika TransactSQL.Kreiranje i modifikovanje upita pomou ove aplikacije je mnogo konfornije i jednostavnije nego iz komandne linije DOS-a.Posle pokretanja aplikacije potrebno je prijaviti se na SQL server unoenjem korisnikog imena, lozinke i servera sa kojim elimo da radimo. SQL Client Network i SQL Server NetworkUtility Definie biblioteke Net-Library i DB-Library koje se koriste za komunikaciju izmeu klijenata i servera.Da bi veza bila uspostavljena server mora da oslukuje protokol kojim klijent pokuava da komunicira U SQL serveru je mogue da klijent zapone komunikaciju sa jednim protokolom a onda pokuava sa nekim drugim ako prethodni ne radi. SQL Servers Books Online Ova komponenta sadri dokumentaciju o SQL u. SQL Service Manager Ova aplikacija pokree ili zaustavlja trajno ili privremeno procese SQL servera.SQL server se mora pokrenuti da bismo mogli obavljati bilo kakve operacije sa bazama podataka. U zavisnosti od opcija koje se izaberu pri instalaciji imaemo dva do pet SQL serverovih servisa: SQL Server Service: to je glavni servis koji ini okosnicu SQL servera. On skladiti i vraa podatke. SQL Server Agent: predstavlja planer zadatak SQL Servera. Ovaj servis eka kraj radnog vremena i onda pokree zatite i radi sve to smo podesili da SQL Server radi automatski. MS DTC ( Distributed Transaction Coordinator) Full-Text Search: mehanizam za temeljno pretraivanje teksta OLAP Services: Ovo je servis koji pomae analitikim servisima SQL servera SQL Enterprise Manager(EM) Ovo je aplikacija koja se koristi za gotove sve administrativne poslove sa lokalnim ili udaljenim serverima.Moe se koristiti i za otvaranje i brisanje korisnikih naloga za prijavljivanje na server, pokretanje, zaustavljanje i konfiguraciju servera, prikazivanje statistike servera, pravljenje rezervnih kopija i restauraciju baza podataka, EM podrava crtanje dijagrama relacija izmeu entiteta (Entity Relationship diagramming). Pomou EM se moe: Praviti, ureivati i brisati baza podataka kao i objekti baze podataka Praviti, ureivati i brisati DTS (Data Transformation Services) pakete Upravljati zakazanim poslovima kao to su pravljenje rezervnih kopija i izvravanje DTS paketa Prikazati trenutnu aktivnost: ko je prijavljen, koji su objekti zakljuani i sa kog klijenta su pokrenuti Upravljati bezbednou itd. 4

Glava 1-Uvod u Microsoft SQL server Servisi za transformaciju podataka ( DTS) DTS omoguava da uzmemo podatke iz bilo kog izvora podataka koji ima OLE DB posrednika. Dok se podaci prenose na njih moemo primeniti ono to se naziva transformacijom. Transformacije menjaju podatke prema nekom logikom pravilu. Npr. uzimamo podatke iz polja koje dozvoljava NULL vrednosti i te podatke premetamo u tabelu koja ta polja ne dozvoljava.Sa DTS-om moemo automatski promeniti NULL vrednost u neku drugu vrednost. Distribuirani koordinator transakcija(DTC) Transakcija je grupa elemenata na koju elimo da primenimo princip sve ili nita - ili e svi imati uspeha ili nee niko.DTC ini da se grupa iskaza ili realizuje u celini ili se vraa tako da se ini da se nikada nije ni dogodila.Primer : ako elimo da prebacimo 100 $ sa nekog rauna u banci A na neki raun u banci B tada neemo eleti da skinemo tih 100$ sa rauna u banci a ako nismo sigurni da je to deponovano na raunu u banci B. DTC omoguuje da se to odvija ba tako.

SQL Server Profiler SQL Server Profiler je alatka za praenje rada koja radi u realnom vremenu. Profiler moe u zavisnosti od onoga kako se konfigurie ono to se prati da prui kompletnu sintaksu svakog iskaza koji se izvrava na serveru.Profiler ima niz filtara koji omoguuju da definiemo ono to emo pratiti. Klijentski i serverski pomoni programi SQL server obezbeuje nekoliko tzv. Net-Libraries (mrenih biblioteka). To su biblioteke dinamikih veza (DLL-a) koje SQL server koristi da bi komunicirao u skladu sa odreenim protokolima u mrei. Mrene biblioteke slue kao neka vrsta izolatora izmeu klijentske aplikacije i mrenog protokola. SQL server sadri sledee mrene biblioteke : Named pipes TCP/IP Multiprotokol NWLink IPX/SPX Apple Talk Banzan VINES Shared Memory VIA Ista mrena biblioteka mora biti dostupna i na klijentskom i na serverskom raunaru kako bi oni mogli meusobno da komuniciraju preko mrenih protokola. Ako se izabere klijentska mrena biblioteka koju server ne podrava veza nee biti uspostavljena.Bez obzira na nain pristupa podacima uvek je upravljaki program( DB-Lib, ODBC ili OLE DB) taj koji komunicira sa mrenom bibliotekom.Sam proces se odvija na sledei nain :

Glava 1-Uvod u Microsoft SQL server 1. klijentska aplikacija komunicira sa upravljakim programom 2. upravljaki program poziva mrenu biblioteki klijenta 3. mrena biblioteka poziva odgovarajui mreni protokol i prenosi podatke do mrene biblioteke servera 4. mrena biblioteka servera onda prosleuje zahteve klijenta do SQL servera. Named Pipes Named Pipes je za instalaciju NT/2000 servera obavezna opcija. Ovaj protokol nije podran za instalaciju servera pod Win 9x . Protokoli Named Pipes su korisni kada TCP/IP nije dostupan ili kada nema DNS servera da obezbedi imena servera pod TCP/IPom. Named Pipes se javlja u 2 oblika Local Pipes i Network Pipes. Lokal Pipes se koristi kada se klijent koji koristi protokol Pipes pokrene na istom ureaju na kome se nalazi server.Network Pipes se koristi sa protokolom Named Papes u LAN-u. Razreava lokaciju servera na osnovu njegovog imena. TCP/IP TCP/IP je postao standardni protokol i ovo je mrena biblioteka koja se podrazumeva kod instalacije SQL servera. TCP/IP ima prednosti kao to su mogunost rada na svakom tipu servera i ima bolje performanse od protokola Named Papes kada su klijent i server na razliitim raunarima.TCP/IP je jedina opcija ako elimo da uspostavimo vezu sa naim serverom preko interneta. Multiprotokol Multiprotokol upravlja procesom kojim se odreuje koji protokol treba izabrati za odreeni server.Multiprotokol je pogodan u dva sluaja : 1. Kada imamo vie servera koji nemaju konzistentnu podrku mrene biblioteke kada multiprotokol odluuje koju e mrenu biblioteku koristiti 2. Kada preko interneta elimo da imamo direktan pristup SQL serveru. Protokol NWLink IPX/SPX se koristi u Novell-ovoj mrei, dok se AppleTalk koristi u mrei Macintosh-a.

Glava 2 - Instalacija i podeavanje klijentskog i serverskog softvera

2.Instalacija i podeavanje klijentskog i serverskog softvera


SQL server 2000 se moe nai u 6 izdanja : SQL Server 2000 Enterprise Edition SQL Server 2000 Standard Edition SQL Server 2000 Personal Edition SQL Server 2000 Developer Edition SQL Server Desktop Engine (MSDE) SQL Server 2000 for Windows CE Edition Sa izuzetkom izdanja SQL Server 2000 Windows CE Edition za inszalaciju SQL servera potrebno je ispunjavati sledee zahteve : Procesor Intel Pentium 166 MHz ili neki kompatibilni procesor Minimalno 64 MB RAM memorije mada se preporuuje 128 MB RAM-a za Standardno izdanje i minimalno 128 MB ( preporuuje se 256 MB RAM-a ) za Izdanje SQL servera za preduzee Potrebno je oko 250 MB prostora na hard disku Pre instaliranja SQL servera 2000 potrebno je dozvoliti TCP/IP protokol koji je podrazumevani protokol SQL servera. Potrebno je da na sistemu postoji IE 5 ili novije verzija Za WEB pristup SQL serveru potreban je Internet Information Server 4.0 ili noviji Za svaki server na kome radi SQL server potrebna je licenca za pristup serveru i za svaki klijent koji pristupa SQL serveru potrebna je licenca za klijentski pristup Za SQL Server 2000 Enterprise i Standard Edition potrebno je da na sistemu postoji Windows 2000 Server, Windows 2000 Datacenter Server ili Wundows 2000 Advanced Server dok je za Personal Edition potreban Windows 98 ili Windows 2000 Profesional mada e naravno raditi i na svim izdanjima Windows-a na kojima radi i izdanje za preduzee Za instalaciju SQL servera 2000 potrebno je : Klikne se na opciju SQL Server 2000 Components da bi instalacija SQL servera otpoela Iyabere se opcija Install Database Server Izabere se tip instalacije: Server And Client Tools Moemo izabrati Typical, Minimum ili Custom instalaciju, opcija Typical se preporuuje Izabere se opcija Local Computer da bi se naznaio tip instalacije tj. da se instalacija obavlja sa lokalnog a ne udaljenog raunara, ovo se radi u dijalog boksu Computer Name Ako se SQL server instalira na odvojenoj radnoj stanici a ne u mrei izabere se opcija Use The Local System Account u suprotnom se izabere opcija Use a Domain user account 7

Glava 2 - Instalacija i podeavanje klijentskog i serverskog softvera Izabere se opcija Windows Authentication Mode (moe se izabrati i integrisana bezbednost tj. SQL autentifikacija i Windows autentifikacija, i za tu opciju se navede password za administratora sistema- sa) Dalji postupak instalacije odvija se automatski

Posle zavrene instalacije potrebno je izvriti konfigurisanje SQL servera. U tu svrhu je potrebno pokrenuti Enterprize Manager , kliknuti desnim tasterom na ime servera i izabrati opciju Properties.U General kartici SQL Server Properties (configure) moe se podesiti da SQL Server startuje automatski kada se pokrene Operativni sistem. Takoe klikom na dugme Network Configuration mogu se podesiti mreni protokoli i mrene biblioteke.Postoji mogunost podeavanja memorije korienjem kartice Memory, podeavanje bezbednosti SQL servera korienjem kartice Security itd. Za podeavanje klijentskih parametara koristi se Client Network Utility .U kartici General aplikacije Client Network Utility se podeavaju klijentski protokoli.Sve mrene biblioteke klijenta su prikazane u kartici Network Libraries itd. Klijentska instalacija Da bi se instalirao klijentski softfer pod treom stavkom odabere se opcija Client Tools Only . Select Components dialog box se pojavljuje u kome se biraju komponente koje se ele instalirati.Difolt opcija je Management Tools, Client Connectivity, Books Online, and Development Tools . Ostali postupak instalacije je isti kao i za serversku instalaciju.

Glava 3 - Korienje Transact SQL a na SQL server bazi podataka

3.Korienje Transact SQL a na SQL server bazi podataka


Transact-SQL omoguuje da se administrira instanca SQL servera, kreiraju objekti SQL servera i da se manipulie sa njima. Svaka aplikacija koja komunicira sa SQL serverom ini to slanjem Transact-SQL naredbi bez obzira na korisniki interfejs aplikacije. SQL Query Analyzer je grafiko okruenje koje omogiava da piemo, testiramo i izvravamo Transact-SQL naredbe. Tri tipa transact-SQL naredbi su DDL, DCL, i DML. Jezik za definisanje podataka (Data Definition Language) DDL se koristi da se definie i upravlja svim osobinama baze podataka.DDL podrava definiciju ili deklaraciju objekata baze podataka kao to su npr. tabele i pogledi.Veina DDL naredbi ima oblik :

CREATE ime_objekta ALTER ime_objekta DROP ime_objekta

Primer1: USE Northwind CREATE TABLE Importers ( CompanyID int NOT NULL, CompanyName varchar(40) NOT NULL, Contact varchar(40) NOT NULL ) Primer2 USE Northwind ALTER TABLE Importers ADD ContactTitle varchar(20) NULL Primer 3 : USE Northwind DROP TABLE Importers

Glava 3 - Korienje Transact SQL a na SQL server bazi podataka Data Control Language (DCL ) Jezik za kontrolu podataka se koristi da kontrolie dozvolu nad objektima baze podataka.Dozvola se kontrolie korienjem naredbi GRANT, REVOKE i DENY . Primer 1: USE Northwind GRANT SELECT -- Odobrava se izvrsavanje SELECT naredbe svima koji imaju -- public pravo pristupa tabeli Customers ON Customers TO PUBLIC Primer 2: USE Northwind REVOKE SELECT --Ponitava dozvolu koju je naredba GRANT dodelila ON Customers TO PUBLIC Primer 3: USE Northwind -- zabrana komande SELECT nad tabelom Customers DENY SELECT ON Customers TO PUBLIC Jezik za manipulaciju podacima (DML ) Jezik za manipulaciju podacima se koristi da se selektuju, ubace, auriraju podaci u objektima definisani sa jezikom za definisanje podataka.

10

Glava 3 - Korienje Transact SQL a na SQL server bazi podataka

Primer SELECT naredbe : USE Northwind SELECT CustomerID, CompanyName, ContactName FROM Customers WHERE (CustomerID = 'alfki' OR CustomerID = 'anatr') ORDER BY ContactName

Primer INSERT naredbe : USE Northwind INSERT INTO Territories VALUES (98101, 'Seattle', 2) Primer UPDATE naredbe : USE Northwind UPDATE Territories SET TerritoryDescription = 'Downtown Seattle' WHERE TerritoryID = 98101

Primer DELETE naredbe : USE Northwind DELETE FROM Territories WHERE TerritoryID = 98101

11

Glava 3 - Korienje Transact SQL a na SQL server bazi podataka

Transact-SQL sintaksni elementi Ime objekta u bazi podataka se naziva identifikator.Identifikator se onda koristi za obraanje objektu. Primer: CREATE TABLE TableX (KeyCol INT PRIMARY KEY, Description NVARCHAR(80)) Ovde se kreira tabela sa identifikatorom TableX , koja sadri celobrojno polje sa indentifikatorom KeyCol, i string polje do 80 karaktera sa identifikatorom Description.Ukoliko identifikatori imaju isti naziv kao neka rezervisana re ili u nazivu identifikatora postoji praznina onda se oni stavljaju izmeu zagrada []. Primer: SELECT * FROM [My Table] WHERE [Order] = 10 Lokalne promenljive se deklariu korienjem naredbe DECLARE koja ima sledeu sintaksu : DECLARE @localna_promenljiva tip_podatka Vie lokalnih promenljivih moe da se napravi pomou jedne naredbe DECLARE na sledei nain : DECLARE @var1 int, @var2 int Kada se lokalna promenljiva prvi put napravi ona ima vrednost NULL SET @myCharVariable = Hello World! Globalne promenljive imaju dupli znak @@ i korisnik ih ne moe napraviti. Primer : USE Northwind DECLARE @EmpIDVar INT SET @EmpIDVar = 3 SELECT * FROM Employees WHERE EmployeeID = @EmpIDVar + 1 Komentari komentar u jednoj liniji --komentar u vie linija /*komentar */

12

Glava 3 - Korienje Transact SQL a na SQL server bazi podataka Operatori U SQL serveru su definisani aritmetiki operatori (*, /, %, +, -), operatori poreenja (=,>,<,>=,<=,<>), logiki operatori (AND, OR, NOT), operator za povezivanje stringova (+).Prilikom korienja operatora potrebno je voditi rauna o prioritetu operatora koji je isti kao i u ostalim programskim jezicima. Elementi za kontrolu toka IF...ELSE naredba IF naredba se koristi za testiranje uslova. Ako je vrednost uslova koji se testira istinit izvrava se naredba ili blok naredbi koji slede posle IF naredbe, u protivnog se izvrava naredba ili blok naredbi koji slede ispod komande ELSE. Primer : DECLARE @MojString char(2) -- promenljivoj @MojString se dodeljuje sluajno generisani string SET @MojString = CHAR( FLOOR( 26* RAND())+ ASCII('A') ) --PRINT @MojString IF @MojString = 'C' PRINT 'Dobio si C' ELSE PRINT 'Nisi dobio C' Blok narednbi Predstavlja skup naredbi Transact-SQL-a koji poinje korienjem kljune rei BEGIN a zavrava se sa END. SQL server ih tretira kao jednu celinu. WHILE konstrukcija Naredba WHILE testira neki uslov i sve dok je on istinit izvrava se naredba ili blok naredbi koji slede ispod naredbe WHILE. Primer: USE MojaBaza CREATE TABLE [New Table] ( ColumnA INT, ColumnB CHAR(3), ColumnC CHAR(5) ) 13

Glava 3 - Korienje Transact SQL a na SQL server bazi podataka

-- deklaracija lokalne promenljive DECLARE @MojBrojac INT SET @MojBrojac = 0 WHILE (@MojBrojac <26) BEGIN INSERT INTO [New Table] VALUES( @MojBrojac+1, CHAR( @MojBrojac + ASCII('A')) , CHAR( @MojBrojac + ASCII('a') ) ) SET @MojBrojac = @MojBrojac + 1 END Naredba CASE Naredba CASE predstavlja naredbu viestruke selekcije. Njena sintaksa je : CASE izraz WHEN vrednost_1 THEN rezultat_1 WHEN vrednost_2 THEN rezultat_2 . . WHEN vrednost_N THEN rezultat_N Primer 1 : USE pubs SELECT title, price, 'Tip' = CASE type WHEN 'mod_cook' THEN 'Modern Cooking' WHEN 'trad_cook' THEN 'Traditional Cooking' WHEN 'psychology' THEN 'Psychology' WHEN 'business' THEN 'Business' ELSE 'Not yet decided' END FROM titles

14

Glava 3 - Korienje Transact SQL a na SQL server bazi podataka

Drugi oblik naredbe CASE je : CASE WHEN izraz_1 THEN rezultat_1 WHEN izraz_2 THEN rezultat_2 WHEN izraz_n THEN rezultat_n Primer: USE pubs SELECT title, price, 'Kategorizacija'=CASE WHEN price < 10.00 THEN 'Jeftin' WHEN price BETWEEN 10.00 AND 20.00 THEN 'Prosecna cena' WHEN price > 20.00 THEN 'Skup' ELSE 'Nepoznata cena' END FROM titles

15

Glava 4 - Dizajniranje SQL server baze podataka

4.Dizajniranje SQL server baze podataka


SQL server baza moe imati teoretski 2 na 31. objekata.SQL server instalacija ukljuuje u sebe 6 baza podataka : master, model, tempdb, pubs, Northwind, i msdb.Svaka baza podataka sastoji se najmanje od 2 fajla i to jedan za podatake a drugi je log fajl transakcija , a obino baza sadri nekoliko fajlova.SQL server 2000 sadri tri grupe fajlova i to : Primarni fajlovi podataka( mdf) Sekundarni fajlovi podataka (ndf ) Log fajlovi (ldf i sadri sve neophodne podatke da se rekonstruiu transakcije) Svaka baza ima 5 osobina : Logiko ime fajla Fiziko ime fajla Poetnu veliinu Maksimalnu veliinu Inkrement porasta Grupe fajlova Omoguuju da grupiemo fajlove u admistrativne svrhe ili svhu uvanja podataka.Grupe fajlova mogu da poboljaju performanse baze podataka dozvoljavajui da baza bude kreirana na vie diskova. Postoji tri tipa grupa fajlova : 1. Primarna grupa fajlova Sadri primarni dejta fajl, sistemske tabele koje definie korisnik, objekte, dozvole za bazu .Kada se kreira baza sistemske tabele se kreiraju automatski. 2. Korisniki definisane grupe fajlova : ukljuuje sve grupe fajlova koje kreira korisnik u toku kreiranja baze podataka ili kasnije u toku njene izmene 3. Podrazumevane grupe fajlova : uva sve strane za tabele i indekse za koje nije specificirana grupa fajlova kada su kreirani. Podrazumevana grupa fajlova je primarna grupa fajlova mada se to moe promeniti. Nazivi objekata u SQL serveru Potpuno ime objekta u SQL serveru ima oblik : [ServerName.[DatabaseName.[OwnerName.]]]ObjectName Podrazumeva se da objekte u bazi podataka mogu da kreiraju samo korisnici koji u sistemu imaju ulogu sysadm ili ulogu u bazi podataka db_owner ili db_ddladmin. Pojedinim korisnicima se takoe moe dodeliti pravo da kreiraju objekte u bazi podataka i tada e oni biti vlasnici objekata. Kreator baze podataka smatra se njenim vlasnikom ili dbo (database owner). Svi objekti koje on napravi u bazi podataka bie navedeni kao vlasnitvo dbo a ne kao vlasnitvo pojedinanog korisnikog imena. Pretpostavimo da korisnik baze podataka koji se na bazu prijavljije podimenom Luka kreira tabelu pod nazivom MojaTabela, tada je vlasniki odreeno ime tabele Luka.MojaTabela . 16

Glava 4 - Dizajniranje SQL server baze podataka Poto objekat (tabela) ima konkretnog vlasnika svaki korisnik ove tabele mora da obezbedi vlasniki odreeno ime da bi SQL server mogao da razrei ime tabele.Ako korisnik sa imenom Marko koji je istovremeno vlasnik baze podataka kreira tabelu MojaTabela tada e ime te tabele biti dbo.MojaTabela . Pored toga poto je dbo uvek podrazumevani vlasnik svaki korisnik bi mogao tu tabelu da oznai kao dbo. Dizajniranje baze podataka podrazumeva identifikaciju sistemskih zahteva,identifikaciju sistemskih ciljeva, identifikaciju iznosa podataka kao i tipova podataka, identifikacija kako e se podaci koristiti, i identifikacija biznis pravila sistema.

Kreiranje baze Najjednostavniji nain da se baza kreira je korienje SQL Server Enterprise Manager-a i to u nekoliko koraka : 1. U Enterprise Manageru selektuje se opcija Databases 2. Pokrene se Wizard klikom na ikonicu u obliku tapia 3. Izabere se Create Database Wizard 4. Pojavljuje se prozor u kome se definie naziv baze i mesto gde e se uvati fajlovi 5. Potrebno je zatim definisati naziv i poetnu veliinu primarnog dejta fajla 6. Zatim se definie maksimalna veliina i inkrement porasta primarnog dejta fajla 7. Definie se ime i poetna veliina fajla transakcionog loga 8. Definie se maksimalna veliina i inkrement porasta fajla transakcionog loga Osobine ovako kreirane baze mogu se promeniti desnim klikom na ime baze u prozoru SQL Server Enterprise Manager-a i izabere se stavka properties.Baza se moe obrisati tako to se selektuje u prozoru Enterprize Managera i pritisne dugme delete. Jo jedan nain za kreiranje baze je korienjem naredbe CREATE DATABASE. CREATE DATABASE database_name [ON {[PRIMARY] (NAME = logical_name, FILENAME ='physical_name' [,SIZE = size] [,MAXSIZE = max_size | UNLIMITED] [,FILEGROWTH = growth_increment]) }[,...n]] [LOG ON {(NAME = logical _name, FILENAME = 'physical_name' [,SIZE=size | UNLIMITED] [,MAXSIZE = max_size | UNLIMITED] [,FILEGROWTH = growth_increment])} [,...n]] [FOR LOAD | FOR ATTACH] 17

Glava 4 - Dizajniranje SQL server baze podataka

ON se koristi udva skuaja i to prvo da bi se definisala lokacija datoteke u kojoj se skladite podaci i da bi se definisala ista informacija za skladitenje dnevnika (engl. log). Kljuna re PRIMARY oznaava da ono to sledi predstavlja primarnu datoteku u kojoj se skladite podaci NAME predstavlja logiko ime datoteke tj. ime koje SQL serveru slui za referenciranje te datoteke FILENAME fiziko ime datoteke operativnog sistema na disku , istog je oblika kao i ime baze samo ima ekstenziju mdf , dok e dnevnik imati isto ime ali e sadrati jo nastavak _log i ekstenyiju ldf. SIZE - veliina baze podataka izraena u MB MAXSIZE - SQL server ima mehanizam da alocira dodatni prostor na disku kada je to potrebno. MAXSIZE je maksimalna veliina do koje baza moe da ide. Ako korisnik pokua da unese podatke posle te veliine dobie poruku o greci FILEGROWTH definie inkrement porasta fajla baze podataka Primer :
CREATE DATABASE Accounting ON (NAME = 'Accounting', FILENAME='c:\ProgramFiles\MicrosoftSQLServer\mssql\data\AccountingData.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5) LOG ON (NAME = 'AccountingLog', FILENAME = 'c:\Program Files\Microsoft SQL Server\mssql\data\AccountingLog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB) GO

ALTER I DROP KOMANDE U Query Analyzer-u izvrimo najpre komandu EXEC sp_helpdb Accounting Sada elimo da bazu proirimo da bude veliine 100 MB : ALTER DATABASE Accounting MODIFY FILE ( NAME = Accounting', SIZE = 100 MB ) 18

Glava 4 - Dizajniranje SQL server baze podataka

Da bi se proverili rezultati potrebno je ponovo izvriti gornju komandu. Brisanje baze vri se komandom USE master ne moze se brisati baza koja se trenutno koristi DROP DATABASE Accounting

19

Glava 5 - Tabele

5.Tabele
Tabele su osnovne jedinice za uvanje podataka u relacionoj bazi podataka.Svaka kolona u tabeli ima odreena svojstva. Najvanije svojstvo je tip podataka kolone.Pored tipova podataka koje obezbeuje SQL server mogu se definisati i sopstveni tipovi podataka.Sistemski tipovi podataka u SQL serveru dati su u tabeli 1. Kreiranje tabele 1. Startujemo Enterprise Manager 2. Otvorimo bazu u kojoj elimo da kreiramo tabelu 3. Kliknemo na Tables a zatim na dugme u obliku zvevde New (ili desni klik na Tables pa New table...) 4. SQL server otvara table designer 5. Definiemo nazive polja tabele kao i tipove podataka Ubacivanje redova u tabelu U Enterprise Manager-u desnim tasterom kliknemo na naziv tabele i izaberemo opciju Open Table a zatim Return All Rows . Mogue je i izabrati opciju Return Top ime se bira broj vrsta tabele koji se eli prikazati.Ovako otvorena tabela se moe popunjavati novim zapisima, zapisi se mogu modifikovati ili brisati.Korienjem dugmia sa palate alatki moe se prikazati okno sa dijagramom , okno sa mreom i SQL okno.

Tabela 1- prvi deo

20

Glava 5 - Tabele

Tabela 1 drugi deo .

CREATE TABLE Sintaksa Transact-SQL naredbe za kreiranje tabele je : CREATE TABLE [database.[owner.] table_name ( column_name datatype [identity|constraint|NULL|NOT NULL] [...] )

21

Glava 5 - Tabele Kada kolona postane kolona identiteta, SQL server toj koloni automatski dodeljuje broj svaki put kada se unese neki red tabele.Broj od koga SQL server poinje da broji naziva se poetna vrednost, a vrednost za koju se poetna vrednost uveava ili smanjuje naziva se inkrement. Podrazumevana vrednost za poetnu vrednost i inkrement je 1. Kolona identiteta mora biti numerika a u praksi se skoro uvek implementira sa celebrojnim tipom podataka. Korienje je prilino jednostavno : samo se ukljui kljuna re IDENTITY odmah iza tipa podatka. Oznaka NULL / NOTNULL govori da li kolona koja je u pitanju prihvata vrednost NULL ili ne Ogranienja za kolone se odnose na podatke koje se mogu unositi u kolonu. Primer : USE Accounting CREATE TABLE Customers ( CustomerNo int IDENTITY NOT NULL, CustomerName varchar(30) NOT NULL, Address1 varchar(30) NOT NULL, Address2 varchar(30) NOT NULL, City varchar(20) NOT NULL, State char(2) NOT NULL, Zip varchar(10) NOT NULL, Contact varchar(25) NOT NULL, Phone char(15) NOT NULL, FedIDNo varchar(9) NOT NULL, DateInSystem smalldatetime NOT NULL ) Da bi se proverilo da li je tabela zaista kreirana moe se izvriti sistemska uskladitena procedura sp_help: sp_help Customers

Izmene u tabeli i brisanje tabele Naredba ALTER TABLE bie objanjena na konkretnom primeru. Kreirajmo najpre tabelu Employees korienjem sledeeg SQL skripta u Query Analyzery:

22

Glava 5 - Tabele USE Accounting CREATE TABLE Employees ( EmployeeID int IDENTITY NOT NULL, FirstName varchar(25) NOT NULL, MiddleInitial char(1) NULL, LastName varchar(25) NOT NULL, Title varchar(25) NOT NULL, SSN varchar(11) NOT NULL, Salary money NOT NULL, PriorSalary money NOT NULL, LastRaise AS Salary - PriorSalary, HireDate smalldatetime NOT NULL, TerminationDate smalldatetime NULL, ManagerEmpID int NOT NULL, Department varchar(25) NOT NULL ) Izvravanjem narsedbe: EXEC sp_help Employees kao rezultat se dobijaju karakteristike ove tabele. Promenimo sada ovu tabelu korienjem sledee naredbe : ALTER TABLE Employees ADD PreviousEmployeer varchar(30) NULL Rezultat ove naredbe je dodavanje jo jedne kolone u tabelu Employees. To se moe proveriti ponovnim izvravanjem sistemsku uskladitene procedure Employees Brisanje tabele iz baze vri se pomou naredbe DROP TABLE : USE Accounting DROP TABLE Employees

Ogranienja Posmatrano na nivou kolone ili tabele ogranienje obezbeuje da podaci ispunjavaju odreena pravila vezana za integritet podataka.

23

Glava 5 - Tabele Ogranienje PRIMARY KEY Primarni kljuevi su jedinstveni identifikatori za svaki red. Maraju da sadrr jedinstvene vrednosti i zato ne mogu da imaju vrednost NULL. Tabela moe da ima maksimalno jedan primarni klju. Primarni klju obezbeuje jedinstvenost kolone koja je definisana kao primarni klju. Kreirajmo sada tabelu Customers uz ogranienje da kolona CustomerNo bude primarni klju (Logino je da svaki korisnik ima jedinstven broj). USE Accounting CREATE TABLE Customers ( CustomerNo int IDENTITY NOT NULL PRIMARY KEY, CustomerName varchar(30) NOT NULL, Address1 varchar(30) NOT NULL, Address2 varchar(30) NOT NULL, City varchar(20) NOT NULL, State char(2) NOT NULL, Zip varchar(10) NOT NULL, Contact varchar(25) NOT NULL, Phone char(15) NOT NULL, FedIDNo varchar(9) NOT NULL, DateInSystem smalldatetime NOT NULL ) Ako tabela Customers ve postoji u naoj bazi ali nije definisan primarni klju to je mogue naknadno uraditi korienjem sledee naredbe: USE Accounting ALTER TABLE Customers ADD CONSTRAINT PK_Customers PRIMARY KEY(CustomerNo ) Naravno da se ovo moe jednostavnije uraditi u Enterprise Manger-u desnim klikom na ime tabele pa izborom opcije Design Table, zatim selektujemo kolonu koju elimo da proglasimo za primarni klju i kljiknemo na dugme u obliku kljua. Ogranienje FOREIGN KEY Kada se tabeli doda spoljnji klju stvara se zavisnost izmeu tabele za koju se definie spoljni klju (tabela na koju se upuuje) i tabele na koju se odnosi spoljnji klju (tabela koja upuuje) Ilustracija stranog kljua je data sql skriptom :

24

Glava 5 - Tabele USE Accounting CREATE TABLE Orders ( OrderID int IDENTITY NOT NULL PRIMARY KEY, CustomerNo int NOT NULL FOREIGN KEY REFERENCES Customers(CustomerNo), OrderDate smalldatetime NOT NULL, EmployeeID int NOT NULL ) Treba obratiti panju da kolona a koju se upuuje mora imati primarni klju. Za razliku od primarnog kljua nismo ogranieni na jedan spoljnji klju po tabeli.Kreirajmo jo jedan spoljnji klju za tabelu Orders . Sada emo da referenciramo tabelu Employees tj njenu kolonu EmployeeID ALTER TABLE Orders ADD CONSTRAINT FK_EmployeeCreateOrder FOREIGN KEY(EmployeeID) REFERENCES Employees(EmployeeID)

Orders OrderID(PK) CustomerNo(FK) OrderDate EmployeID(FK)

Employees EmployeID(PK)

Customers CustomerNo(PK)

ematski prikaza relacija izmeu tabela

25

Glava 5 - Tabele Ogranienje UNIQUE Ovo ogranienje zahteva jedinstvenu vrednost za celu kolonu. Za razliku od primarnog kljua ovo ogranienje ne spreava automatski vrednost NULL. Ipak ako se dozvoli vrednost NULL nju moemo uneti samo jedanput.U jednoj tabeli moemo imati vie ogranienja . Primer: USE Accounting CREATE TABLE Shippers ( ShipperID int IDENTITY NOT NULL PRIMARY KEY, ShipperName varchar(30) NOT NULL, Address varchar(30) NOT NULL, City varchar(25) NOT NULL, State char(2) NOT NULL, Zip varchar(10) NOT NULL, PhoneNo varchar(14) NOT NULL UNIQUE ) Pravljenje ogranienja UNIQUE za postojee tabele : ALTER TABLE Employees ADD CONSTRAINT AK_EmployeeSSN UNIQUE(PhoneNo ) Ogranienje CHECK Ovo ogranienje se ne mora odnositi samo na jednu kolonu . Moe se odnositi na vie kolona pa ak i celu tabelu. ALTER TABLE Customers ADD CONSTRAINT CN_CustomerDateInSystem CHECK (DateInSystem <= GETDATE()) Ovo ogranienje onemoguava da se unese datom u budunosti. Ako sada pokuamo da u tabelu ubacimo datum u budunosti dobijamo poruku o greci

26

Glava 5 - Tabele Primer kaskadnog auriranja i pokuaja da se unese datum vei od sistemskog datuma: INSERT INTO Customers -- Our Customer. -- Remember that CustomerNo is -- an Identity column VALUES ('Billy Bob''s Shoes', '123 Main St.', ' ', 'Vancouver', 'WA', '98685', 'Billy Bob', '(360) 555-1234', '931234567', '12-31-2049' ) Ogranienje DEFAULT Napraviemo jednostavniju verziju tabele Shippers koja sadri podrazumevanu vrednost. CREATE TABLE Shippers ( ShipperID int IDENTITY NOT NULL PRIMARY KEY, ShipperName varchar(30) NOT NULL, DateInSystem smalldatetime NOT NULL DEFAULT GETDATE () ) U ovu tabelu je sada samo potrebno unositi Shippername , dok se za polje DateInSystem automatski uzima sistemsko vreme ako mi nita ne unesemo. Ogranienje se moe dodati u postojeu tabelu : USE Accounting ALTER TABLE Customers ADD CONSTRAINT CN_CustomerDefaultDateInSystem DEFAULT GETDATE() FOR DateInSystem .

27

Glava 6 - Indeksi

6.Indeksi
U relacionoj bazi podataka indeks je poseban objekat koji bazi podataka dozvoljava brz pristup redovima u tabeli na osnovu vrednosti jedne ili vie kolona.Microsoft SQL server ima dve grupe indeksa : grupisane i negrupisane .Grupisan indeks odreuje redosled kojim su redovi neke tabele fiziki sauvani.Negrupisan indeks je sa druge strane zaseban objekat unutar baze podataka koji ukazuje na posebne redove unutar tabele ali ne ukazuje kako su redovi sauvani. Indeks koji referencira jednu kolonu naziva se jednostavan indeks dok indeks koji referencira vie kolona naziva se kompozitni ili sloeni indeks.Pored indeksa koji definiemo sql e automatski napraviti grupisani indeks koji se zove indeks primarnog kljua.Primarni klju je kolona koja se koristi za jedinstveno identifikovanje svakog reda.Grupisani indeks je jedinstven za tabelu a tabela koja sadri grupisani indeks naziva se grupisana tabela.Grupisani indeksi su bri od negrupisanih indeksa. negrupisani indeksi se postavljaju na kolone koje imaju veliki stepen selektivnosti tj. imaemo 95 % ili vie razliitih redova koji imaju razliite vrednosti u toj koloni. Treba napomenuti da indeksi zauzimaju prostor.Indeks se koristi samo ako se prva kolona indeksa (indeks moe biti sastavljen od vie kolona) pojavljuje u upitu.esto se primarni klju pravi sa grupisanim indeksom. Opseg Opseg (engl. extent) je osnovna jedinica za skladitenje i alociranje prostora za tabele i indekse. Sastoji se od 8 susednih strana podataka pri emu je veliina strane 64 KB. Kad se unese prvi red u tabelu SQL server alocira memoriju za 8 strana tj. ceo opseg. Kada je opseg pun unoenje sledeeg reda nee zauzeti opseg koji odgovara veliini tog loga ve prostor koji odgovara veliini itavog opsega. Time SQL server tedi vreme koje bi mu bilo potrebno da za svaki novi slog alocira prostor. Strana Strana je jedinica za alokaciju unutar pojedinog opsega.Stranu treba shvatiti kao neku vrstu kontejnera i za tabele i za indekse redova podataka.Stranu pored redova ine : zaglavlje strane, sami podaci u redu i ofset redova.

strana podataka u SQL serveru 28

Glava 6 - Indeksi

Postoje strane podataka, strane indeksa, BLOB strane gde se smetaju veliki binarni objekti (slike kao i tipovi podataka text i ntext), strane globalnih alokacionih mapa gde se nalaze informacije koje nam ukazuju gde je alociran prostor koji nam je na raspolaganju. Kada se strana popuni vri se tzv. razdvajanje strana tj. ne vri se samo alociranje nove strane ve polovina podataka prelazi na susednu tranu.Jedino ako sekoristi grupisani indeks tada se ne vri razdvajanje strana. Pristupanje podacima u SQL serveru Postoji dva naina na koje SQL Server moe pronai podatke koje zahtevamo: pregledanjem tabela korienjem indeksa Pregledanje tabela je prilino jasan proces.SQL server poinje od fizikog poetka tabele tako to posmatra svaki red u tabeli. Kada pronae redove koji odgovaraju kriterijumu naeg upita ukljuuje ih u skup rezultata. U nekim sluajevima pregledi tabeli mogu biti najbri metod pristupa. To je sluaj kada traimo podatke iz malih tabela. Tana veliina pri kojoj imamo taj sluaj zavisi i od irine tabele i od vrste upita. Ukoliko se koriste indeksi tada se pri generisanju upita vri proces optimizacije upita pri emu se posmatraju svi indeksi koji su na raspolaganju i bira se najbolji. Kada se odabere indeks SQL server prolazi kroz strukturu stabla do mesta gde su podaci koji odgovaraju kriterijumu upita. Kreiranje indeksa 1. 2. 3. 4. Pokrenemo vizard iz Enterprise Managera Izaberemo Create Index Wizard Upiemo naziv baze i tabele za koju kreiramo indekse Kada se tabela prikae izaberemo imena kolona koja elimo da ukljuimo u indeks 5. Prihvatimo podrazumevane vrednosti i indeks je kreiran Indeks primarnog kljua 1. 2. 3. 4. Otvorimo Table designer Izaberemo kolonu koju elimo da proglasimo za primarni indeks kliknemo na ikonicu u obliku kljua Primarni indeks je kreiran

29

Glava 6 - Indeksi Pravljenje prostog indeksa 1. Posle otvaranja dizajnera tabele pritisnimo na dugme Manage Indexes/Keys 2. Izaberemo opciju New 3. Izaberemo kolonu koja e da predstavlja prost indeks 4. Izaberemo opcije UNIQUE 5. gotovo Mogue je indekse naknadno menjati , promeniti im naziv, parametre ili ih obrisati.

30

Glava 7 -Relacije i pristupanje i modifikovanje podataka u SQL server bazi, izvoz i uvoz podataka

7.Relacije i pristupanje i modifikovanje podataka u SQL server bazi, izvoz i uvoz podataka
Relacije Logiki postoje tri vrste relacija : jedan-prema-jedan , u kome je svaki red iz jedne tabele povezan a jednim ili nula redova iz druge tabele, jedan-prema-vie u kome je svaki red iz jedne tabele povezan sa nula, jednim ili vie redova iz druge tabele, vieprema-vie u kome je svaki red iz jedne tabele povezan sa nula, jednim ili vie redova iz druge tabele i svaki red iz druge tabele povezan sa nula, jednim ili vie redova iz druge tabele. Pravljenje relacija 1. 2. 3. 4. Otvorimo Table Designer za tabelu koja sadri strani klju Pritisnemo dugme Relationship na paleti alatki Table Designer Izabere se opcija New da bi se kreirala nova relacija Izabere se na levoj strani tabela iji primarni klju predstavlja strani klju gornje tabele, a na desnoj strani gornja tabela pod opcijom Foreign key table 5. Izaberu se odgovarajua polja za obe tabele 6. Close Dijagrami baza podataka 1. 2. 3. 4. Desni klik na opciju Diagrams Izabere se Create Database Diagram Posle startovanja Wizarda odaberu se tabele koje e biti prikazane Finish

Primer:

Korisnik Slozeni indeks

Porudzbine PorudzbinaID(PK)

KorisnikID BrojLokacije

BrojKorisnika LokacijaKorisnika ImeKorisnika

FK

31

Glava 7 -Relacije i pristupanje i modifikovanje podataka u SQL server bazi, izvoz i uvoz podataka USE Accounting CREATE TABLE Korisnik ( KorisnikID int NOT NULL, BrojLokacije smallint NULL, ImeKorisnika varchar(50) NOT NULL, CONSTRAINT Korisnik_UNQ UNIQUE BrojLokacije) )

CLUSTERED

(KorisnikID,

CREATE TABLE Porudzbine ( PorudzbinaID int NOT NULL IDENTITY CONSTRAINT Porudzbine_PK PRIMARY KEY NONCLUSTERED, BrojKorisnika int NOT NULL, LokacijaKorisnika smallint NULL, CONSTRAINT FK_Porudzbine_Korisnik FOREIGN KEY (BrojKorisnika, LokacijaKorisnika) REFERENCES Korisnik (KorisnikID, BrojLokacije ) ) Pristupanje podacima korienjem SELECT naredbe Sintaksa naredbe SELECT je : SELECT [TOP n [PERCENT]] column list FROM source_list [WHERE search_condition] [ORDER BY expression] Biranje svih kolona SELECT * FROM table_name Isprobati ovo u Query Analyzer u i pokazati da je to identino sa otvaranjem u Enterprise Manager-u izborom opcije Return All Rows

Pr. Biranje jedne kolone USE Accounting SELECT ImeKorisnika FROM Korisnik 32

Glava 7 -Relacije i pristupanje i modifikovanje podataka u SQL server bazi, izvoz i uvoz podataka Pravljenje pseudonima USE Accounting SELECT Imekorisnika AS Imena FROM Korisnik USE Northwind SELECT ProductID, ProductName, UnitPrice FROM Products WHERE UnitPrice > 40 ORDER BY UnitPrice ASC USE pubs SELECT p.pub_id, p.pub_name FROM publishers AS p

- upotreba pseudonima

INTO klauza USE Northwind SELECT FirstName, LastName INTO EmployeeNames FROM Employees

Pravljenje spojeva Unutranji spoj USE Pubs SELECT t.Title, p.Pub_name FROM Publishers AS p INNER JOIN Titles AS t ON p.Pub_id = t.Pub_id ORDER BY Title ASC Spoljanj spojevi Levi spoljanji spoj

33

Glava 7 -Relacije i pristupanje i modifikovanje podataka u SQL server bazi, izvoz i uvoz podataka USE Pubs SELECT a.Au_fname, a.Au_lname, p.Pub_name FROM Authors a LEFT OUTER JOIN Publishers p ON a.City = p.City ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC Vraa sve redove iz leve tabele i samo one redove iz desne tabele za koje je uslov spajanja taan.Postoji jo i RIGHT OUTER JOIN i FULL OUTER JOIN.

Naredba INSERT Sintaksa ove naredbe je : INSERT [INTO] table_or_view [(column_list)] VALUES (values_list) U Enterprise Manageru desnim dugmetom kliknemo na tabelu, izaberemo OpenTable i izaberemo Query .Tade e query dizajner da otvori sva etiri okna. 1. Izaberemo dugme Change Query Type 2. Izaberemo Insert ino 3. Prikazuje se tabela koja sadri Column i New Value Primer: USE Pubs CREATE TABLE NewBooks ( BookID INT IDENTITY(1,1) NOT NULL, BookTitle VARCHAR(80) NOT NULL, Price FLOAT NOT NULL, BookType CHAR(12) NOT NULL CONSTRAINT [booktype_df] DEFAULT ('Undecided'), PubCity VARCHAR(50) NULL ) USE Pubs INSERT INTO NewBooks (BookTitle, PubCity, Price) VALUES ('Life Without Fear', 'Chicago', 124.34)

34

Glava 7 -Relacije i pristupanje i modifikovanje podataka u SQL server bazi, izvoz i uvoz podataka Primer ubacivanja vie redova: USE Pubs INSERT INTO NewBooks (BookTitle, BookType, Price) SELECT Title, Type, price FROM Titles WHERE Type = 'mod_cook' UPDATE komanda za modifikovanje podataka Osnovna sintaksa naredbe UPDATE je : UPDATE table_or_view SET update_list [WHERE (condition)] Primer1: USE Pubs UPDATE NewBooks SET Price = Price * 1.1 Primer2: USE Pubs UPDATE NewBooks SET BookType = 'popular' WHERE BookType = 'mod_cook'

Naredba DELETE Sintaksa ove naredbe je: DELETE table_or_view [FROM table_sources] [WHERE where_condition]

35

Glava 7 -Relacije i pristupanje i modifikovanje podataka u SQL server bazi, izvoz i uvoz podataka Primer : Brie sve redove u kojima je Royality = 10 USE Pubs DELETE NewBooks FROM Titles WHERE NewBooks.BookTitle = Titles.Title AND Titles.Royalty = 10 Primer: Brisanje svih vrsta iz Test1 tabele: DELETE NewBooks ili USE Pubs TRUNCATE TABLE NewBooks Uvoz i izvoz podataka 1. 2. 3. 4. 5. Pokrenemo Wizard iz Enterprise Manager-a Izaberemo opciju Data Transformation Services Izabere se Import opcija i izabere se sors baze Uveze se neka access baza ..... Slino je sa izvozom podataka.

36

Glava 8 - Administriranje i bezbednost SQL servera

8.Administriranje i bezbednost SQL servera


Administriranje SQL servera Pravljenje rezervnih kopija baza podataka SQL omoguava vie razliitih naina za pravljenje rezervnih kopija baza podataka.Najjednostavnije je napraviti potpunu rezervnu kopiju (full backup).SQL server takoe omoguava pravljenje diferencijalne rezervne kopije baze podataka (Differential Backup) .Pri ovoj rezervnoj kopiji snimaju se samo podaci koji su promenjeni od poslednje potpune rezervne kopije.I trea vrsta rezervnih kopija je rezervna kopija dnevnika transakcija . Dnevnik transakcija je zapis svih transakcija od kad je poslednji put napravljena rezervna kopija dnevnika. Pravljenje rezervne kopije korienjem arobnjaka Create Database Backup : 1. Izaberemo Management posle startovanja arobnjaka 2. Izaberemo Backup Wizard 3. Izaberemo bazu za koju elimo da kreiramo rezervnu kopiju 4. Kreiramo potpunu rezervnu kopiju 5. Unekiramo Check media set name Restauracija baze podataka 1. Desnim tasterom kliknemo na bazu 2. Izaberemo All Tasks pa Restore Database 3. . Bezbednost SQL servera Postoje dve vrste bezbednosti u SQL serveru : integrisana bezbednost NT-a (ili Windows-a 2000) kombinacija bezbednosti NT-a i SQL servera Pomou SQL serverove bezcednosti pravi se identifikator za prijavljivanje koji je potpuno odvojen od podataka za prijavljivanje na mreu. Argumenti za korienje SQL serverove bezbednosti su da nije neophodno da korisnik bude domenski korisnik da bi dobio pristup u sistem, lake se dobija programska kontrola nad korisnikim podacima.Negativna strana je to to korisnik jedanput mora da se prijavi na mreu i jedanput za svaku konekciju na SQL server.Primer pravljenja SQL serverove bezbednosti je korienje naloga "sa".Korienje naloga sa znai da imamo totalni pristup svim podacima. Najuobiajeniji nain za dodavanje korisnika SQL serveru je korienje Enterprise Managera.Izabere se opcija Security zatim se desnim tasterom klikne na Logins i izabere opcija New Login... Bezbednost NT-a je model u kome uzimamo postojee korisnike naloge i grupe domena NT-a i dodajemo im SQL serverova prava.Kreirajmo najpre novi nalog na NT i nazovimo ga TestAccount .Nalog TestAccount se nalazi u domenu local . Izvrimo sada uskladitenu proceduru : EXEC sp_grantlogin 'local\TestAccount' Dobija se povratna poruka koja kae da je pristup omoguen.

37

Glava 8 - Administriranje i bezbednost SQL servera Korisnika prava Najjednostavnija definicija korisnikih prava je ono to korisnik moe odnosno ne moe da uradi. Korisnika prava se mogu podeliti u tri kategorije : Pravo za prijavljivanje Pravo da se pristupi odreenoj bazi podataka Pravo da se obavljaju odreene radnje na odreenim objektima u bazi podataka Odobravanje pristupa odreenoj bazi podataka Da bi se NT korisniku local/TestAccount odobrio pristup u bazu podataka NothwindSecure potrebni je izvriti sledeu uskladitenu proceduru: USE NorthwindSecure EXEC sp_grantdbaccess local\TestAccount' Da bi se uklonio pristup u bazu podataka koristi T-SQL naredba : USE NorthwindSecure EXEC sp_revokedbaccess 'local\TestAccount' Izvravanjem ove uskladitene procedure dobija se poruka da je korisnik uklonjen iz baze podataka. Odobravanje dozvole za objekte iz baze podataka Ako sada korisnik TestAccount pokua da izvri sledee SQL naredbe : USE NorthwindSecure SELECT * FROM Region dobija se poruka da korisnik TestAccount nema pravo pristupa toj bazi. Ako sada administrator sistema izvri sledee naredbe: USE NorthwindSecure GRANT SELECT ON Region To [local\TestAccount] korisnik TestAccount e moi da izvrava SELECT naredbu nad ovom tabelom baze TestAccount. Meutim on nee moi da izvri neku drugu naredbu npr. INSERT.

DENY DENY eksplicitno spreava korisnika da pristupi odreenom objektu. Izvrimo sledeu T-SQL naredbu : USE NorthwindSecure DENY ALL ON Employees TO [local\TestAccount]

38

Glava 8 - Administriranje i bezbednost SQL servera Ovom naredbom se zabranjuju sve akcije nad tabelom Employee za korisnika TestAccount . REVOKE Ova naredba ponitava efekte naredbi GRANT i DENY USE NorthwindSecure REVOKE ALL ON Employees TO [local\TestAccount] Serverske uloge i uloge u bazi podataka Uloga je skup prava pristupa koja se korisniku moe dodeliti jednostavnim dodeljivanjem korisnika u ulogu. Serverske uloge su : sysadmin, serveradmin, setupadmin, securityadmin, processadmin, dbcreator, diskadmin i bulkadmin. Uloge u bazi podataka su : db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladm, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter. Pored toga postoje korisniki definisane uloge u bazi podataka. Kreiranje korisniki definisanih uloga u bazi podataka i dodavanje korisnika u tu ulogu je jednostavno uraditi korienjem Enterprise Manager-a .

39

Glava 9 - Pogledi

9. Pogledi
SQL server nudi mogunost za skladitenje naredbe SELECT kao pogleda.Pogled se moe smatrati virtuelnom tabelom.Moe se koristiti svuda gde se koristi tabela. Pogledi se koriste za izvoenje sledeih funkcija : ograniavanje korisnika samo na odreene kolone ili vrste u tabeli kombinovanje podataka iz vie tabela tako da izgledaju kao jedinstvena tabela da se pojednostavi manipulacija podacima Stvaranje pogleda uz pomo arobnjaka Startujemo wizard Pod Database izbere se Create View Wizard Upie se ime baze Izaberu se tabele iz baze koje e biti prikazane Izabrati kolone koje e biti u pogledu Upiemo ime pogleda Pravljenje pogleda korienjem View Designera Kliknemo na View u okviru nae baze Pritisnemo dugme New u obliku zvezdice Pritisnemo na dugme Add Table Izaberemo kolone iz tabela koje e biti prikazane

View se pregledava isto kao tabela, desnim tasterom se klikne na njega i izabere opcije Return All Rows , a modifikuje sa opcijom Design View Kreiranje pogleda Primer 1: use Pubs GO CREATE VIEW my_view AS SELECT au_lname, au_fname FROM authors Primer 2 : USE Northwind GO CREATE VIEW CustomerOrders AS SELECT o.OrderID, c.CompanyName, c.ContactName FROM Orders o JOIN Customers c ON o.CustomerID = c.CustomerID

40

Glava 9 - Pogledi Pristupanje podacima kroz pogled 1.Dodavanje podataka kroz pogled

// kreiramo jednostavan pogled USE Northwind GO CREATE VIEW CustomerView AS SELECT CustomerID, CompanyName FROM Customers // dodavanje podataka kroz pogled USE Northwind INSERT CustomerView VALUES ('TEST1', 'Test Company') // menjanje podataka kroz pogled USE Northwind UPDATE CustomerView SET CustomerID = 'TEST2' WHERE CustomerID = 'TEST1'

// brisanje podataka kroz pogled USE Northwind DELETE CustomerView WHERE CustomerID = 'TEST2'

41

Glava 10 Uskladitene procedure

10.Uskladitene procedure
Skript je skup naredbi Transact SQL a uskladiten u datoteci.Ove datoteke imaju ekstenziju .sql .S druge strane uskladitene procedure su objekti baze podataka, one se nalaze u datoteci baze podataka, i one se premetaju zajedno sa datotekom ako pravimo repliku baze podataka. Uskladitene procedure komuniciraju sa spoljanjim svetom na dva naina : parametrima i vraenim vrednostima. Parametri su posebna vrsta lokalnih promenljivih definisane u uskladitenoj proceduri.Oni se koriste za predavanje informacija uskladitenoj proceduri (ulazni parametri) ili za primanje podataka iz uskladitenih procedura (izlazni parametri). Vraena vrednost je slina rezultatu funkcije i moe da se dodeli lokalnoj promenljivoj. Vraene vrednosti su uvek celi brojevi.Koriste se za vraanje statusa izvravanja uskladitene procedure. Uskladitena procedura npr. vraa 0 ako je sve dobro prolo ili -1 ako je bilo greke. Postoje sistemske uskladitene procedure i uskladitene procedure koje pravi korisnik.Sistemske uskladitene procedure se nalaze u master bazi podataka i poinju sa _sp. Sistemske i korisniki definisane uskladitene procedure se pozivaju korienjem naredbe EXECUTE ija je sintaksa : EXECUTE ime_procedure Pr. EXECUTE sp_helpdb USE Northwind GO CREATE PROC spShippers AS SELECT * FROM Shippers -- a sada testiranje EXEC spShippers -- kreiramo proceduru za ubacivanje reda u tabelu GO CREATE PROC spInsertShipper @CompanyName nvarchar(40), @Phone nvarchar(24) AS INSERT INTO Shippers VALUES (@CompanyName, @Phone) -- testiranje procedure EXEC spInsertShipper 'Microsoft','123-32129867676'

42

Glava 10 Uskladitene procedure Promene u tabeli Shippers nastale izvravanjem ove uskladitene procedure se mogu videti ponovnim izvravanjem uskladitene procedure spShippers. USE Pubs GO CREATE PROCEDURE [dbo].[ListAuthorNames] AS SELECT [au_fname], [au_lname] FROM [pubs].[dbo].[authors] Izvravanje uskladitene procedure vri se korienjem naredbe : EXECUTE ListAuthorNames , za izvravanje procedure

Kreiranje privremenih uskladitenih procedura Za kreiranje lokalne privremene uskladitene procedure imenu procedure u deklaraciji se dodaje znak # . Ovakva procedura se smeta u TempDB bazu. Za kreiranje globalne privremene uskladitene procedure koristimo dva ova znaka ## ispred imena procedure. Privremena uskladitena procedura postoji dok postoji konekcija na server.

Primer : --create a local temporary stored procedure. CREATE PROCEDURE #localtemp AS SELECT * from [pubs].[dbo].[authors] GO --create a global temporary stored procedure. CREATE PROCEDURE ##globaltemp AS SELECT * from [pubs].[dbo].[authors] GO --create a temporary stored procedure that is local to tempdb. USE TEMPDB GO CREATE PROCEDURE directtemp AS SELECT * from [pubs].[dbo].[authors] GO

43

Glava 10 Uskladitene procedure

Brisanje uskladitene procedure USE pubs GO DROP PROCEDURE procedure01, procedure02

Programiranje uskladitenih procedura

title_id , title, type,pub_id,price , advance, royalty, ytd_sales tabeli titles koja je objekat baze Pubs

su kolone u

USE Pubs GO CREATE PROCEDURE dbo.SalesForTitle @Title varchar(80), -- This is the input parameter. @YtdSales int OUTPUT, -- This is the first output parameter. @TitleText varchar(80) OUTPUT --This is the second output parameter. AS -- Assign the column data to the output parameters and -- check for a title that's like the title input parameter. -- setovanje izlaznih parametara SELECT @YtdSales = ytd_sales, @TitleText=title FROM titles WHERE title LIKE @Title GO A sada primena ovoga gore: -- Declare variables to receive output values from procedure. DECLARE @y_YtdSales int, @t_TitleText varchar(80) EXECUTE SalesForTitle "%Garlic%", --sets the value of the input parameter. @y_YtdSales OUTPUT, --receives the first output parameter @t_TitleText OUTPUT --receives the second output parameter 44

Glava 10 Uskladitene procedure -- Display the variables returned by executing the procedure. Select "Title" = @t_TitleText, "Number of Sales" = @y_YtdSales GO --------PRIMER 1 USE Uskladistena GO CREATE PROCEDURE dbo.Mnozac @m1 smallint, @m2 smallint, @rezultat int OUTPUT AS SET @rezultat = @m1* @m2 GO ------------------------------------------------------------------------------------------------------------------testiranje procedure mnozac DECLARE @resenje int EXECUTE Mnozac 5,6, @resenje OUTPUT SELECT 'Resenje je:', @resenje GO ------KRAJ PRIMERA 1 ----************************************************************************ ******* --------------------------------------------------------------------------------------------PRIMER 2 USE Northwind GO CREATE PROCEDURE [FiveMostExpensiveProducts] AS SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY UnitPrice desc GO ------------------------------------------------------------------------ testiranje procedure [FiveMostExpensiveProducts] EXEC FiveMostExpensiveProducts EXEC sp_helptext FiveMostExpensiveProducts

45

Glava 10 Uskladitene procedure

SELECT OBJECT_ID('FiveMostExpensiveProducts') ----KRAJ PRIMERA 2 -************************************************************************ ********** ---------------------------------------------------------------------------------------PRIMER3 USE Northwind GO CREATE PROCEDURE spInsertShipper @CompanyName nvarchar(40), @Phone nvarchar(24) = NULL AS INSERT INTO Shippers VALUES(@CompanyName, @Phone) ----------------------------- testiranje procedure spInsertShipper EXEC spInsertShipper 'dostavljac','1235-323' EXEC spInserShipper 'dostavljacica' --------************************************************************************ *** -----------------------------------------------------------------------------------PRIMER 4 --------------------------------------------------------------USE Northwind GO CREATE PROC spInsertOrderDATE @CustomerID nvarchar(5), @EmployeeID int, @OrderDate datetime = NULL, @RequiredDate datetime = NULL, @ShippedDate datetime = NULL, @ShipVia int, @Freight money, @ShipName nvarchar(40) = NULL,

46

Glava 10 Uskladitene procedure @ShipAddress nvarchar(60) = NULL, @ShipCity nvarchar(15) = NULL, @ShipRegion nvarchar(15) = NULL, @ShipPostalCode nvarchar(10) = NULL, @ShipCountry nvarchar(15) = NULL, @OrderID int OUTPUT AS /*ocu samo porudzbine ne starije od 7 dana*/ IF DATEDIFF(dd, @OrderDate, GETDATE())>7 SELECT @OrderDate = NULL /*Kreiranje novog zapisa */ INSERT INTO Orders VALUES ( @CustomerID, @EmployeeID, @OrderDate, @RequiredDate, @ShippedDate, @ShipVia, @Freight, @ShipName, @ShipAddress, @ShipCity, @ShipRegion, @ShipPostalCode, @ShipCountry ) /* Move the identity value from the newly inserted record into our output variable */ SELECT @OrderID = @@IDENTITY

47

Glava 11 Korisniki definisane funkcije

11.Korisniki definisane funkcije


Korisniki definisane funkcije, slino uskladitenim procedurama predstavljaju ureeni niz komandi T-SQL a. Dok sa uskladitenim procedurama moemo da predamo parametre i da vratimo vrednosti u parametrima, u korisniki definisanim funkcijama moemo samo da prihvatamo parametre ali ne i da ih vratimo.Dva osnovna tipa korisniki definisanih funkcija su : One koje vraaju skalarne vrednosti One koje vraaju tabelu Primer 1 : USE UDFBaza GO -- Creating the function CREATE FUNCTION fn_FormatDatuma (@indate datetime, @separator char(1)) RETURNS nchar(20) AS BEGIN RETURN -- datepart vraca int pa se mora konvertovati u string CONVERT(nvarchar(20), datepart(dd, @indate)) + @separator +CONVERT(nvarchar(20), datepart(mm,@indate)) + @separator + CONVERT(nvarchar(20), datepart(yy, @indate)) END USE UDFBaza -- Calling the function DECLARE @datum nvarchar(80) SET @datum = dbo.fn_FormatDatuma(GETDATE(), '.') PRINT @datum --SELECT dbo.fn_FormatDatuma(GETDATE(), '.') -----------------------------------------------------------------------------

48

Glava 11 Korisniki definisane funkcije Primer 2: USE Northwind GO CREATE FUNCTION fn_NewRegion (@myinput nvarchar(30)) RETURNS nvarchar(30) BEGIN IF @myinput IS NULL SET @myinput = 'Region nije raspoloziv' RETURN @myinput END -----test Newregion PRINT dbo.fn_NewRegion(NULL) PRINT dbo.fn_NewRegion('Beograd') SELECT LastName, City, dbo.fn_NewRegion(Region) AS Region, Country FROM Employees ----------------------------------------------------------------------------Primer 3 : -- Funkcija koja vraca tabelu CREATE FUNCTION fn_CustomerNamesInRegion ( @RegionParameter nvarchar(30) ) RETURNS table AS RETURN ( SELECT CustomerID, CompanyName FROM Northwind.dbo.Customers WHERE Region = @RegionParameter ) SELECT * FROM fn_CustomerNamesInRegion('WA')

49

Glava 12 Okidai

12.Okidai
SQL server prua dve razliite vrste okidaa : okidae AFTER i INSTAED OF.Okidai AFTER se izvravaju posle izvravanja komande za koju je deklarisan, a INSTEAD OF se pozivaju umesto komande. Okidae AFTER moemo napraviti za komande INSERT, UPDATE i DELETE. Okidai AFTER mogu da se naprave za tabele, ne i za poglede Ikidae INSTEAD moemo da definiemo za komande INSERT, UPDATE i DELETE. Mogu da se deklariu za poglede Upotreba komande CREATE TRIGGER CREATE TRIGGER trigger_name ON table_or_view trigger_type command_list AS SQL_statements CREATE TRIGGER dbo.alerter ON dbo.employees FOR INSERT, UPDATE, DELETE -- druga vrsta CREATE TRIGGER dbo.alerter ON dbo.employees INSTEAD OF INSERT, UPDATE, DELETE Primer : USE TestTrigerDB CREATE TABLE Authors ( AuthorID SMALLINT IDENTITY(101,1) NOT NULL, FirstName VARCHAR(30) NOT NULL DEFAULT 'unknown', LastName VARCHAR(30) NOT NULL, YearBorn CHAR(4) NOT NULL DEFAULT ' N/A ', YearDied CHAR(4) NOT NULL DEFAULT ' N/A ', Description VARCHAR(200) NOT NULL DEFAULT 'N/A' )

50

Glava 12 Okidai ------------------------------------------------------------------------------- PRIMER 1 Insert triger USE TestTrigerDB GO CREATE TRIGGER MojInsertTriger ON dbo.authors AFTER INSERT AS PRINT 'Primenili ste komandu insert' ------------------------- testiranje trigera INSERT INTO authors (firstname, lastname, yearborn, yeardied) VALUES ('Max', 'Doe', 1962, 'N/A') ------ ukloni triger da ti ne smeta !!!! ALTER TABLE Authors DISABLE TRIGGER MojInsertTriger --------------------------------------------------------------------------------************************************************************************ ****** -----PRIMER 2 INSTEAD OF triger CREATE TRIGGER dbo.zabrana ON dbo.authors INSTEAD OF INSERT, UPDATE AS PRINT 'Opercije INSERT i UPDATE nisu dozvoljene.' --- testiranje trigera INSERT INTO authors (firstname, lastname, yearborn, yeardied) VALUES ('Marko', 'Markovic', 1989, 'N/A')

51

Das könnte Ihnen auch gefallen