Professional Documents
Culture Documents
Veri Tabani Programlama 1 PDF
Veri Tabani Programlama 1 PDF
Veri Tabani Programlama 1 PDF
ProgramIama
2
,a|+t z1
\aar 60l00l||
bu ok kcpy.|.r.n.., s.t.|.n.. |o. |.kk. s.k|.J..
b+|.r cku.|...r. uc.ots|. ..n.g.r.J..
2004 b+|
Y7 blr Acar ayincilik ayinidir
N0EKLEP
CP$..............................................................................8
8elli ba;li 7TYS'ler ............................................................. 8
8ir Proje in Hangi 7TYS'yi Seilmeli:...................................... 9
7eritabani Programlama2 Kitapigi Neleri eriyor..................... 10
Teknik 0estek ................................................................. 10
1.hS SL Server 2000'e giri ...........................12
Web Vatrix ve VS SQL Server 0esktop Engine............................ 12
A. VS0E'nin Kurulumu ve Kaldirilmasi .................................... 1J
Cereksinimler ................................................................. 1J
Kurulumu....................................................................... 1J
Kaldirilmasi .................................................................... 16
SL Server stemci Taraf iIeenIeri ..................................... 16
SQL Server Enterprice Vanager ............................................ 16
Enterprise Vanager'e 8ir SQLServer Kaydetme.......................... 17
Enterprise Vanager ile 7eritabani 8akim ve Yonetimi .................. 18
Enterprise Vanager ile Yeni bir 7eritabani 0lu;turmak................. 19
8ir 7eritabanini 0leklemek ................................................ 20
SQL Query Analyzer .......................................................... 21
Query Analyzer ile 7eritabani 0lu;turmak................................ 2J
Loglamadan Tablo 8o;altma: Truncate Table............................. 24
8ir Sorguyu Query Analyzer ile Analiz Etme .............................. 25
mport E Export 0ata ........................................................ 27
SQL Service Vanager ......................................................... 28
SL Server ve XhL 0estegi ................................................ 2
SL Server'de Veritabant NesneIeri ..................................... 2
SQL Server ve Kullanici Yonetimi........................................... JJ
Poller ........................................................................... JJ
Kullanicilar .................................................................... JJ
Yetki verme (Crant Komutu) ................................................ J4
Yetki Kaldirma (Pevoke Komutu) ........................................... J5
2.T-SL ve VTYS temeIIi programIama ...............36
TSQL ile ANSSQL komutlarini ali;tirma ................................ J7
0egi;ken Tanimlama ve Kullanma.......................................... J7
0egi;kenler ve Sistem Fonksiyonlari....................................... J8
Print komutu .................................................................. J9
Aki; Kontrolleri ............................................................... J9
Co Komutu..................................................................... 40
1.F ... ELSE karar yapisi .................................................... 40
2.CASE deyimi................................................................. 42
J.While 0ongusu.............................................................. 4J
Ceici Tablolar ................................................................ 45
Kontrol Zorlayicilari (Check Constraints) ................................. 46
3.SakIt ProsedrIer (Stored Procedures) .............48
Prosedur ne demektir: ....................................................... 48
SP olu;turma .................................................................. 48
SP ustunde degi;iklik yapmak .............................................. 49
8ir SP'yi Silmek ............................................................... 50
SP'ye Parametre Yollama.................................................... 50
Sp'den 0eger 0ondurme..................................................... 52
8u prosedurun dondurdugu sonucu nasil alabiliriz: ..................... 52
SP'yi 7TYS Uzayi 0i;indan V0ACs ile agirmak .......................... 54
Cursor'ler ...................................................................... 56
8a;lica Sistem Sakli Prosedurleri ........................................... 57
4.IemIer(Transactions) -TetikIer(Triggers) .........61
Transactions................................................................... 61
Trigger'lar ..................................................................... 62
EklenenSilinen Kayitlar ..................................................... 64
Dnsz
Veritabani kavraminin ilk olarak ortaya
atildigi 1-80`li yillarin ustunden henuz
! yil geti. Ancak bu gun, operasyonel
i dunyasi, Veritabani Ynetim Siste m-
leri (V1YS) olmadan hibir ey yap a-
maz hale geldi. Iletim sistemlerinden
sonra en populer ve en ok kazandiran
yazilimlar Veritabani Ynetim Siste m-
leridir.
Gunumuzde, bir ok alanda op e-
rasyonel veri ilemlerinde V1YS`ler
yaygin olarak kullanilmakta. Bu pro g-
ramlar iin bir ok nesne birbiri ile ayni
temel ilevi yerine getirir ve yaklaik
olarak ayni teorilere dayanarak aliir.
V1YS`lerinden orta ve buyuk lekli
olanlarindan biri olan MS SQL Server
!000 bu kitapikta teerruatli olarak ele
aliniyor.
MS SQL Server !000`i tanirken daha
ok V1YS`ler iin ortak olan noktalara
deginildi. Bylelikle kitapikta anl a-
tilan konular sadece MS SQL Server
kullanicilari iin degil, Sybase, Oracle
hatta Advantage (1urk programcilar
taraindan gelitirilmi bir V1YS. Bu
vesile ile projede emegi geenleri da
tebrik etmek gerekir.) iin bile bir ok
teknik olarak uygulanabilirlik seviy e-
SorumIu Yaz IIeri Mdr:
Murat ildiz
t,||J|,|,:eot:t
Ynetici ditr:
|brahlm zdemlr
|oJet|t,|,:eot:t
ditrIer:
8urak Kahyaoglu
|||,o|:,|,:eot:t
Usame |ldar zdemlr
:||Jt,|,:eot:t
7asarm ve UyguIama:
agiz Akay
,|,,|,:eot:t
ACAR Yaythctltk adtha lmflyaz sahlbl:
Murat YtIdtz
Rklam Muduru:
Ahmet AsIantrk
8askt:
TAM A.$.
Fllm tkt;:
Figr
Mrkz Os:
FuIya Cad. FuIya Baytrt 5k.
BiIsan PIaza 11I4 80300
Mecidiyeky - I5TANBUL
TeI: (212) 212 2 0
Faks: (212) 212 2 11
www.byte.com.tr
Veritaban ProgramIama 2 Y7 7
sinde yer almaktadir. Bu kapsamda,
hemen her V1YS`de ortak olarak yer
alan sakli prosedurler, trigger`ler, ku r-
srler, transaction`lar, zorlayicilar ve
diger nesneler yine sirayla bu kitapta ele
alinan konular arasinda.
Bu kitapikta genel olarak MS
SQLServer ve Sybas e`de kullanilan 1 -
SQL komutlari yer aliyor. Oracle tar a-
indan kullanilan PL/SQL komutlari
da aslinda 1-SQL ile bir ok noktada
hemen hemen aynidir. Bu nedenle
V1SY`ler iin bir noktaya kadar ortak
bir kitapik ortaya iktigini syleyebi -
liriz.
1um bunlarla birlikte son yillarda
populerlik kazanan V1YS uygulama
ekillerinden replication (ogaltmali
alima) ve Data Warehousing (Veri
ambarlama) konulari, kitapigin al a-
ninin kisitli olmasi nedeniyle yer veri -
lemeyen konular arasinda. XML veri -
tabanlari da yava yava populerleen
bir konu ama bu konu da bu kitapigin
ierigi diinda. Butun bunlar kitapikta
yer almamalarina ragmen veritabani
konusunda kendisini gelitirmek ist e-
yen arkadalara ikir vermesi aisindan
burada zikredilmitir. Ayrica veritabani
programlamadan ziyade ynetimi ile
daha ok ilgili olan, Kullanici Ynetimi,
Yedekleme-Kurtarma, D1S-BCP gibi
konulara da kisitli saya sayisi nedeniyle
deginilmedi.
Bata, gece gunduz demeden yogun
bir alimayla siz degerli okurlara bu
seriyi ulatirmak iin ugraan Ynetici
Editr Ibrahim Ozdemir ve ekibine,
Veritabani konusunda tecrubelerini
ekinmeden aktaran ve kitap iin
duzeltmeler yapan sayin Nurullah
Kili`a ve kitabin ierdigi rnekleri
test eden eim Lale Gzudeli`ye olmak
uzere kitapikta emegi geen he r-
kese sonsuz teekkurlerimi sunarim.
Bununla birlikte, seride yer alan butun
hatalar bana aittir.
-Yaar CDZUDLI
,o:Je||,|o:t||ot
8 Y7 Veritaban ProgramIama 2
V
eritabani Ynetim Sistemleri,
verilerin i ziksel haizadaki
durumlarini, kullanicilarin
eriimlerini duzenleyen sist emlerdir.
Ilikisel V1YS`ler gunumuzde y aygin
olarak kullanilmaktadir.
V1YS`ler i ziksel haizayi ve veri
tiplerini kullanicilar adina ekillendirip
denetleyen ve kullanicilarina st andart
bir S QL arayuzu s aglayarak onlarin
dosya yapilari, veri yapisi, iziksel haiza
gibi s orunlarla i lgilenmek y erine veri
giri-ikii i in uygun arayuzler gelitir-
melerine olanak s aglayan y azilimlardir.
V1YS`de verileri tut mak u zere bir ok
turde n esne ve bu n esnelere eriimleri
duzenlemek uzere kullanicilar, roller ve
gruplar yer alir. Her bir kullanicinin belli
haklari vardir. Bu haklar, kisitlanabilir.
Ornegin bir tablo ya da programcigi bir
kullanici kullanabilirken bir bakasinin
haklari veritabani y neticisi t araindan
kisitlanmi olabilir.
V1YS`lerin bir ogu ANSI S QL`in
karilayamadigi durumlarda kullanil-
mak u zere ek programlama komutlari
barindirirlar. Bu i i in MS SQL Server
ve Sybase S QL Server 1ransact S QL
denilen komut takimlarini ierir. Oracle
ise P L/SQL i le bu i e zum getirir.
Bu diller s ayesinde, bu konu i erisinde
grenecegimiz Stored P rocedure (s akli
prosedurler), 1 rigger, F onksiyon gibi
veritabanlari i in vazgeilmez olmu
nesneler yazilabilmektedir.
eIIi baIt VTYS'Ier
MS S QL Server: Bir orta ve buyuk
lekli V1YS`dir. ANSI SQL`e eklentiler
yazmak iin 1-SQL`i destekler.
OracIe: Daha ok yuksek lekli uy gu-
lamalarda t ercih edilen bir V1YS`dir.
ANSI S QL`e eklentiler y apmak i in
PL/SQL gelitirilmitir.
Sybase: Bir orta ve buyuk lekli
V1YS`dir. ANSI S QL`e eklentiler
yazmak iin 1-SQL komutlarini destek-
ler. lkemizde daha ok bankacilik ve
kamusal alanlarda tercih edilmektedir.
Informix: Bir orta ve buyuk lekli
V1YS`dir.
MySQL: Genellikle Unix-Linux temelli
Web uy gulamalarinda t ercih edilen
bir V1YS`dir. Aik kod bir y azilimdir.
Kuuk-orta leklidir. Ozellikle Web iin
gelitirilmi bir V1YS`dir denilebilir.
Postrage SQL: Bu da MySQL gibi aik
kod bir V1YS`dir.
MS Access: oklu kullanici destegi
yoktur. I letim sist eminin s agladigi
guvenlik s eeneklerini kullanir. Bunun
Ciri
Veritaban ProgramIama 2 Y7 9
yaninda belli s ayida kayda kadar
(1000000 civari) ya da belli bir boyutun
(yaklaik !MB) altina kadar bir s orun
ikartmadan kullanilabilecek bir kuuk
lekli V1YS`dir.
Advantage: 1u rk programcilar t arain-
dan gelitirilen bir orta ve buyuk lekli
V1YS`dir.
DB/2: I BM`in ramework`lere y nelik
buyuk lekli V1YS`dir.
Bunlarin diinda daha bir ok V1YS
mevcut olabilir. Burada y er alanlarina
populer olmalari nedeni ile deginildi.
V1YS`lerinin A vrupa genelindeki
pazar paylari yaklaik olarak u ekilde:
En buyuk pay I BM(DB/!) i le Oracle
arasinda. H emen arkasinda MS S QL
Server geliyor. In ormix ve Sybase is e
onu takip ediyor.
Yeni balayanlar i in hangi V1YS`yi
grenmem en iyisi olur sorusunu yanit-
lamak gerekebilir. lkemizde insan kay-
naklari aisindan en ok kaliiye elaman
aranan V1YS Oracle ve arkasindan da
MS S QL Server gelmekte. ok n adir
olarak Sybase bilen elemanlar da aran-
maktadir.
Bu konuda 1 BD(1urkiye Biliim
Vaki) y ayin organinda y ayinlanmi bir
aratirmaya gz atmak i in aagidaki
adresi tiklayabilirsiniz.
http:llwww.tbd.org.trlsayi77_htmI l
insan.htm
ir Proje in Hangi
VTYS'yi SemeIi!
Bir projede hangi veritabaninin s eile-
cegi, projenin api i le i lgili bir karardir.
u s orulari kendinize s ormaniz proje-
nizin api konusunda karar vermenize
yardimci olacaktir.
Projede ka tablo kullanacak
Her bir t abloda en azla ka s atir y er
alabilir
Projenize ayni anda en azla ka kulla-
nici baglanacak
Projeniz gunluk ka t ransaction
(INSER1-DELE1E-UPDA1E) ger-
ekletirecek
Projeniz en azla ne kadarlik yer kap-
layacak bir veritabani dosyasina i htiya
duyacak
Projeniz i in guvenlik n e derece
8V ....................... J7.8
0racle.................... 26.J
Vicrosoft ................ 15.4
nformix ................. J.2
Sybase ................... J
0igerleri ................. 14.J
2001 yilinda bir ara;t irmaya gore Avrupa
apinda 7TYS'lerinin pazar paylari
[kaynak: Cartner]
10 Y7 Veritaban ProgramIama 2
nemli Ancak bir V1YS kullanarak
proje gelitirecekseniz, hangisini seme-
niz gerektiginin diinda, hangi surumleri
kullanacaginiz ya da hangi donanimlar
ustunde alitiracaginiz da nemlidir.
Veritabant ProgramIama 2
Kitaptgt NeIeri eriyor
1.BIm: V eritabani Ynetim Sistem-
leri ele aliniyor. V1YS`ler, S QL`den
anlayabilen programlardir. V erdigimiz
SQL komutlarini y erine getiren, s ahne
arkasindaki i bitirici veritabani ynetim
sistemidir. V1YS`ler SQL i le i ade ede-
bildigimiz tum ilemleri yerine getirebi-
lirler. Bu blumde V1YS`ler hakkinda
detayli bilgi edinecegiz.
2.BIm: 1-SQL komutlari ele aniyor.
Bazen, SQL`de yer alan komutlar, derdi-
mizi anlatmamiz iin yeterli olmayabilir.
Bu tur durumlarda 1ransact SQL ieri-
sinde yer alan komutlardan aydalanaca-
giz. 1ransact SQL, kisaca 1-SQL olarak
anilir. Bu konudaki detayli bilgiyi i kini
unitede edinecegiz.
l.BIm: Stored Procedure ele aliniyor.
1-SQL ile Stored Procedure`ler yazmak,
V1YS`lerinin daha etkin bir ekilde kul-
lanilmasini s aglar ve eitli perormans
artirici etkileri vardir. Stored Procedure
ile, tekrar tekrar kullanmak uzere paket-
lenmi 1-SQL komutlari oluturacagiz.
Ayrica, SYBASE ve MSSQLServer
taraindan kullanilan ve sist emde hali
hazirda yer alan Stored Procedure`leri de
yakindan taniyacagiz.
1.BIm: 1ransaction`lar ve 1rigger`ler
ele aliniyor. 1-SQL i le Stored Procedu-
re`ler diinda 1 ransaction`lar ve 1 rig-
ger`ler de programlanabilir. 1ransaction,
Daha kuuk paralara ayrilamayan en
kuuk ilem birimi demektir. 1rigger`ler
ise Stored Procedure`lerin bir zel hali-
dir ve bir tabloda degiiklik yapildiginda
otomatik olarak devreye girerler. Zorlayi-
cilar ve SP`ler ile saglayamadigimiz veri
kararligini ve butunlugunu trigger`ler ile
saglamaya aliacagiz.
Teknik 0estek
Egitim serisi ile ilgili iletmek istediginiz
neri, ist ek, i kayet ya da duzeltmeleri-
nizi dogrudan BY1E 1urkiye dergisine
iletmek i in www.byte.com.trlbizeuIas.asp
adresini tiklayiniz.
Kitapik ve i erdigi konular hakkin-
daki her tu rlu s oru ve s orunlarinizla
ilgili olarak ygozudeIi@hotmaiI.com adre-
sine e-posta gndermekten ekinmeyin.
Yine Veritabani P rogramlama s erisi
hakkindaki gru, i kayet ve nerile-
riniz i in www.verivizyon.comlsqIkitabil
adresindeki ormdan aydalanabilirsi-
niz. Seri hakkindaki duyurulari da ayni
adresten takip edebilirsiniz.
12 Y7 Veritaban ProgramIama 2
V
1YS t emelli programlamayi
grenmek istiy orsaniz, ncelikle
bu unit ede anlatilan her eyi
anlamaya alimayiniz. !.niteyi ok iyi
etut ettikten s onra bu unit eyi daha iyi
anlayabilirsiniz.
Ancak SQL Server konusunda balan-
gi s eviyesinde bilginiz varsa, bu blum
ile onu daha etkili bir ekilde nasil kulla-
nacaginizi grenmi olacaksiniz.
MS SQL Server, orta ve buyuk lekli
V1YS`ler arasinda en y aygin olanlarin-
dan biridir. Bunun s onucu olarak da bir
ok veri ynlendirmeli Web sitesi bu gun
bu program ustunde ina edilmi durum-
dadir. Bu blumde MS SQLServer !000
Developer E dition(artik MSDE olarak
anilacak)`in kurulumu ve kaldirilmasi
anlatilacaktir. MSDE, E gitim ve kiisel
kullanim maksatli en geni S QL Server
!000 su rumudur. Bu blum boyunca
verilen uygulamalar SQL Server`in bah-
sedilen surumu ustunde test edilmitir.
hS0E'nin KuruIumu ve
KaIdtrtImast
hS SL Server
2000'e Ciri
VS0E a yrica V S SQL
Server 0eskto p E dition
iin de kullanilmaktadir.
0esktop E dition'da bir
istemci ara yuz bulun
mamakla birlikte SQL
Server kuru lumunu ger
ekle;tirebilirsiniz. 8u
programi ucretsiz olarak
www.microsoft.com a dre
sinden indirebilirsiniz.
0esktop Edition'i
kurmak iin, V S0E dizi
nindeki setu p.exe prog
ramini tiklayin.
Kurulum esnas inda
bir guvenlik sorunu
ile kar; ila;mamak iin
VS0E dizininde bulunan
setup.ini dosyasina ;u
iki satirin yer aldigindan
emin olun
[0ptions]
SAPW0=sasifresi
ve daha sonra
setup.exe programini
tiklayin. 8oylece, SQL
Server 0eskto p e dition
kuruldugunda sa ku lla
nici a dinda ve sas ifresi
;ifresinde te mel ver ita
bani ku llanicisini o lu;
turacak bir kuru lumu
ba;latmi; olursunuz.
VS SQL Server'in bu
surumu iin k isitli da
olsa bir ara yuz sa glaya
bilmek uzere u cretsiz
olarak Web Vatr ix prog
Web Vatrix ve VS SQL Server 0esktop Engine
Veritaban ProgramIama 2 Y7 13
SQL Server Developer Edition kuru -
lumu, kullanici ayarlarini saymazsak ve
sadece kendi bilgisayariniza kurmak veya
kaldirmak isterseniz, herhangi bir pro g-
ram kurulumundan arki yoktur.
CereksinimIer
Gerek hayatta veritabani uygulam a-
lari ciddi manada kaynak ihtiyaci olan
uygulamalardandir. Haiza buyuklugu,
ilemci hizi ve benzeri gibi sistem par a-
matrelerini, ustunde kurgulamayi plan -
ladiginiz projeye gre ekillendirmeniz
gerekir. Burada verilen gereksinimler
sadece grenme amali uygulamalarin
denenebilecegi bir sistem elde etmek iin
yeterlidir. MSDE kurulumu iin en azin-
dan bir Windows !000 Proessional veya
XP Proessional yuklu bir PC`ye ihtiyaci-
niz olacaktir. Donanimsal ihtiyaciniz ise
bu iletim sistemlerinin duydugu mini -
mum ihtiyalardir. Bu, butun programin
kurulumu iin geerli gereksinimdir.
Sadece istemci programlari kurup, hali
hazirda zaten olan bir MSDE sunucu -
sunu kontrol etmek isterseniz, Windows
-8 de yeterli olabilir. Ancak, buradaki
butun uygulamalari bir tek PC`de test
etmek istiyorsaniz, MSDE`nin tamamini
kurmaniz gerekir.
KuruIumu
Bu kisimda bir tek PC uzerine tum
MSDE`nin nasil kurulacagi anlatila cak-
tir.
ramini ku llanabilirsiniz.
Web matrix programini
www.asp.netlwebmatrix
adresinden u cretsiz
indirebilirsiniz. Ya da
V0ACs bile;enlerini ku l
lanarak kendiniz iin bir
arayuz haz irlayabilirsi
niz. 8unun bir benzerini
www.verivizyon.com
download a dresinden
indirebilirsiniz.
0esktop e dition
ustunde burada anlatilan
i;lemlerin bir ogunu
yapamazsiniz. Ya pa
bilmek iin en az indan
bu un itede an latilan
istemci programlarini da
kurmaniz gerekir. Ancak
sonuta u cretsiz bir V S
SQL Server suru munu
elde etmi; olursunuz.
8u iki yazilimin
birlikte ku llanimi konu
sunda daha geni; bilgiyi
A00.NET ile .NET temelli
veritabani u ygulamalari
geli;tirme ve We b Ser
visleri konu lu ser inin J .
kitabinda bulabilirsiniz.
14 Y7 Veritaban ProgramIama 2
1. Adim: IIS ve diger SQL Server`i kul-
lanacak s ervisleri durdurun. R egistry`e
eriecek gereksiz uy gulamalar varsa
kapatin.
2. Adim: Sikitirilmi paketi bir y ere
ain ve x 86\setup\setupsql.exe progra-
mini alitirin. {Resim 1)
l. Adim: Bu aamada programi nereye
kuracaginiz sorulmaktadir. Kendi maki-
nenize kuracaksaniz, Local Computer
seenegini i aretleyin. Uzaktaki bir bil-
gisayara baglanip o bilgisayara kurmak
isterseniz, R emote Computer s eene-
gin i aretleyebilirsiniz. Virtual Server
seenegi, Clustered Server kurmak i in
gerekli bir s eenek olup biraz i leri bir
konudur. Ozetle Clustered: Birden azla
SQL Server kurulu makinenin birbirinin
devami gibi i yuku ve traik dengeleme
ilemlerini yerine getirebilmesi amaciyla
kurulmasidir. {Resim 2)
1. Adim: I lk s eenek olan create n ew
instance o S QLServer s eenegini i a-
retli birakin. Daha nce bu programi
kurdunuz ve ustunde degiiklik yapmak
istiyorsaniz i kinci s eenegi i aretleye-
bilirsiniz. Inst ance, S QL Server`in bir
tek makinede i ki ayri u zayda alimak
uzere y eniden kurulmasini kasteder.
Bu durumda i kinci Inst ance(kopya)`ya
MAKINEADI/INS1ANCEADI n otas-
yonu i le eriilir. Bir makinede birden
azla kopya alima zelligi t am olarak
MSSQL Server !000 su rumunde mev-
cuttur. 6,0 su rumunde is e bu konuda
hibir destek yer almaz. Ayni makinede
ne azla 16 kopya aliabilmektedir.
5. Adim: A dinizi ve i rmanizi giriniz.
{Resim l)
6. Adim: Szlemeyi onaylamak i in
yes{ botununu tiklayin.
7. Adim: Server and client t ools s ee-
negini i aretli birakin. Server olarak
SQL Server daha nce kurulu is e veya
bulundugunuz ag ortaminda baka bir
bilgisayarda kurulu is e i lk s eenegi de
Veritaban ProgramIama 2 Y7 15
iaretleyebilirsiniz.
8. Adim: S QL Server y apilandirma
konusunda t ecrubeli degilseniz, bu
adimda deault s eenegini i aretli bira-
kin. Bir makinede, birden azla S QL
Server kurulumu alitirabilirsiniz. Bu
durumda her bir kurulum arkli bir
uzayda aliacaktir. Ayni is mi i ki S QL
Server kurulumuna veremezsiniz.
{Resim 1)
9. Adim: K ariniza ikan pencereden,
1ypical s eenegini i aretli birakin. SQL
Server bileenleri hakkinda y eterli
bilginiz varsa, Costum s eenegini,
sistem kaynaklarinizin kisitli oldugunu
duunuyorsaniz, minimum s eenegini
kullanin. S QL Server`in programi
arkli bir diske kurmasini istiy orsaniz,
program i les s eeneginin nundeki
browse{ butonunu ti klayin ve kurmak
istediginiz klasru setikten sonra ok{`i
tiklayin. SQL Server`in veri dosyalarini-
(veritabani dosyalarini) arkli bir adreste
saklamasini istiyorsaniz, data i les s ee-
neginin karisinda y er alan browse{
butonunu ti klayin ve ayni i lemi yapin.
Windows konusunda y eterli bilginiz
yoksa, bu kisimla da oynamamaniz
tavsiye edilir.
10. Adim: Gelen s eenekleri aynen
onaylayin. SQL Server ve Active Direc-
tory konusunda bilgi s ahibi is eniz bu
konudaki ayarlari uy gun hale getirebi-
lirsiniz.
11. Adim: SQL Server, iki eit yetkilen-
dirmeyi destekleyebilir.
a. I letim sist emi ve domain ayarla-
rindan gelen y etkilendirmeleri geerli
kabul eder ve SQL Server kaynaklarina
eriimini geerli kabul edebilir.(Bu
durumda, sist em y etkilendirmesi olan
kii dbo(veritabani s ahibi) kullanicisi
olarak yetkilendirilir.)
b. Sistem y etkilendirmelerinin y ani
sira S QLServer`in kendi kullanicilarini
da oluturup yetkilendirmesini ist eyebi-
liriz. Bu durumda veritabani kaynakla-
rina eriim iin iki yetkilendirmeden biri
16 Y7 Veritaban ProgramIama 2
taraindan yetkilendirilmi bir kullanici-
nin eriimi geerli sayilir.
Uygun olan s eenegi i aretleyin.
ayet kendiniz S QL Server i in bir
kullanici oluturursaniz, bu kullanicinin
kullanici adini(muhtemelen bu isi m s a
olacak) ve i resini unut mayacaginiz
bir ekilde guvenli bir yerlere kaydedin.
Daha sonra gerekli olacaktir. Ancak a`ya
gre bir y etkilendirme t ercih ederseniz,
iletim sistemi irenizi korumaniz gere-
kecektir.
12. Adim Next{ butonunu ti klayarak
dosyalarin kurulumunu s aglayin. Dos-
yalarin kopyalanmasi bittiginde Finish{
butonunu ti klayin. Bylelikle kurulum
tamamlanmi olur.
KaIdtrtImast
MSDE`yi ya da SQL Server`i kaldirmaya
karar vermeden nce, ustunde aliacak
projelerinizin olmadigindan emin olma-
niz gerekir. Aksi halde kaldirildiktan
sonra MSDE`yi kullanan projeleriniz
aliamayacaktir.
1. SQL Server`i kullanmakta olan butun
servisleri durdurun.
2. SQL Server hizmetini durdurun. Aik
olan tum SQL server toollarini kapatin
l. Denetim masasi\program ekle kal-
dir`dan S QL Server !000{`i s ein ve
normal bir program kaldirir gibi kaldi-
rin.
SL Server stemci Taraf
iIeenIeri
SL Server Enterprise
hanager:
Enterprise manager, S QL Server`in
grsel bir arayuzden y netilmesi i in
gelitirilmi bir ist emci t ara parasidir.
Kullandigi t emel arayuz MMC ( Micro-
sot Management Console) t emelli bir
arayuzdur. Bu konuda, MMC`nin nasil
kullanildigi anlatilmayacaktir. Sadece
yapilabilecekler hakkinda zet bilgiler
bulabilirsiniz.
Enterprise manager ile ayni zamanda
birden azla veritabani sunu cusuna
baglanilabilir. Bu i lem i in veritabani
sunucularinin (S QL Server) kaydinin
yapilmasi gerekir. Kaydin y apilabilmesi
iin de y etkilendirilmi bir kullanici i le
eriim arttir.
Bir veritabani sunu cusuna eritikten
sonra, ustunde yer alan kullanicilari, yet-
kimiz olan veritabani dosyalarini, stored
procedure, view, t ablo gibi veritabani
gelerini grebiliriz.
Yetkimiz dahilinde degiiklerde bulu-
nabiliriz.
SQL server gruplari tanimlanabilir
Her bir grup ierisinde yer alacak tekil
SQL Server`ler kaydedilebilir.
Kaydi yapilan her bir SQL server i in
istenilen ayar ve degiiklikler yapilabilir.
Herhangi bir S QL Server ustun de
veritabanlari, n esneler, kullanicilar,
yetkilendirmeler ve i zinler oluturulup
duzenlenebilir.
Veritaban ProgramIama 2 Y7 17
Yetki erevesinde, kaydedilmi S QL
Server`ler ustunde SQL Server ynetim
grevleri alitirilabilir, tanimlanabilir.
SQL i adelerinin, yi ginlarinin ve
scriptlerinin alitirilmasi i in gereken
yerden Query Analyzer`e gei saglar.
Veri it hal-ihra etme i lemleri bata
olmak uzere bir ok ilem iin kolaylati-
rici sihirbazlarin balangi noktasidir.
MMC, Microsot`un sunu cu uy gu-
lamalarini y netmek i in gelitirdigi bir
genel arayuzdur. Bu n edenle bir ok
sunucu uy gulamada bu st andart arayuz
ile kullanicilarin sunucu uygulamalarini
ynetmeleri s aglanmitir. (II S de bu
turden bir y netim paneli kullanici ara-
yuzune s ahiptir). H er bir uy gulamanin
kendisi iin bir bileen yuklenir ve arayuz
bu bileen s ayesinde o uy gulamanin
zelliklerini y netecek bir hal alir. S QL
Server`in de byle bir eklentisi mevcuttur.
Bu eklenti i le MCC`nin birlikte olutur-
dugu y netim programinin adi da S QL
Enterprise Manager olarak anilmaktadir.
{Resim 5)
SQL Enterprise Manager`i balatmak
iin (t abi ncelikle MSDE`yi kurdugu-
nuzu var s ayiyoruz.) yukaridaki ekilde
gruldugu gibi Balar>Programla-
r>SQL Server>Enterprise Manager`i
tiklamak yeterli olacaktir.
Enterprise Manager`i alitirmak t ek
baina hibir anlam iade etmez. Hangi
veritabanini y netmek istiy orsaniz o
sunucuyu (y a da veritabani kurulum
kopyasi - installation instance`) kaydet-
tirmeniz gerekir.
Enterprise hanager'e ir
SLServer Kaydt EkIemek:
Herhangi bir S QL Server`i Ent erprise
Manager ile ynetebilmek iin kaydettir-
mek gerektigini biliyoruz. Bu ilem iin
u aamalar takip edilir:
1. Bu i lem i in ncelikle Ent erprise
Manager bir nceki konuda anlatildigi
ekilde balatmak gerekir.
2. Ardindan, Microsot S QL Serve-
r>SQL Server Group aga y apilarini
sirayla tiklayarak ain.
l. SQL Server Group seenegini, are ile
sol ti klayin. Ardindan ailan menuden
New S QL Server R egistration s eene-
gini tiklayin.
1. Register SQL Server Wizard balatila-
caktir. Next{ butonunu tiklayin.
5. Agda geerli SQL Server`lerin bir lis-
tesi sol t arata belirecektir. Kendi maki-
nenizdeki SQL kopyasini normal olarak
kurduysaniz, ( local) eklinde gsterili-
yordur. Uygun sunucuyu setikten sonra
Add >{ butonunu tiklayin ve ardindan
Next{`i tiklayin.
6. Hangi y etkilendirme s eenegini kul-
lanacaginiz belirleyin. Bunu, agda daha
nceden kurulmu bir SQL Server i in
Pesim 5
18 Y7 Veritaban ProgramIama 2
yapacaksaniz, V eritabani Yneticisine
danimaniz daha iyi olacaktir. K endi
kurdugunuz S QL Server`e baglana-
caksaniz, kurulum aamasinda hangi
yetkilendirmeyi s etiginizi hatirlayin ve
ayni s eenegi burada da s eip Next{`i
tiklayin. {Resim 6)
7. Hangi SQL Server Goup`a ekleyece-
ginize karar verin ve iaretleyin. Ilk dea
kullaniyorsaniz, st andart ayarlari t akip
etmeniz nerilir. Next{`i tiklayin.
8. Uygun sunu cuyu s ein ve Next{`i
tiklayin.
9. Kayit ilemi burada sona erdi. Baarili
bir ekilde ekleme ilemini yerine getir-
diniz ise resim 7`deki gibi bir ekran elde
edeceksinizdir. {Resim 7)
SQL Server kaydini kaldirmak
olduka kolaydir:
1. K aydini kaldirmak ist ediginiz S QL
Server`i areniz i le s ol ti klayin. {Resim
8)
2. Gelen dogrulatma mesaj kutusunda
yes{` i tiklayin.
Enterprise hanager iIe
Veritabant aktm ve Yonetimi
Herhangi bir V1YS`de oldugu gibi
SQLServer`de de asil verilerin tutu l-
dugu yer veritabanidir. Bir veritabani bir
ok n esne ve verilerle birlikte kullanici
tanimlari ve haklar gibi rolleri de i erir.
{Resim 9)
SQL Server !000`de verilerin ve
tanimlamalarin yer aldigi bir veritabani
dosyasinin y ani si ra bir de log dosyasi
yer alir. Veritabani dosyasi `.md uzan-
tilidir. Log dosyasi is e `.ld uzantili bir
Pesim 6 Pesim 7
PUCU:
8ir SQL Server ka yit bilgisi s ilin
diginde SQL Server'de yer a lan
bilgiler kaybolmaz, silinmez sadece
sizin Enterprice Vanager'iniz kaydi
silinen SQL Server'i tekrar ka ydet
mediginiz surece yonetemez.
Veritaban ProgramIama 2 Y7 19
dosyadir.
Bu tu r veritabani dosyalarina ait
bilgileri grmek i in Ent erprise Mana-
ger`de herhangi bir veritabani dosyasini
sol ti klayin ve ikan menuden properti-
es`i tiklayarak detay bilgilerine eriebilir,
bir kisim degerleri degitirebilirsiniz.
1ransaction log dosyalari aslinda i lk
bakita pek de nemli bir dosya degil
gibi grunur. Ama aslinda bir ok bilgi
ilem en kara gunlerden bu loglar saye-
sinde kurtulur. 1ransaction log dosyalari,
SQL Server`da verilerin depolanmasi ve
kurtarilmasi durumunda olduka buyuk
nem arzetmektedir. Bir t ablonun i er-
digi verilerde y apilan degiiklikler nce
transaction log dosyasina y azilir, ardin-
dan veritabanina kaydedilir. Bu sist em
bata veritabanina y apilan kayit i le-
minin tut arliligini s aglamak i in byle
gelitirilmitir ve hemen her V1YS`de
ayni ekilde aliir.
SQL Server`da I NSER1, UPDA1E
veya DELE1E komutlari alitirildi-
ginda oluan degiiklikler t ransaction
log dosyasina ilenir.
Veritabani y netimi, veritabani dos-
yalarinin duzenlenmesi, oluturulmasi
ve si linmesi i lemlerinden i barettir.
Bir S QL Server`deki en y etkili st an-
dart kullanici s a(system admin-sistem
yneticisi) kullanicisidir. Bir veritabani
dosyasindaki en yetkili st andart rol dbo
(database owner - veritabani sahibidir)
Enterprise hanager iIe Yeni
bir Veritabant DIuturmak
Enterprise Manager ile bir ok ilem gibi
veritabani oluturma ii de grsel bir
arayuzden gerekletirilebilir. Bu i lem
iin, ncelikle Ent erprise Manager`e
girin. Ardindan Databases uzerinde sag
tiklayarak New Database s ein. Sizden
veritabani adi girmeniz istenecektir. Iste-
diginiz bir veritabani adini girin.
Bir veritabani t animlanma aama-
sinda y a da t animlandiktan s onra u
parametrelerini de leklemek gerekir.
Oleklemek`ten kasit projenin buyuklu-
Pesim 8 Pesim
20 Y7 Veritaban ProgramIama 2
gune gre perormans-kapasite denge-
sini oturtmaktir. Bu biraz da veritabani
konusunda tecrubeli olmanizi gerektiren
bir ilemdir.
ir Veritabantnt
DIekIemek
Enterprise manager ile bir veritabaninin
zelliklerini grmek i in ncelikle o
veritabanina dosyasi s eilir. Daha s onra
bu veritabaninin ustunde sag tik yapilir.
Ardindan properties s eenegi ti klanir.
Ardindan options s ekmesi ti klanarak
ustunde degiiklikler yapilir.
Veritabaninin b oyutu: V eritabanina
kayit girdike y a da y eni t animlamalar
- n esneler girdike boyutu buyur. Bir
azami boyut t animlanmasi halinde bu
degere ikilmasindan itibaren depolama
biriminde (harddisk) yer gerektiren veri-
tabani ilemleri yapilamaz.
Transaction I og dosyasi azami boyutu:
Bir veritabaninda y apilan kayit ekleme,
kayit si lme ve kayit guncelleme i lem-
lerinin veritabani log dosyasinda i aret-
lendigini biliyoruz. Bu dosya ustunden
veritabaninin butunlugunun s aglandi-
gina da deginmitik. It e bu dosya da
belirtilen azami boyutun ustune ikarsa
UPDA1E-INSER1-DELE1E ilemleri
gerekletirilemeyecektir. 1 ransaction
Log`a i aretlenmesi gereken hibir ey
alitirilamayacaktir. Bu tur durumlarda
bir alternati olarak artik iinize yarama-
yacagini duundugunuz t ransaction log
kayitlarini truncate edebilirsiniz (si lebi-
lirsiniz).
Database SeenekIeri: Veritabani s ee-
nekleri, veritabanin leklenmesinde
etkili bir diger aktrdur. Bu s eenekler
kisaca:
Autoshrink: V eritabaninin otomatik
olarak kuultulmesini ayarlayan zellik-
tir. Bu zellik seili iken veritabani dos-
yasi ve log dosyasi belli araliklarla sistem
taraindan otomatik olarak gereksiz
alanlari dosyadan ikarilmaya zorlanir.
dbo use onIy: Bu zellik s eildigi
anda sist emde login olan kullanicilar
ve db_owner s abit sist em rolune haiz
kullanicilar diinda diger kullanicilar
bu veritabani dosyasini kullanamazlar.
Halihazirda sist eme login olan kulla-
nicilar is e sist emden ikmalari halinde
db_owner rolune haiz degil is e t ekrar-
dan veritabanina eriemezler.
read onIy: Veritabani dosyasinin s adece
okunabilir olmasini saglayan seenektir.
Bu s eenek s eildiginde kullanicilar
veritabanindan veri okuma ( SELEC1)
komutlarini alitirabilir ancak
DELE1E, UPDA1E, I NSER1 gibi
DML komutlari i le AL1ER, CREA1E
ve DROP gibi DDL komutlarini ali-
tiramaz.
singIe user: V eritabani dosyasini ayni
Veritaban ProgramIama 2 Y7 21
anda bir t ek kiinin kullanmasini
saglar. Bu komut alitirildigi anda
veritabaninda birden azla kii bagliysa
bu zellik aildiktan s onra kullanmaya
devam ederler ancak baglanti kesildigi
andan iti baren bir t ek kullanici kurali
dikkate alinir.
Kurtarma ModeIi SeenekIeri: Verita-
bani leklemede bir diger s eenek de
veri kurtarma modelidir. Bu i lem i in
olan seenekler de aagidaki ekildedir.
1. FuII R ecovery ModeI: Bu s eenekte
veritabani ustun de y apilan i lemlerin
loglari tutu lur. Bir veri kurtarma i le-
minde, log dosyalari i le birlikte verita-
bani kayitlari da elde edildikten s onra
veritabani kurtarma ilemi gerekletiri-
lebilir. Standart olan kurtarma s eenegi
bu seenektir.
2. BuIk_Logged R ecovery ModeI: Full
Recovery Model i le y aklaik ayni s ee-
nekleri kullanir. F arkli olarak t oplu
ilemler i in daha az log tut ar. Ornegin
SELEC1 I N1O vb. gibi komutlar i in
daha kisitli bir log tutulur.
l. SimpIe R ecovery ModeI: En basit
transaction log tutma seenegidir. Daha
ok kuuk lekli ve deneme amali veri-
tabanlarinda veya sadece okuma amali
kullanilan veritabani dosyalari i in
kullanilir. Bunun diinda ti cari amali
veritabani uy gulamalarinda bu tu rden
bir kurtarma modelinin s eilmemesi
gerekir.
SL uery AnaIyzer
Query Analyzer, SQL ve 1-SQL temelli
komutlarla V eritabani Sunucularinin
konigure edilmesini s aglamanin y ani
sira SQL iadelerini alitirma ve analiz
etme konusunda aydalanilmak u zere
gelitirilmi bir SQL Server bileenidir.
Yine Query Analyzer i le bir veritaba-
nina eriebilmek iin yetkilendirilmi bir
iletim sist emi kullanicisi veya domain
kullanicisi y ahut veritabani sunu cusu
yneticisi hesabina s ahip olmak gerekir.
Bu kullanici grubunun hangisi veya
hangilerinin geerli olacagi, Ent erprise
Manager i le bir veritabanina s a (sist em
yneticisi) veya edegeri bir hesap i le
baglandiktan s onra properties\Security{
sekmesinden duzenlenebilir. Yin e n es-
neler i in y etkiler Ent erprise Manager
sayesinde duzenlenebilir.
Bir s onraki unit ede anlatilan 1-SQL
PUCU:
Query Analyzer'i Enter price Vana
ger'den agirmak mumkundur.
8unun en buyuk fa ydasi yetkilen
dirme bilgilerini yeniden girmemize
gerek ka lmamasidir. 8u i;lem iin
Enterprice Vanager'dan baglanmak
istediginiz ver itabanini se tikten
sonra [Tools\SQL Quer y Analyzer]'i
tiklamak yeterlidir.
22 Y7 Veritaban ProgramIama 2
komutlari ve Sakli P rosedur, 1 rigger,
Cursor gibi veritabanin n esnelerinin
oluturulmasi esnasinda Query Analyzer
programi kullanilacaktir.
SL Server uery AnaIyzer'in
beIIi baIt ozeIIikIeri:
1-SQL i adelerini alitirmak i in bir
metin editru
ANSI-SQL ve 1 -SQL i in Sentaks
boyama
Nesne gezgini ve nesne arama s ee-
nekleri i le bir veritabanini veya ustunde
yer alan nesnelere eriim kolayligi.
1ablo oluturmak gibi bir ok ilem iin
kullanilabilir hazir 1-SQL ablonlari.
Bir etkileimli hata ayiklayici i le Sakli
yordamlar iin analiz imkani.
Resultset`leri metin (text) t emelli veya
izgara (grid) temelli sunabilme.
Graik ve metin t emelli Sorgu ali-
Pesim 10. (1) Query Anclyzer'de TSQL komutlcrinin yczildiyi soryu penceres. (2) Sonu
cun ne olcrck yrnmesn stedynz bu menden belrleyn. (3) Soryunuzdc br sen
tcks hctcsi olup olmcdiyini denetlemek n bu kismi kullcncblrsnz. (4) Soryunuzu
cli;tirmck n bu kismi kullcnin.(F5 tu;unc dc bcscblrsnz.) (5) Hcny vertcbcnindc
cli;tiyinizi burcdcn yrp dey;treblrsnz. (6) (cli;tirmc plcnini yrmek n burcyi
tiklcyin. (7) Nesneler yrmek n kullcnilcn men ve nesneler. (8) Soryulcrin sonu
ekrcni. () $cblonlcrc er;mek n bu meny kullcnin.
Veritaban ProgramIama 2 Y7 23
tirma plani i le Query analiz etme s ee-
negi ile daha az kaynak tuketen sorgula-
malar gelitirme imkani
8. In dex ayarlama si hirbazi i le 1 -SQL
komutlarini analiz ederek daha iyi s orgu
perormansi iin bir tablo ustunde ek bir
index alana gerek olup olmadigini bula-
bilme.(Indeksler hakkinda geni bilgi iin
serinin ilk kitabina bakiniz.)
{Resim 10)
uery AnaIyzer iIe
Veritabant DIuturmak:
Create 0atabase
Enterprise manager i le grsel ortamda
yaptigimiz hemen her eyi Query Analy-
zer i le de y apmak mumkundur. H atta
bu ortamda dogrudan kodlarla muhatap
oldugumuz i in daha azla detaya huk-
metme ansina sahibiz. Bu kisimda, bir
nceki blumde Ent erprise manager i le
nasil yapilacagini anlattigimiz veritabani
oluturma iini 1 -SQL komutlarini
kullanarak nasil yapabilecegimize degi-
necegiz. Bu i lem i in kullanacagimiz
komutu, Create Database deyimini bir
nceki kitapikta zet olarak anlatmi-
tik.
Genel kullanimi u ekildedir:
CREATE DATABASE veritabani_adi
[ON
[PRIMARY] (NAME= veri_dosyasi_adi,
FILENAME= ziksel_veri_dosyasi_adi
[, SIZE = veri_dosyasi_boyutu ]
[, MAXSIZE= maksimum_veri_dosyasi_
boyutu ]
[, FILEGROWTH=veri_artim_miktari])
[LOG ON
(NAME= log_dosyasi_adi,
FILENAME= ziksel_log_dosyasi_adi
[, SIZE = log_dosyasi_boyut]
[, MAXSIZE= maksimum_veri_dosyasi_
boyutu ]
[, FILEGROWTH=veri_artim_miktari]
)
]
PRIMARY: Bazen veritabani t anim-
lanirken birden azla dosya ustun de
veri s aklayabilecek bir ekilde t anim-
lanabilir. Bu durumda birinci dosya
PRIMARY i le belirtilen dosyadir. Bir
dosya bir ana gruba s ahip olabilir.
PRIMARY deyimi kullanilmazsa bir
veritabani i in t animlanan i lk dosya
PRIMARY dosya olarak kabul edilir.
Butun veritabani tanimlama tablolari ve
degerleri birincil dosyada saklanir. Birin-
cil veri dosyasi `.md ` dir. I kincil veri
PUCU:
7eritabaninda, ku llanici bilgileri,
haklar, nesne ler ve oze llikleri gibi
bilgilerin tutu ldugu ver i ta blolari
iin birok literaturde 7eri Sozlugu
(0ata 0 ictionary) ter imi ku llanilir.
7eritabani o lu;turuldugunda bir
ok verinin yer aldigi bir ok tablo
sistem taraf indan o lu;turulur ve
sistemin kendi ihtiyaci olan bilgiler
tutulur. 8ir de proje taraf indan
referans alinan ve il listesi, tur kod
lari ve benzeri gibi sa bit ka yitlari
ieren tablolar var dir ki bu tur den
tablolara da lookup table(referans
tablosu) denir.
24 Y7 Veritaban ProgramIama 2
dosyalarinin uzantisi ise `.nd ` dir.
veritabani_adi: V eritabanina vermeyi
planladiginiz isi m. Bu isi m V1YS t ara-
indan geerli kabul edilen ve 1-SQL ile
gnderimde bulunmak ist ediginiz (i leri
seviyeli ilemlerde) isim.
veri_dosyasi_adi: Veritabaninin i ziksel
adi. Bu isi m i letim sist emi t araindan
bilinene ismidir.
fizikseI_veri_dosyasi_adi: I letim sis -
temi uzerinde saklanacak dosyanin adini
ve yolunu belirtir.
veri_dosyasi_boyut: Veri dosyasinin MB
cinsinden boyutunu belirtir. En az ve
standart deger 1MB`tir. Bir birim belir-
tilmezse MB olarak alinir ancak diger
haiza birimlerini de belirterek kullan-
mak mumkundur. GB, MB, KB gibi.
maksimum_veri_dosyasi_boyutu: Bu
veritabaninin n e kadar boyut i le sini r-
landirilacagini belirtir. ayet bir deger
girilmezse, tu m disk doluncaya kadar
veritabani dosyasina veri eklenebilir.
artim_miktari: Veritabaninin balangita
belirtilen boyutu doldugunda sist em
taraindan boyutu otomatik olarak arti-
rilir. Bu aamada veritabaninin boyunun
ne kadar artirilacagi bu parametre i le
belirtilir. / oran degeri verilebilecegi gibi
sabit bir artim boyutu da girilebilir.
rnek 1:
Bir nceki kitapikta da kullandigimiz
dbKutuphane veritabanini oluturalim:
Balangi boyutu 1MB olsun. En azla
1GBa kadar olmak uzere her s eerinde
veri dosyasi / !0`si kadar artirilmak
uzere en azla 1GB`a kadar ikarila-
bilsin. Veri dosyalari i in isi m kutup-
hane_data olsun ve iziksel dosya adi D:
\data\dbKutuphane.md ` olsun.
Loglar i in balangita s adece 1 MB
yer ayrilsin. Ancak bu alan dolarsa, her
seerinde 1MB olmak u zere en azla
1GB`a kadar sist em t araindan ikari-
labilisin. Loglar i in sist em dosya adi
kutuphane_log olsun ve i ziksel dosya
adi D:\data\dbKutuphane.ld ` olsun.
CREATE DATABASE dbKutuphane
ON PRIMARY
(NAME =kutuphane_data,
FILENAME= `D:\data\dbKutuphane.mdf',
SIZE = 1,
MAXSIZE = 1GB,
FILEGROWTH = 20%
)
LOG ON(
NAME = kutuphane_log,
FILENAME= `D:\data\dbKutuphane.ldf',
SIZE = 1MB,
MAXSIZE = 1GB,
FILEGROWTH = 1MB
)
LogIamadan TabIo oaItma:
Truncate TabIe
Bir tabloda yer alan tum kayitlari silmek
ama bu silme ilemleri iin de satir bazli
birer t ransaction log oluturulmasinin
istenmedigi durumlar olabilir. (Ozellikle
replication i le i lgili uygulamalarda). Bu
tur durumlarda 1R UNCA1E 1ABLE
komutu kullanilir.
Veritaban ProgramIama 2 Y7 25
Genel kullanimi u ekildedir:
TRUNCATE TABLE tablo_adi
Burada, tablo_adi argumani, Ierigini
satir satir loglamaksizin boaltacagimiz
tablo adini iade eder.
1RUNCA1E 1ABLE i le WHERE
cumlecigi olmayan DELE1E komutu
ayni ilevi yapar, bir tablonun tum satir-
larini boaltir. 1R UNCA1E 1 ABLE
komutunu, WHERE koulu olmayan
DELE1E cumlelerinin y erine kul-
lanmak daha hizli bir t ablo boaltma
yntemidir. Sistem kaynaklarini da
1RUNCA1E komutu daha az megul
eder. unku, her bir silinen satir iin log
oluturmasinda gerek yoktur.
1RUNCA1E 1 ABLE komutunun
neticesinde, t ablonun s adece i erdigi
veriler si linir. K olonlar, zorlayicilar,
indeksler, t rigger`ler ve benzeri diger
tablo ustun de y er alan t animlamalar
silinmez. Bu tu r t animlamalarin da
silinmesini istiyorsaniz, DROP 1ABLE
komutu ile tabloyu silmek gerekir.
rnek 2:
DELETE * FROM kitap
ile
TRUNCATE TABLE kitap
Komutlarinin herhangi biri aliti-
rilsa i di, daha sonra eklenecek bir kitap
iin sist em t araindan verilen kitap-
No(kitap t ablosunun otomatik artan
anahtar alani) alani degeri arasinda n e
ark olurdu
1. i lemden s onra, kitapNo alanina en
son verilen kitapNo degerinin bir azla-
si(bir sonraki daha dogru olur.) verilirdi.
2. ilemde ise kitap no tekrardan 1 dege-
rinden(ilk verilen degerden) balar ve
eklenen her kayit i in artmaya devam
eder.
1RUNCA1E 1 ABLE komutu,
yabanci anahtar zorlayicilarina t akilir.
Bunun anlami u dur, dun t ablo-
sunda, kitapNo y abanci anahtar olarak
tanimlandigi iin, kitap tablosu ustunde
1RUNCA1E komutu alitirildiginda,
komut alitirilmayacaktir. Aksine
DELETE * FROM kitap
alitirilir. unku DELE1E komutu
log tut ar ve bu nedenle bir 1RI GGER
tetikleyebilir. Ancak 1R UNCA1E
komutu log tut madigi i in t rigger
harekete geiremeyecegi nlem olarak
komut alitirilmaz.
1RUNCA1E 1 ABLE komutu s on
olarak, indeksli grunum(view) lere iti-
rak eden tablolar iin de alitirilamaz.
1RUNCA1E 1ABLE komutu, stan-
dart olarak t ablonun s ahibine(owner)
aittir. Bu hak baka rollere ya da kullani-
cilara aktarilamaz.
ir Sorguyu uery
AnaIyzer iIe AnaIiz Etme
SQL Query Analyzer i le bir s orgunun
alitirilma planini grsel ve metin bazli
olarak detayli grerek ustun de optimi-
26 Y7 Veritaban ProgramIama 2
zasyon y apmak mumkundur. Bylece
ayni s onucu daha hizli ureten s orgular
yazmak mumkun olabilmektedir.
SQL Server Query Analyzer ile grsel
alitirma planini grmek iin
Query>Display Ex ecution P lan{
seenegini i aretleyin. Kisayol olarak
C1RL+L`yi de kullanabilirsiniz.
Daha s onra analiz etmek ist ediginiz
sorguyu yazip alitirin.
Ardindan Estimated Execution Plan{
sekmesini tiklayin.
SQL Server`in alitirma planini
metin ortaminda bir resultset olarak
dndurmesi i in u komutu kullanabi-
lirsiniz:
SET SHOWPLAN_TEXT ON
go
Dedikten s onra alitirdiginiz butun
sorgular i in bir metin bazli alitirma
plani da gruntulenecektir.
Bu zelligi tekrar kapatmak iin ali-
tirmamiz gereken komut olduka basit:
SET SHOWPLAN_TEXT OFF
Go
dememiz yeterli olacaktir.
Ayrica daha zet ama kapsami geni
bir alima plani iktisi almak iin SQL
Server`in SHOWPLAN_ALL zelligini
aabiliriz. Bunun i in de u komutu
0LUVCUL HATA!!!
WHLE dongusunde, dongunun
devam e dip et meyecegini ta yin
eden ;art k ismina, mutlaka sa gla
nacak bir ko;ul yazdiginizdan emin
olun. Aksi ha lde, sonsuza ka dar
ali;acak bir ko d yazabilirsiniz
ki boyle bir ;e y pratikte mevcut
degildir. Sadece SQL Server'in
kilitlenmesine neden olursunuz. 8ir
onceki ornekte , @sa yac degi;keni
14 ve 16 degerlerini alacak anacak
asla 15 degerini a lamayacaktir. 8u
durumda sonsuza ka dar ali;acak
bir ko d yazmi; o luruz. 0uru mu if
deyimi ierisinde kontro l e derek
olumcul hatayi engelledik.
46 Y7 Veritaban ProgramIama 2
banini S QL s erver aildigi anda bola-
tacaktir. Bazen, kullanici iki y aptigi
halde geici t ablonun s aklanmasi i hti-
yaci olabilir. Bu tur durumlarda, geici
tablo S QL Server kapanincaya kadar
haizada kalip, S QL s erver kapatildi-
ginda silinecekse, tempdb`de tablo ama
yntemi kullanilabilir.
rnek 21:
CREATE TABLE tempdb..kitap(
KitapNo INT,
KitapAdi VARCHAR(55),
ISBNNo CHAR(16)
)
go
{Resim 15)
rnek 25:
(ev devi)
Yntem i le geici t abloyu oluturun.
Daha sonra bu tabloya bir deger girin.
Enterprise manager i le t abloyu gr-
meye aliin.
Query Analyzer i le t abloyu grmeye
aliin (select ile).
Query Analyzer`i kapatip ain.
1ablodaki kayitlari s emeyi deneyin.
Ne grdunuz
Ayni ilemi ikinci ekilde geici tablo
aarak onun ustunde test edin.
KontroI ZorIayiciIari
{Check Constraints):
Diger zorlayicilar hakkinda daha geni
bilgi ilk kitapikta verilmiti. Zorlayicilar
genel olarak bir t ablo oluturulurken
tanimlanir ve veri butunlugunu s agla-
mayi amalayan t animlamalardir.Bir
tablo oluturulurken, herhangi bir alan
iin girilebilecek veri tu rlerini bir grup
veya kural i le sini rlamak i in kontrol
zorlayicilari kullanilir.
rnek 26:
Bir i l t ablosu oluturacagiz. 1u m i lle-
rin t raik kodlarinin (u lkemizde) 1-81
arasinda oldugunu biliyoruz ve t eleon
kodlarinin da 111 ile --- arasinda oldu-
gunu biliyoruz. Bu t animlari t abloya
yansitalim:
CREATE TABLE tblIL(
ilTrKod INT CONSTRAINT cns_ilTrKod
CHECK ( ilTrKod BETWEEN 1 AND 8181),
ilAdi VARCHAR(15),
ilTelKod INT CONSTRAINT cns_ilTelKod
CHECK (ilTelKod BETWEEN 111 AND 999),
)
eklinde oluturulan i l t ablosundaki
zorlayicilar il traik kodu olarak 1-81 ara-
liginin diinda, il teleon kodu olarak da
100 i le --- arasindaki s ayilarin diinda
bir deger girilmesini nleyecektir.
48 Y7 Veritaban ProgramIama 2
Prosedr ne demektir!
Nesneye dayali programlama bu kadar
populer degilken, programlar s adece
prosedur denilen paraciklardan olu-
urdu. H er bir prosedur, belli bir ilevi
yerine getirmek i in zenle y apilandi-
rilmi program paracigidir. Mesela, i ki
sayi alip bunlarin t oplamlarini hesapla-
yan bir kod parasini toplayici adinda bir
prosedur i erisine paketleyebiliriz. Bir
prosedur, baka bir prosedur ierisinden
agrilabilir. Bu da sik kullanilan ilemler
iin y azilmi kodlarin bir dea y azilip
ok dea kullanilmasini bylelikle de
programlamayi kolaylatirmayi amalar.
Sakli prosedurler, bir ok gelimi
programlama dilindeki onksiyon y api-
larina karilik gelir. Birden azla ilemi,
paketlenmi bir halde bir t ek komut i le
alitirmamiz gerektiginde stored proce-
dures kullanilir. I lemden kasit 1-SQL
ile yapilabilen her eydir.
Stored procedure, 1-80`li yi llarin
sonunda Sybase S QLServer i le birlikte
kullanima girdi. En buyuk zelligi
sorgularin nceden hazirlanmasi
(derlenmesi) ve V1YS i le ayni u zayda
alimasindan dolayi daha hizli s onu
vermesidir.
Bir SP oluturulduktan sonra, verita-
bani sunucusunda s aklanir. Her i htiya
duyuldugunda ayni sp dealarca agrila-
bilir. Cursor gibi oturum kapandiginda
silinmez.
Network bazli alimalarda ag traigi
ve sist em kaynaklarinin kullanimini
duzenleyerek de perormans artii saglar.
Bir dize i lem, bir t ek paket i erisinde
yer alir. Gerektiginde bir t ek komut i le
tetiklenebilir. P aketin t amami aliin-
caya kadar ist emde bulunan t erminale
hibir ey gnderilmez. 1u m komutlar
bittiginde bir tek sonu gnderilir. Bu da
bazi durumlarda ag traigini rahatlatir.
Bir SP sist em t araindan oluturul-
dugu anda u aamalara tabi tutulur:
SP`nin bileenleri paralara ayritirilir
Veritabani i erisinde t able,view gibi
baka n esnelere atita bulunan ree-
ranslar varsa, geerli olup olmadiklari
kontrol edilir. ( Geerli:1-nesne varmi,
!-izin var mi)
Kontrollerden geen SP`nin adi sysob-
jects tablosuna, kodlari ise syscomments
tablosuna saklanir.
Bu i lemlerle birlikte derleme i lemi
yapilir. Normalizasyon i lemleri olarak
da anilan bu i lemler s onucunda, aga
emasi elde edilir. Bu ema da sysproce-
dures tablosunda saklanir.
SP herhangi bir anda agrildiginda,
SakIt ProsedrIer
(Stored Procedures)
Veritaban ProgramIama 2 Y7 49
ilk kez aliiyorsa bu i lemler gerek-
letirilir. I lk s ea agrilmiyorsa, kontrol,
sorgulama agaci oluturma i lemleri
yapilmaz ve olduka hizli bir ekilde
SP`nin derlenmi hali aliir. Bundan
dolayi s p`ler derlenen n esnelerden biri
olarak anilir.
SP`Ier u faydaIari sagIar:
1. Uygulamanin getirdigi bazi i kural-
lari prosedur i inde t animlanabilir. Bir
kez olutuktan sonra bu kurallar birden
ok uy gulama t araindan kullanilarak
daha tut arli bir veri y netimi s aglanir.
Ayrica bir onksiyonelligin degimesi
ihtiyaci dogdugunda her uygulama iin
degiiklik y apmak y erine, s adece bir
platormda degiiklik yapilir.
2. 1um prosedurler ustun perormansla
aliir ancak birden azla alitirilacak
olan prosedurler s orgulama planlari
procedure t amponcache i inde s aklan-
digindan daha da hizli aliirlar.
l. Stored Procedure`ler SQL Server start
ettikten sonra otomatik olarak alitiril-
mak uzere ayarlanabilirler.
1. Stored P rocedure`ler harici olarak
kullanilirlar. 1rigger`lardan arkli olarak
prosedurler uy gulama t araindan y a da
script t araindan bir ekilde agrilmak
zorundadirlar. Otomatik devreye gire-
mezler.
5. Stored P rocedure`lerin i inde S QL
sorgulama diline ek olarak 1 -SQL
komutlarini kullanabiliriz.
6. Kullanicinin bir t abloya eriim i zni
olmasa bile o t ablo u zerinde i lem
yapan bir st ored procedure`u kullanma
izni olabilir.
SP oIuturma:
CREATE PROC [ EDURE ] procedure_name
[ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [
OUTPUT
] ]
[ ,...n ]
rnek 27:
alitirildigi tarih itibariyle, aldigi kitap-
lari getirmeyen uy elerin adini-soyadini
veren bir SP yazalim:
CREATE PROCEDURE sp_cezaliUye
AS
DECLARE @buGun DATETIME
SET @buGun = GetDate()
SELECT uye.Adi,uye.soyadi
FROM odunc INNER JOIN uye ON uye.UyeNo
= odunc.UyeNo
WHERE geldiMi=0 AND VermeTarihi + Ver-
meSuresi < @buGun
GO
--
>>The command(s) completed
successfully.
Daha sonra bu SP u komut ile ag-
rilir:
EXEC sp_cezaliUye
{Resim 16)
50 Y7 Veritaban ProgramIama 2
rnek 28:
En ok yapilan hata, bir SP`nin a g-
rilma kodunu da yanlilikla SP ile birlikte
derlemektir. Aagida yanli yazilmi bir sp
yer almaktadir. Dogru go` iadesi sizce
nereye konmali
CREATE PROCEDURE sp_cezaliUye
AS
DECLARE @buGun DATETIME
SET @buGun = GetDate()
SELECT uye.Adi,uye.soyadi
FROM odunc INNER JOIN uye ON uye.UyeNo
= odunc.UyeNo
WHERE geldiMi=0 AND VermeTarihi +
VermeSuresi < @buGun
--go burada yer almali
EXEC sp_cezaliUye
SP stnde degiikIik yapmak:
sp_helptext sp_adi
Sp_helptext sp_cezaliUye
dersek: {Resim 17 )`de ki sonu elde
edilir.
Daha sonra bu ierigi Query Analyzer
kod penceresine yapitirip, CREA1E
yerine AL1ER yazarsak:
ALTER PROCEDURE sp_cezaliUye
AS
DECLARE @buGun DATETIME
SET @buGun = GetDate()
SELECT uyeAdi FROM odunc
WHERE geldiMi=0 AND VermeTarihi +
VermeSuresi < @buGun
--
>> The command(s) completed
successfully.
SP`nin yeni halini kaydettirebiliriz.
Bir SP`yi SiImek:
Bir sp`yi artik kullanmayacagimiza
karar verdigimizde silmemiz gerekir. Bu
durumda u komut ile silinir:
DROP PROC sp_adi
go
rnek 29:
Oluturdugumuz sp`yi silmek iste r-
sek:
DROP PROC sp_cezaliUye
Go
--
>>The command(s) completed
successfully.
SP`ye Parametre YoIIama:
Bazen SP`ler diaridan parametre alabi -
lirler:
rnek l0:
Herhangi bir tarih verildiginde, bu tarihte
suresi bittigi halde teslim edilmeyen
PUCU:
8ir SP'nin bittigi yerde go deyimini
kullanmak, sp'nizin bittigi yeri tam
olarak belirtmenizi saglayacagindan
istemediginiz ko dlarin s p ile bir
likte derlenmesine ve istenmeyen
hatalar meydana getirmesine engel
olur.
Pesim 17
Veritaban ProgramIama 2 Y7 51
kitaplari bulan bir SP yazalim ancak
tarih olarak bu gunden daha buyuk bir
parametre alamasin. Byle bir durum
oldugunda, bu gunun tarihini versin.
CREATE PROCEDURE sp_cezaliUye_1
@referansTarih DATETIME
AS
DECLARE @buGun DATETIME
SET @buGun = GetDate()
IF @referansTarih > @buGun
SET @referansTarih = @buGun
SELECT uye.Adi,uye.soyadi
FROM odunc INNER JOIN uye ON uye.UyeNo
= odunc.UyeNo
WHERE geldiMi=0 AND VermeTarihi +
VermeSuresi < @referansTarih
Bazen diaridan gelen parametr e-
lerin istege bagli olmasi istenebilir. Bu
durumda DEFAUL1 deger atama
seenegi kullanilir. ayet diaridan par a-
metreye deger atanmazsa, geerli deger
deault atanmi deger olarak alinir ve
ilem yapilir:
rnek l1:
CREATE PROCEDURE sp_cezaliUye_2
@referansTarih DATETIME = NULL
-- diaridan referans tarihi gelmedi
ise, NULL olarak kabul et.
AS
DECLARE @buGun DATETIME
SET @buGun = GetDate()
IF (@referansTarih IS NULL) OR
(@referansTarih>@buGun)
SET @referansTarih = @buGun
SELECT uye.Adi,uye.soyadi
FROM odunc INNER JOIN uye ON uye.UyeNo
= odunc.UyeNo
WHERE geldiMi=0 AND VermeTarihi +
VermeSuresi < @referansTarih
Go
eklinde yazabiliriz. Daha sonra
EXEC sp_cezaliUye_2
@referansTarih='06.20.2003'
--
>>(H SONU DNMEYECEKTR)
EXEC sp_cezaliUye_2
diyerek sp'yi agirabiliriz.
rnek l2:
Kitaplar tablosu ustunde aagidaki par a-
metrelere gre arama yapabilecek bir SP
yazalim. Parametrelerden gelenler iin
iltreleme yapilsin.
Diaridan alinabilecek Parametreler:
ISBNNo, KitapAdi, Ozeti {Resim 18)
ALTER PROCEDURE sp_kitapBul
@ISBNNo CHAR(16) =NULL,
@KitapAdi VARCHAR(55)=NULL,
@KitapOzeti VARCHAR(55)=NULL
AS
DECLARE @sSQL VARCHAR(500)
Set @sSQL= `SELECT * FROM Kitap WHERE
1=1 `
IF @ISBNNo IS NOT NULL
SET @sSQL = @sSQL + ` AND ISBNNo =
`'' + @ISBNNo + `'''
IF @KitapAdi IS NOT NULL
SET @sSQL =@sSQL + ` AND KitapAdi
LIKE `'%' + @KitapAdi + `%'''
IF @KitapOzeti IS NOT NULL
SET @sSQL = @sSQL + ` AND KitapOzeti
LIKE `'%' + @KitapOzeti + `%'''
--print @sSQL --nasil bir SQL
oluturduk?
EXEC(@sSQL)
Go
Farkli parametre degerleri ile SP'yi
agirabiliriz:
EXEC Sp_kitapBul @ISBNNo='12345'
EXEC Sp_kitapBul @ISBNNo='12345',
@kitapAdi='Yol'
...
SabitIeme noktaIari:
Bazen, bir noktaya kadar gelindikten
sonra, ilemlerin buraya kadar olanini
geerli kabul etmek isteriz ama, bundan
sonraki ilemler iin de transaction (geri
alabilme seenegi)`ne ihtiya duyariz. Bu
turden durumlarda sabitleme noktalarin -
dan aydalanilir.
Bir sabitleme noktasi balatildigi anda,
en baa dnme seenegi sakli kalmak
uzere, noktanin oluturuldugu yere de
dnme seenegi sunar
Genel yapisi u ekildedir:
SAVE 1RANSAC1ION sabitleme _
notkasi_adi
rnek 15:
SELECT * FROM hesap
--lk bataki hesap durumlarina
dikkat:
BEGIN TRANSACTION
UPDATE Hesap
SET bakiye = 5000000
WHERE hesapNo='1'
-- transaction aildiktan sonra bir
UPDATE geldi.
--Yeni Durum:
SELECT * FROM hesap
SAVE TRANSACTION svp_kaydet
DELETE FROM Hesap
WHERE HesapNo='1';
--Kaydetme noktasindan sonra bir nolu
hesap silindi
--yeni durum:
SELECT * FROM hesap
ROLLBACK TRAN svp_kaydet;
--kaydetme noktasina dnld(Silinene
hesap geri geldi)
SELECT * FROM Hesap;
ROLLBACK TRAN ;
--te son durum(havale geri alindi,
her ey ilk haline geldi.)
SELECT * FROM Hesap;
rnek 16:
Veritaban ProgramIama 2 Y7 63
Kitap tablosu ustunde kilitlemeden seme
ilemi yapmak iin:
SELECT kitap.*
FROM kitap WITH(NOLOCK)
WHERE kitapNo>5
Trigger'Iar
1riggers (1etikler), aslinda zel bir Stored
Procedure`dur. SP`lerden arki, bir tablo
ustunde
UDA1E , INSER1, DELE1E komut -
lari ile bir ilem yapilmak istendiginde, ilk
olarak bu SP`lere bakilmasi ve gerekli ise
alitirilmasidir.
Nesneye dayali Programlamada var
olan, event based programlama bu mantik
ile rtuur.
1rigger`lar izin verilmeyen ya da tutar-
sizliga neden olacak ilemleri engelleyerek
veri butunlugunun korunmasina yardimci
olurlar. Daha nceki veritabani sisteml e-
rinde triggerlar tablolar arasi birbirlerine
reerans yapan verilerin butunlugunu sag-
lamak maksadiyla kullanilirlardi (yabanci
anahtar zorlayicisini hatirlayiniz). Ancak
SQL Server 6.` dan itibaren bu ilem
zaten Reerantial Integrity tanimlamal a-
riyla saglandigi iin bu maksatla kullani l-
malari gereksizdir.
1riggerlar genellikle degiik tablolar
uzerinde bulunan ve birbirleri arasinda
mantiksal ilikilere sahip verilerin tuta r-
liligini saglamak uzere oluturulurlar.
Ihtiyaca gre uygulamanin getirdigi bazi
kurallari kontrol etmek iin de kullanil a-
bilirler.
Genel kullanimi:
CREATE TRIGGER trigger_adi
ON tablo_adi
FOR INSERT [,UPDATE,DELETE]
AS
SQL ifadesi
eklindedir.
1rigger`lerin bir UPDA1E, INSER1
veya DELE1E komutuna cevap olarak
alimasi, 1ransaction mantigi ile aynidir:
Bir tablo iin 1RIGGER tanimli ise
INSER1, DELE1E veya UPDA1E
ilemi balamadan hemen nce bir 1ran -
saction balatilir.
INSER1, DELE1E veya UPDA1E
komutu yerine getirilir.
1rigger agrilir ve iindeki SQL iadesi
alitirilir.
1rigger ilemi onaylarsa geerli kilar
veya onaylamaz ve geersiz bulur. 1ran -
saction geri alinir. (ROLLBACK 1RA N-
SAC1ION).
Bir 1rigger olutururken u durumlara
dikkat etmek gerekir:
View ya da geici tablolar uzerinde
oluturulamazlar. Fakat bunlara reerans
UYAPI:
Pecursive o larak ali;mazlar. Yan i
bir tablonun herhangi bir sutununda
yapilan degi;iklik uzerine bir trigger
ali;ip ayni tablonun ba;ka bir sutu
nunda degi;iklige ne den o luyorsa
ikinci yapilan degi;iklik trigger iin
tetiklenmeye ne den o lmaz. K isaca
update trigger'i tekrar tekrar ali;
maz, yalnizca bir kez ali;ir.
64 Y7 Veritaban ProgramIama 2
ierebilirler.
2. alitiktan sonra bir kullaniciya deger
kumesi dnduremezler. Dolayisiyla
SELEC1 iadesi dahil edilecegi zaman
dikkatli olunmalidir.
l. Veri butunlugunu, arkli tablolardan
birbirine reerans yapan verilerin tutarlili-
gini saglamak iin ve uygulamanin ihtiya-
cina gre bazi kurallari tanimlamak uzere
kullanilabilirler. Ancak zorlayicilarla
duzenlenebilecek trigger kullanmamak
daha aydalidir.
1. Istenirse syscomments tablosunda ire-
lenmi tekilde saklanabilirler.
5. CREA1E, DROP, AL1ER 1ABLE,
AL1ER DA1ABASE, SELEC1 IN1O
gibi iadeler trigger iinde kullanilmazlar.
rnek 17:
Odun tablosundaki kayitlar ustunde
degiiklik yapildiginda ka kaydi etkiledi -
gini yazan bir trigger oluturalim:
CREATE TRIGGER tr_AffectedRows
ON odunc
FOR INSERT, UPDATE,DELETE
AS
raiserror(`%d kayit zerinde degiiklik
yapilmitir', 0, 1, @@rowcount)
RETURN
Ardindan odunc iin
DELETE FROM ODUNC WHERE oduncNo=8
Gibi bir cumlecik alitirdigimizda,
Mesaji gelir.
EkIenen-SiIinen KayitIar:
1riggerlar alitigi zaman Inserted ve
Deleted tablolarini kullanirlar. Bu tablola-
rin her ikisi de ana tabloyla yani triggerin
tetiklendigi tabloyla edeger alanlara
sahiptirler. Bu tablolar, mantiksal tablo
eklinde RAM` de bulunurlar. Ana tabloya
bir kayit eklendigi zaman bu kayit ayni
zamanda inserted tablosuna da eklenir.
Ihtiyacimiz oldugu zaman yeni eklenen
degerlere bu tablodan ulaarak, bu bilgileri
tutmak maksadiyla degiken tanimlamak
zorunda kalmaktan kurtuluruz. 1ablodan
bir kayit silindiginde silinen kayit deleted
tablosunda saklanir. Update ilemi ise
delete ve hemen ardindan yapilmi bir
insert ilemi olarak ele alinir. Bir kayit
update edildiginde orijinal kayit deleted
tablosuna ilenir, degien kayit da inserted
tablosunda (ve ana tabloda) saklanir.
1rigger`lere diaridan parametre yolla-
yamayiz. Ancak, INSER1ED ve DELE -
1ED tablolari sayesinde kisitli da olsa,
son ilemden etkilenmekte olan kayitlari
tespit edebiliriz.