You are on page 1of 94

T.C.

MLL ETM BAKANLII

MEGEP
(MESLEK ETM VE RETM SSTEMNN GLENDRLMES PROJES)

BLM TEKNOLOJLER

VERTABANI YNETM

ANKARA 2008

Mill Eitim Bakanl tarafndan gelitirilen modller;


Talim ve Terbiye Kurulu Bakanlnn 02.06.2006 tarih ve 269 sayl Karar ile onaylanan, Mesleki ve Teknik Eitim Okul ve Kurumlarnda kademeli olarak yaygnlatrlan 42 alan ve 192 dala ait ereve retim programlarnda amalanan mesleki yeterlikleri kazandrmaya ynelik gelitirilmi retim materyalleridir (ders notlardr). Modller, bireylere mesleki yeterlik kazandrmak ve bireysel renmeye rehberlik etmek amacyla renme materyali olarak hazrlanm, denenmek ve gelitirilmek zere Mesleki ve Teknik Eitim Okul ve Kurumlarnda uygulanmaya balanmtr. Modller teknolojik gelimelere paralel olarak amalanan yeterlii kazandrmak koulu ile eitim retim srasnda gelitirilebilir ve yaplmas nerilen deiiklikler Bakanlkta ilgili birime bildirilir. rgn ve yaygn eitim kurumlar, iletmeler ve kendi kendine mesleki yeterlik kazanmak isteyen bireyler, modllere nternet zerinden ulalabilirler. Baslm modller, eitim kurumlarnda rencilere cretsiz olarak datlr. Modller hibir ekilde ticari amala kullanlamaz ve cret karlnda satlamaz.

NDEKLER
AIKLAMALAR .......................................................................................................iii GR ........................................................................................................................... 1 RENME FAALYET-1......................................................................................... 3 1. VER YNETM.................................................................................................... 3 1.1. Veri Alma ve Dar Veri Yollama (Import ve Export) .................................... 3 1.1.1. Veri Alma (Import) .................................................................................... 3 1.1.2. Dar Veri Yollama (Export)................................................................... 12 1.2. bcp Komut stemi Program......................................................................... 16 1.3. Bulk Insert Komutu ......................................................................................... 18 1.4. Veri Transfer Hizmetleri ................................................................................. 19 1.4.1. SQL Server 2000 Veritabann SQL Server 2005e Aktarmak................ 19 UYGULAMA FAALYET................................................................................... 21 LME VE DEERLENDRME......................................................................... 26 RENME FAALYET-2....................................................................................... 27 2. LER SORGU TEKNKLER .............................................................................. 27 2.1. Inner Join ve Outer Join .................................................................................. 27 2.1.1. Inner Join.................................................................................................. 27 2.1.2. Outer Join ................................................................................................. 28 2.2. Alt Sorgular ..................................................................................................... 29 2.2.1. IN ve NOT IN .......................................................................................... 29 2.2.2. e SELECT ......................................................................................... 29 2.2.3. Tretilmi Tablolar................................................................................... 31 2.2.4. EXISTS ve NOT EXISTS........................................................................ 33 UYGULAMA FAALYET................................................................................... 35 LME VE DEERLENDRME......................................................................... 39 RENME FAALYET-3....................................................................................... 40 3. MLE ................................................................................................................... 40 3.1. Kullanm Amalar .......................................................................................... 40 3.2. T-SQL mleler ............................................................................................... 40 3.2.1. T-SQL mle Kullanm ........................................................................... 41 3.2.2. @@FETCH_STATUS ve @@ROWCOUNT ........................................ 41 3.2.3. mle Seeneklerini Ayarlamak ............................................................... 44 3.3. mlelerle Satrlar Arasnda Dolamak ........................................................... 44 3.4. mlele Kaytlar Dzenlemek ........................................................................ 45 3.5. Ortak Zamanl alma ................................................................................... 46 UYGULAMA FAALYET................................................................................... 47 LME VE DEERLENDRME......................................................................... 49 RENME FAALYET-4....................................................................................... 50 4. TETKLEYC ....................................................................................................... 50 4.1. Tetikleyici Ne Zaman Kullanlr? ................................................................... 50 4.2. Tetikleyiciyi Ateleyen Olaylar ...................................................................... 51 4.3. Tetikleyici Trleri ........................................................................................... 51 i

4.3.1. After Tetikleyicileri.................................................................................. 51 4.3.2. Instead Of Tetikleyicileri ......................................................................... 51 4.4. Tetikleyici Oluturmak.................................................................................... 52 4.4.1. INSERT Tetikleyicisi............................................................................... 52 4.4.2. DELETE Tetikleyicisi.............................................................................. 54 4.4.3. UPDATE Tetikleyicisi ............................................................................. 56 4.4.4. INSTEAD OF Tetikleyicisi...................................................................... 57 4.5. Tetikleyici Ynetimi ....................................................................................... 59 4.5.1. Tetikleyiciyi Dzenlemek (ALTER)........................................................ 59 4.5.2. Tetikleyiciyi Silmek (DROP)................................................................... 60 4.5.3. Tetikleyiciyi Aktif ya da Pasif Yapma..................................................... 61 UYGULAMA FAALYET................................................................................... 62 LME VE DEERLENDRME......................................................................... 64 RENME FAALYET-5....................................................................................... 65 5. GRNM ........................................................................................................... 65 5.1. Hangi Amalar in Kullanlr?....................................................................... 65 5.2. View Oluturmak ............................................................................................ 65 5.3. Kstlamalar ve zinler..................................................................................... 70 5.4. Birden Fazla Tablo Kullanm......................................................................... 71 5.5. Viewde Deiiklik Yapmak veya Viewi Silmek .......................................... 72 5.5.1. Deiiklik Yapmak................................................................................... 72 5.5.2. Silmek....................................................................................................... 72 UYGULAMA FAALYET................................................................................... 73 LME VE DEERLENDRME......................................................................... 76 RENME FAALYET-6....................................................................................... 77 6. NDEKS ................................................................................................................. 77 6.1. likisel Veritabannda ndeksler..................................................................... 77 6.2. Kme ve Kme Olmayan ndeksler ................................................................ 78 6.3. ndeks Oluturmak .......................................................................................... 78 6.3.1. Unique ndeks .......................................................................................... 79 6.3.2. Karma (Composite) veya Birleik ndeks ................................................ 79 6.4. ndekste Deiiklik Yapmak.......................................................................... 80 6.4.1. ndeks Silmek........................................................................................... 81 6.5. sp_helpindex Komutu.................................................................................. 81 UYGULAMA FAALYET................................................................................... 83 LME VE DEERLENDRME......................................................................... 84 MODL DEERLENDRME .................................................................................. 85 CEVAP ANAHTARLARI......................................................................................... 86 KAYNAKLAR........................................................................................................... 88

ii

AIKLAMALAR AIKLAMALAR
KOD ALAN DAL/MESLEK MODLN ADI MODLN TANIMI SRE N KOUL YETERLK 481BB0046 Biliim Teknolojileri Veritaban Programcl Veritaban Ynetimi SQL Serverda veri btnl veya kstlamalar ile ilgili renme materyalidir. 40/32 Veri Btnl modln bitirmi olmak Genel Ama Gerekli ortam salandnda, verileri sorgulayabilecek, tetikleyici ve grnm tabanl almay yapabileceksiniz. Amalar 1. Veriye ulaabileceksiniz. 2. Veriye ileri sorgu teknikleriyle ulaabileceksiniz. 3. mleci kullanabileceksiniz. 4. Tetikleyicileri kullanabileceksiniz. 5. Grnm tabanl alabileceksiniz. 6. ndeks oluturabileceksiniz. Ortam Atlye, laboratuvar, bilgi teknolojileri ortam ( nternet ) vb. kendi kendinize veya grupla alabileceiniz tm ortamlar. Donanm A veritabann altrabilecek yeterlikte bilgisayar, yedekleme iin gerekli donanm (CD yazc, flash bellek), raporlama iin yazc, kt ve kalem.

MODLN AMACI

ETM RETM ORTAMLARI VE DONANIMLARI

LME VE DEERLENDRME

Modln iinde yer alan her renme faaliyetinden sonra verilen lme aralar ile kendinizi deerlendireceksiniz, modl sonunda ise bilgi ve beceriyi belirlemek amacyla, retmeniniz tarafndan belirlenecek lme aracyla deerlendirileceksiniz.

iii

iv

GR

GR
Sevgili renci, Okul yaantnzda reneceiniz her konu, yaptnz uygulama ve tamamladnz her modl bilgi daarcnz gelitirecek ve ileride atlacanz i yaantnzda size baar olarak geri dnecektir. Eitim srecinde daha zverili alr ve alma disiplinini kazanrsanz; baarl olmamanz iin hibir neden yoktur. Son yllarda yaplan birok proje ok sayda bilgisayar tarafndan kullanlabilecek ekilde tasarlanmaktadr. Bu yzden, a ortamnda birden fazla kullanc ayn proje zerinde alabilmektedir. Bu ilemleri ok sk kullandnz veritaban programyla yapabileceiniz gibi a ortamnda gvenlik ve hzl eriim asndan en iyi sonucu veren SQL Server veritabanyla da yapabilirsiniz. Bu program, milyonlarca kaydn olduu tablolar zerinde ilem yaparken tm kullanclara hitap edebilmektedir. stenilen sorgu sonularn da en hzl ekilde elde edebilmenizi salamaktadr. Bu modlle, SQL Serverda veri ynetimini, ileri sorgu tekniklerini, imle kullanmay, tetikleyici, grnm ve indeks oluturup kullanabilmeyi reneceksiniz.

RENME FAALYET-1 RENME FAALYET-1


AMA

SQL Serverda veri ynetimini reneceksiniz.

ARATIRMA

Programlama dilleri ya da programlama dili destekli paket programlarda veri ynetiminin nasl yapldn aratrnz.

1. VER YNETM
1.1. Veri Alma ve Dar Veri Yollama (Import ve Export)
Veri ynetimi, deiik kaynaklardan elde edilen bilgilerin toplanabilmesi, gncelletirilebilmesi, ayrtrlabilmesi, bir araya getirilebilmesi ve sonu olarak deerlendirilebilmesidir. SQL Serverda veri alp verme ilemleri SQL Server Import and Export Wizard ile yaplmaktadr. Bu veri alverii Access, Excel, virglle blnm text dosya vb. kaynaklarla olabilir.

1.1.1. Veri Alma (Import)


Hazrladnz veritabanna dardan veri almak iin SQL Server Import and Export Wizard kullanlmaktadr. Veri alnacak kaynak bir text dosya, Access veritaban dosyas veya Excel alma sayfas olabilir. Veritabanna dardan veri almak iin veritaban zerinde fareyle sa tklayarak alan menden Task komutuyla Import Data komutunu kullanlmaktadr. rnek olmas asndan bir Excel alma sayfasndan nasl veri alnacan uygulayarak bakalm.

rnek Excel programn aarak A ve B stununa Resim 1.1deki gibi bilgileri giriniz. Bu bilgiler ehir ad ve ehrin telefon kodu eklinde olacaktr.

Resim 1.1: Veri alnacak Excel alma sayfas

alma sayfasnn adn SehirTelKodu olarak deitiriniz. Excel dosyasna verial ismini vererek kaydediniz. altnz veritaban zerinde fareyle sa tklayarak alan menden Task komutuyla Import Data komutunu veriniz.

Resim 1.2: Import Data komutu

Import Data komutunu tkladnzda ekrana SQL Server Import and Export Wizard gelecektir.

Resim 1.3: SQL Server Import and Export Wizard ekran

Bu ilk pencere sihirbaz ile ne gibi ilemler yapabileceinizi anlatmaktadr. Ekrana gelen bu ilk sihirbaz penceresini bir daha grmek istemiyorsanz Do not show this starting page again onay kutusunu iaretleyiniz. Sihirbazn dier admna gemek iin Next dmesini tklatnz. Next dmesini tkladnzda veri kaynann seilecei Choose a Data Source penceresi ekrana gelir.

Resim 1.4: Veri kaynann seimi penceresi

Bilgilerin alnaca ya da kopyalanaca veri kaynann seimi bu pencerede yaplmaktadr. Data Source alr liste kutusundan bu kayna seebilirsiniz. Excelden veri alnaca iin Data Source alr liste kutusundan Microsoft Exceli seiniz. Excel File Path kutusuna dosyanzn yolunu yaznz ya da Browse dmesini tklayarak oluturduunuz Excel dosyasnn yolunu belirtiniz.

Resim 1.5: Excel dosyasnn veri kayna olarak belirtilmesi

Excel dosyasnn yolu belirtildikten sonra alma sayfasndaki balklarn veritabanndaki tabloda stun ad olarak belirlenmesi iin First row has column name onay kutusunu iaretleyiniz. Bir sonraki adma gemek iin Next dmesini tklaynz. Ekrana bilgilerin kopyalanaca, hedefin seiminin yapld Choose a Destination penceresi gelecektir.

Resim 1.6: SQL Server hedef veritabannn seilmesi

Database alr liste kutusundan verinin alnaca hedef veritabann seebilirsiniz. Eer bilgileri yeni bir veritabanna alacaksanz New komutunu tklayarak yeni bir veritaban oluturabilirsiniz. Veritabannz setikten sonra Next dmesini tklaynz. Ekrana tablonun nasl oluacan salayacak pencere gelecektir.

Resim 1.7: Tablonun oluum ekran

Copy data from one or more tables or views seimini yaparak Next dmesini tklaynz. Ekrana kaynak tablolarn ve grnmlerin seilecei Select Source Tables and Views penceresi gelecektir.

Resim 1.8: Kaynak tablolar ve grnmlerin seimi

Excelde hazrlanm alma sayfasnn ad olan SehirTelKodunu seiniz. Seimi yaptnzda Edit dmesi etkin hle gelecektir. Eer, tabloya aktarlacak olan verilerin veri trlerini ve boyutlarn deitirmek isterseniz Edit dmesi tklandnda alan Column Mappings penceresinde dzeltme yapabilirsiniz. alma sayfasnda var olan tm sayfalar semek isterseniz Select All dmesini, seilmi olan sayfalarn seimini kaldrmak isterseniz Deselect All dmesini tklayabilirsiniz. Seilen alma grebilirsiniz. sayfasnn verilerini Preview dmesini tklayarak

Resim 1.9: alma sayfasnn verilerinin nizlemesi

Bilgileri grdkten sonra OK dmesini ve bir sonraki adm iin Next dmesini tklatnz. Ekrana kayt ileminin yaplaca ve paketin altrlaca Save and Execute Package penceresi gelecektir.

Resim 1.10: Save and Execute Package penceresi

Execute Immediately seenei, paketi hemen altrmak iin kullanlr. Paketi oluturup veri tama ilemi yapacaksanz Save SSIS Package seeneini seiniz. Saklama ortamnn ve hassas verilerin zellikleri bu seenekle ayarlanmaktadr. Seiminizi yaptktan sonra Next dmesini tklatnz. Ekrana sihirbazn tamamlandn gsteren Complete Wizard penceresi gelecektir.

Resim 1.11: Complete Wizard penceresi

Yaplan ilemlerin zetinin gsterildii bu pencerede sihirbaz tamamlamak iin Finish dmesini tklatnz. altrlma sonucunda yaplan ilemlerin baarl bir ekilde gerekleip gereklemediini greceksiniz.

10

Resim 1.12: Sonu penceresi

lemler baarl olduysa Status stununda Success ifadesini grebilirsiniz. Close dmesine basarak sihirbaz kapatnz. Veritabannzdaki tablolar setiinizde Excelden aldnz eklendiini grebilirsiniz. Gremiyorsanz tablolar Refresh unutmaynz. tablonun yapmay

Resim 1.13: Import edilen verinin tablolardaki grnts

Tablo iindeki verileri de grmek isterseniz tabloyu Open Table komutuyla anz.

11

Resim 1.13: Tablo ierii

1.1.2. Dar Veri Yollama (Export)


Veritabannza dardan veri alnabilecei gibi dar veri de yollanabilir. Bunun iin de Export Data komutu kullanlmaldr. Dar veri yollama ilemini veri alma ilemi gibi rnekle anlatalm. rnek Daha nceki rneklerde yaplan Snf tablosunu Export edelim.

Resim 1.14: Snf tablosu

Bunun iin nce Excelde verilerin alnaca bir Excel dosyas oluturunuz. Adn da veri_export olarak tanmlaynz. Veri yollamak iin Tasks komutu zerinden Export Data komutunu veriniz.

12

Resim 1.15: Export Data komutu

Veri alma ve yollama sihirbaznn ilk admn geerek veri kaynan belirtiniz. Veri kaynanz, tabloyu gndermek istediiniz veritabannn ad olacaktr.

Resim 1.16: Veri kaynann seimi

Veri kaynanz setikten sonra Next dmesin, tklaynz. Ekrana hedef seiminin yaplaca pencere gelecektir.

13

Resim 1.17: Hedefin seimi

Destination kutusundan veriyi yollayacanz hedefi (Microsoft Excel) seiniz. Exceli setiinizde yollanacak verinin aktarlaca Excel dosyasnn yolunu belirtmeniz istenir. Browse dmesine basarak daha nceden oluturduunuz veri_export dosyasn belirtiniz.

Resim 1.18: Hedefin seimi

14

Next dmesini tklayarak dier adma geiniz. Ekrana tablonun nasl oluacan salayacak Resim 1.7deki pencere gelecektir. lk seenei seip Next dmesini tkaynz. Kaynak tablolarn ve grnmlerin seilecei Select Tables and Views penceresi ekrana gelecektir. Yollayacanz tablo ya da tablolar seerek Next dmesini tklaynz.

Resim 1.19: Tablolarn ve grnmlerin seimi penceresi

Ekrana kayt ilemi ve paketin altrlaca Resim 1.10daki Save and Execute Package penceresi gelecektir. Seiminizi yaparak Next dmesini tklaynz. Sihirbazn son admnda da Finish dmesine basarak paketin oluturulmasn salaynz. Paketin oluturulmas esnasnda hata olup olmadn kontrol ediniz (Resim 1.12). Close dmesine basarak verilerin yolland Excel dosyasn anz. Excel dosyasnda verilerin bir greceksiniz. alma sayfas olarak gnderildiini

15

Resim 1.20: Export ileminin sonucu

1.2. bcp Komut stemi Program


bcp, bir komut istemi programdr. Verilerinizi dosyadan alma veya dosyaya yollama ilemleri iin kullanlr. bcp ile bir dosyaya veri aktarrken veritabannzn tablo ya da tablolar zerinde SELECT komutunu kullanma hakk olmaldr. Bir dosyadan veri alrken de yine tablo ya da tablolar zerinde veritabannzn mutlaka SELECT ve INSERT komutlarn kullanma hakk olmaldr. Dardan alnan veriler ancak veritabannda var olan bir tabloya aktarlabilir. Veritabanndan bir dosyaya veri aktarlyorsa belirtilen dosya olmasa da dosya oluturulur ve aktarma gerekletirilir. bcp komutunu altrabilmek iin Balat/altr komutunu seerek Cmd yaznz. Komut istemine bcp yazp Enter tuuna bastnzda bcp ile kullanlan parametreleri grebilirsiniz.

Resim 1.21: Bcp komutu parametreleri

16

rnek Sinif tablosundaki verileri bcp komutu ile bir dosyaya aktaralm. Komut istemine bcp komutunu Resim 1.22deki gibi yaznz ve Enter tuuna basnz.

Resim 1.22: Bcp komutunun out kullanm

SListe.txt dosyas ilgili klasrn altnda oluturulacaktr. Dosya ieriini grmek iin dosyay Not Defteri program ile aabilirsiniz.

Resim 1.23: Dosya ierii

-c parametresi karakter tipinde veri aktarmnn yaplacan, -T ise gvenli balantnn kullanlacan belirtir.

Bir dosyadan veritabannza veri almak iin veri aktaracanz tablonun veritabannda var olmasna dikkat etmeniz gerekir. Veri aldnz SListe.txt dosya ieriini bir tabloya aktarmak iin de bcp komutunu Resim 1.24teki gibi yaznz ve Enter tuuna basnz. Bu ilem iin yeni bir tablonuz olduu varsaylacaktr.

17

Resim 1.24: Bcp komutunun in kullanm

Burada sadece out ifadesi yerine in ifadesinin geldiine dikkat ediniz. Veritabanndaki tablonuzu da aarak verilerin tabloya aktarlp aktarlmadn grebilirsiniz.

Resim 1.25: Verilerin tabloya aktarlm hli

1.3. Bulk Insert Komutu


Bcp komutuyla yaplan dardan veri alma ilemi Bulk Insert komutuyla bir Query yazarak da yaplabilir. Bu ilem iin de yeni bir tablo oluturduunuz varsaylacaktr. Bulk Insert komutu iin Resim 1.26da verilen kodlar yeni bir Querye yazarak F5 ile altrnz.

Resim 1.26: Bulk Insert komutunun kullanm

SListe.txt dosyas ierisinde var olan verilerin yeni tablonuz bulk_tabloya aktarldn greceksiniz.

18

Resim 1.27: Bulk Insert ile verilerin tabloya aktarlm hli

1.4. Veri Transfer Hizmetleri


Veri transfer ilemi, veritaban ynetim sistemlerinin nemli bir parasdr. Veri transfer hizmetleri, kiilerin yeni OLEDB veri kaynaklar ve hedefler, grevler ve dnmler oluturmasna izin verir. Bu hizmetle kullanc, veri transfer paketleri oluturabilir ve altrabilir. Bu hizmet SQL Server 2005 ile yeniden oluturularak SSIS (SQL Server Integration Services) adn almtr. SSIS, veri btnletirme zmleri gelitirmede kullanlr. Veri aktarma ve dardaki veri kaynaklarndan veri alma, temelli zmler iin kullanlabilen servistir.

Resim 1.28: Integration services

1.4.1. SQL Server 2000 Veritabann SQL Server 2005e Aktarmak


SQL Server 2000deki kurulmu olan bir sistemi SQL Server 2005e aktarma ilemi iki ekilde gerekleir.

19

Yan Yana Aktarm

Side by side Upgrade de denilen bu sistemde, eski srmn yanna yeni bir srm kurularak eski sistemin devamnn salanmas ve yeni sistem zerinden alabilir hale getirilmesidir. Yerinde Aktarm

In-Place Upgrade de denilen bu sistemde, eski sistemin alt yere yeni sistemin kurulmas demektir. Bylece, eski sistem tamamyla kaldrld iin yeni sistemle allabilinir hale gelinmektedir. Eski srmde oluturulan dosyalarnz, SQL Server 2005in veri dosyalarnn bulunduu klasre kopyalayarak Attach edebilirsiniz.

Resim 1.29: Attach ilemi

20

UYGULAMA FAALYET UYGULAMA FAALYET 1


lem Basamaklar neriler

Microsoft Access programn aarak bir veritaban ve bir tablo oluturunuz.


Resim 1.30: M.Accessta oluturulacak tablo

Tabloyu kaydediniz.

Tablo1 adnda kaydedebilirsiniz.

SQL Server Management Studioda daha nceden oluturduunuz bir veritabanna Access tablosundaki verilerin alnmas iin veritaban zerinde sa tklaynz ve Import Data komutunu seiniz.
Resim 1.31: Import Data komutunun verilmesi

Alan sihirbaz ekrannda Data Source olarak Microsoft Access seiniz ve File Name kutusuna dosya adn yaznz ve Browse dmesine basarak dosyann yolunu belirtiniz.

Resim 1.32: Veri kaynann ve dosyann belirtilmesi

21

Next dmesini tklaynz. Verilerin kopyalanaca hedefi (destination) seiniz.

SQL Native Client

Verilerin kopyalanaca veritabann seiniz ve Next dmesini tklaynz.

Resim 1.33: Hedefin ve veritabannn seilmesi

Tablonun nasl oluacan seiniz ve Next dmesini tklaynz.

Copy data from one or more tables and views

Microsoft Access ile oluturduunuz tabloyu seiniz ve Next dmesini tklaynz.

Resim 1.34: Tablonun seilmesi

22

Kayt ilemi ve paketin altrlaca tercihlerinizi onaylayp Next dmesini tklaynz.

Resim 1.35: Hemen altr seimi

Finish dmesini tklayarak sihirbaz tamamlaynz.

altrlma sonucunda yaplan ilemlerin baarl bir ekilde gerekleip gereklemediini kontrol ediniz ve Close dmesini tklaynz.

Resim 1.36: lemlerin doruluunun kontrol

23

Veritabannzdaki tablolara baknz ve eklediiniz tablo grnmyorsa Refresh ediniz.

Resim 1.37: Tablolarn Refresh edilmesi

Microsoft Accesstan Import ettiiniz tablonun Tables dizini altnda olup olmadn kontrol ediniz.
Resim 1.38: Accessten Import edilen tablo

Import edilen tabloyu Open Table ile aarak ieriine baknz.


Resim 1.39: Tablo ierii

Farkl bir veritabannz SQL Serverdan Microsoft Accessa aktarnz.

SQL Server Import and Export Wizard

24

UYGULAMA FAALYET 2
lem Basamaklar Balat/altr tklaynz. neriler

Cmd komutunu yazp Entera basnz.

Resim 1.40: Komut isteminin altrlmas

Bir nceki uygulama faaliyetiyle veritabannza aktardnz tablo ieriini bcp komutuyla bir text dosyaya aktarnz.

Bcp Okul_Kayit.dbo.Tablo1 out Kimlik.txt c T

Dosyann konumunu bularak not defteri ile anz.


Resim 1.41: Bcp komutuyla oluturulan text dosya ierii

Oluturduunuz text dosyay var olan baka bir veritabannza aktarnz. Dardan veri aldnz tablonuzu aarak bilgilerinizi kontrol ediniz.

Management Studiodaki veritabannzda veri alacanz tablonun var olmas gerektiini unutmaynz. Bcp Personel.dbo.Tablo1 in Kimlik.txt c T Open Table

25

LME VE DEERLENDRME LME VE DEERLENDRME


Aadaki sorular dikkatlice okuyarak doru/yanl seenekli sorularda uygun harfleri yuvarlak iine alnz. Seenekli sorularda ise uygun kk iaretleyiniz. Boluk doldurmal sorularda boluklara uygun cevaplar yaznz. 1. 2. Dardan veri alma ilemine , dar veri yollama ilemine .. denir. Veri alp verme ilemleri aadaki programlar iin gereklemez? A) Microsoft Access B) Text File C) Microsoft Excel D) Microsoft Reader Management Studioda veri alp verme ilemi iin SQL Server Wizard kullanlr. Excel alma sayfasndan alnan veri ieriini sihirbaz kullanrken grmek iin Preview dmesine tklanr (D/Y). Alnan verileri paket olarak saklamak iin IIS kullanlr (D/Y). Veri kaynana ., veri hedefine . denir. Komut istemiyle veri almak ve veri yollamak iin . komutu kullanlr. Bcp ile veri almak iin out, veri yollamak iin in parametresi kullanlr (D/Y). Bir Query ile veri aktarmak iin . komutu kullanlr. SQL Server 2000de var olan verileri SQL Server 2005e aktarmak iin .. servisi kullanlr (D/Y).

3.

4.

5. 6. 7. 8. 9. 10.

DEERLENDRME Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konulara geri dnerek tekrar inceleyiniz. Tm sorulara doru cevap verdiyseniz dier modle geiniz.

26

RENME FAALYET-2 RENME FAALYET-2


AMA
SQL Serverda ileri sorgu tekniklerini kullanmay reneceksiniz.

ARATIRMA
Daha nceden rendiiniz veritaban paket programnda tablolarn nasl birletirildiini aratrnz?

2. LER SORGU TEKNKLER


2.1. Inner Join ve Outer Join
2.1.1. Inner Join
Tablo birletirmek iin kullanlan yntemdir. Her iki tabloda da eleen ortak alanlarn olmas gerekir. Yazl .. FROM Tablo1 INNER JOIN Tablo2 ON Tablo1.Alan_ad1 karlatrma operatr Tablo2.Alan_ad2 Tablo1 ve Tablo2, kaytlarn birletirilecei tablo adlarn ifade eder. Alan1 ve Alan2, birletirilecek alan adlarn belirtir. Karlatrma operatr genelde = iaretidir. Ama dier karlatrma operatrleri de kullanlabilir.

Birletirme ilemi sadece iki tablo iin kstl deildir. En fazla 256 adet tabloyu JOIN ilemine tabi tutabilirsiniz. rnek SELECT PERSONEL_AD,YAKIN_AD FROM PERSONEL INNER JOIN PERSONELYAKIN ON PERSONEL.PERSONEL_ID=PERSONELYAKIN.PERSONEL_ID

27

Bu sorgu, PERSONEL ve PERSONELYAKIN tablolarndaki alanlardan PERSONEL_ID alan eit olmak artyla PERSONEL_AD ve YAKIN_Ad alanlarn gstermektedir. Eer, SELECT ifadesiyle * kullanlrsa tablolardaki tm alanlar gsterilir.

2.1.2. Outer Join


Inner Join, iki veya daha fazla tablodaki ilikili bulunan satrlar listelerken Outer Join, tabloda ilikili olmayan satrlar da gsterecektir. Bu demektir ki tablodaki tm satrlar gsterilecektir. Ancak, ilikisi olmayan satrlarda deer NULL olarak gsterilir. Yazl .. FROM Tablo1 Join-Tipi OUTER JOIN Tablo2 ON Tablo1.Alanad1 = Tablo2.Alanad2 Kullanlarna gre Join-Tipi farkllk gstermektedir. 3 tip Join-Tipi vardr. LEFT OUTER JOIN: Bu kelimenin solundaki tablo, belirleyici tablodur ve bu kullanm, bir ilikisi bulunsun veya bulunmasn birinci tablodaki btn satrlar listeleyecektir. kinci tabloda ise ilikili satrlar listelenecektir. Eer bir iliki bulunmuyorsa sadaki tablo verileri NULL olarak gsterilir.

SELECT PERSONEL.*, PERSONELYAKIN.* FROM PERSONEL LEFT OUTER JOIN PERSONELYAKIN ON PERSONEL.PERSONEL_ID = PERSONELYAKIN.PERSONEL_ID RIGHT OUTER JOIN: Bu kelimenin sandaki tablo belirleyici tablodur ve bu kullanm bir ilikiye ait olsun veya olmasn ikinci tablodaki btn satrlar gsterecektir. Birinci tabloda ise ilikili satrlar listelenecektir. Eer bir iliki bulunmuyorsa soldaki tablo verileri NULL olarak listelenir.

SELECT PERSONEL.PERSONEL_AD,PERSONELYAKIN.YAKIN_AD FROM PERSONELYAKIN RIGHT OUTER JOIN PERSONEL ON PERSONEL.PERSONEL_ID=PERSONELYAKIN.PERSONEL_ID FULL OUTER JOIN: Left ve Right Outer Joinde karlkl olarak eit satr olmayan satrlar da listelenir. FULL OUTER JOIN, LEFT ve RIGHT OUTER JOINin birleim kmesidir.

SELECT PERSONEL.PERSONEL_AD,PERSONELYAKIN.YAKIN_AD FROM PERSONEL FULL OUTER JOIN PERSONELYAKIN ON PERSONEL.PERSONEL_ID=PERSONELYAKIN.PERSONEL_ID

28

2.2. Alt Sorgular


SQL Server 2005te sorgu iinde sorgu da oluturulabilir. Sorgu iinde sorgu, iteki sorgunun dta olan sorguya deer retmesidir. Bu, bir deer veya birden fazla deer olabilir.

2.2.1. IN ve NOT IN
Tablodaki alan ieriklerine ulamak iin IN deyimi kullanlr. rnek Bir snftaki 16 ve 17 yandaki rencileri listelemek istediinizi dnn. IN deyimiyle sorgunun yazm u ekildedir: SELECT Ad,Soyad,Yas FROM Sinif WHERE Yas IN(16,17) Sorguyu altrp sonularn Results ekranndan grebilirsiniz.

Resim 2.1: IN deyimi kullanlarak yazlan sorgunun sonu ekran

rnek Snftaki rencilerden 16 yanda olmayan rencileri listelemek istediinizde, SELECT Ad,Soyad,Yas FROM Sinif WHERE Yas NOT IN(16) eklinde bir sorgu yazmalsnz.

2.2.2. e SELECT
Hazrladnz sorguyu karmaklktan kurtarabilmeniz veya sorgunun ilevselliini test edebilmeniz asndan paralara ayrmanz gerekebilir. Bunun iin i ie SELECT kullanmanz gerekir. ie yazlan her SELECT sorgusu parantez iinde yazlmaldr.

29

Yazdnz SELECT ifadesi geriye sadece bir deer dndryorsa buna tekil alt sorgu denir. T-SQLde kulanlan matematiksel fonksiyonlar (MIN, MAX, SUM vb.) veya WHERE ifadesiyle yazlan bir art ile geriye tek bir deer dndrebilirsiniz.

rnek Ya 18 olan renciyi bulmak istediinizde, SELECT Ad,Soyad,Yas FROM Sinif WHERE Yas= ( SELECT Yas FROM Sinif WHERE Yas=18 ) eklinde i ie SELECT yazabilirsiniz. Sorguyu altrp sonularn Results ekranndan grebilirsiniz.

Resim 2.2: ie SELECT kullanmnn sonu ekran

WHEREden sonra sorgular balamak iin kullanlan = operatr yerine dier karlatrma operatrleri de kullanlabilir. Eer, sorgunuzda geriye birden fazla deer dndrlyorsa SQL Server hata verir.

Hazrlanan alt sorgu asl SELECT ifadesinin iinde de kullanlabilir.

rnek rencilerin ad, soyad ve ortalama yalarn veren bir sorgu yazlacan varsaynz. Sorgunun nasl yazldna dikkat ederek Resim 2.3teki gibi sorgu Query Editore yaznz.

Resim 2.3: Sorgunun Query Editore yazl

30

Sorguyu altrp sonularn Results penceresinde grebilirsiniz.

Resim 2.4: Sonu penceresi

Yazdnz sorgu birden fazla deer dndryorsa sorgular IN deyimiyle birbirine balamanz gerekir.

rnek Ya 18den kk olan rencileri listeleyeceinizi varsaynz.

Resim 2.5: oklu deer sorgusu

Yine sonucu Results penceresinden grebilirsiniz.

Resim 2.6: oklu deer sorgusu sonu penceresi

2.2.3. Tretilmi Tablolar


Tretilmi tablo, alt sorgularla almann zel bir hlidir. ie sorgu yaparken elde edilen deerler hep bir stun hlinde gsterilmitir. ie sorgular, bir sorgu sonucunun tabloymu gibi tekrar sorgulanmasn da salar.

31

Tretilmi tablo, FROM ifadesinden sonraki SELECT ifadesinin parantez iine yazlp bir takma isim verilmesiyle oluturulur. Yazl SELECT ifade FROM (SELECT ifade) AS takmaad rnek Ya 16dan byk olan rencilerin cinsiyetleriyle beraber listeleneceini varsaynz. Sorguyu Resim 2.7deki gibi yaznz.

Resim 2.7: Tretilmi tablo rnek sorgusu

Sorguda, Sayi iin tretilmi tablo denir. Results penceresindeki stun adlarnn balklar da Sayi (Yasi,Cinsi) satryla verilmi olur. Sorguyu altrdnzda Results penceresinin grnm Resim 2.8deki gibi olur.

Resim 2.8. Results penceresi

rnek Yalar ayn olan rencilerin saylarn listeleyeceinizi varsaynz. nce tablodaki tm kaytlar listeleyip renci yalarn grnz.

32

Resim 2.9: Baka bir tretilmi tablo rnek sorgusu

Sorguyu altrdnzda Results penceresinin grnm Resim 2.10daki gibi olur.

Resim 2.10: Results penceresi

2.2.4. EXISTS ve NOT EXISTS


EXISTS kullanldnda, ierideki sorguda, bir veya daha fazla kayt dnerse dardaki sorgu altrlr. Kendisinden sonra gelen sorgu cmlesi ile eleen en az bir kayt mevcut ise "True" mantksal deerinin retilmesini salar. Kendisiyle birlikte AND, OR ve NOT mantksal operatrleri kullanlabilir. Hi kayt dnmezse, dardaki sorgu altrlmaz. False mantksal deeri retilir. NOT EXISTS ise ierideki sorgunun sonucunda sfr kayt dnyorsa dardaki sorgunun altrlmas iin kullanlr. rnek PERSONEL ve PERSONELYAKIN tablosu kullanlarak PERSONEL tablosundaki personellerden en az bir yakn olanlarn listesini bulacanz varsaynz.

33

Resim 2.11: EXISTS kullanm

rnek Hi yakn olmayan personeli listeleyeceinizi varsaynz.

Resim 2.12: NOT EXISTS kullanm

34

UYGULAMA FAALYET UYGULAMA FAALYET

lem Basamaklar

neriler

Kitap adnda yeni bir veritaban oluturunuz.

Resim 2.13: Yeni veritabannn oluturulmas

tablo_Kitap adnda yeni bir tabloyu Kitap veritabannda oluturunuz.

Resim 2.14: Yeni tablonun oluturulmas

tablo_Kitap tablosunun alan adlarn Kitap_Id, Kitap_Ad, Kitap_Yazar, Kitap_Sayfa olacak ekilde belirleyiniz ve verilerini giriniz.
Resim 2.15: Tablonun alan adlarnn oluturulmas ve verilerinin girilmesi

tablo_KitapBilgi adnda yeni bir tabloyu Kitap New Table komutu veritabannda oluturunuz.

35

tablo_KitapBilgi tablosunun alan adlarn Kitap_Id, Kitap_Yayinevi, Kitap_ISBNNo, Kitap_BasimYili olacak ekilde belirleyiniz ve verilerini giriniz.

Resim 2.16: Tablonun alan adlarnn oluturulmas ve verilerinin girilmesi

Kitap_Id alanlar eleecek ekilde Kitap_Ad ve Kitap_Yaynevi alanlar iin INNER JOIN yntemini uygulayacak sorguyu yaznz.

Resim 2.17: INNER JOIN yntemi

Sonucu Results penceresinde grnz.

Resim 2.18: Sonucun grntlenmesi

Birinci tablodaki kaytlara gre ikinci tablodaki ilikili kaytlar gsterecek OUTER JOIN yntemini uygulayacak sorguyu yaznz.

Resim 2.19: LEFT OUTER JOIN yntemi

Sonucu Results penceresinde grnz.

Resim 2.19: Sonucun grntlenmesi

36

tablo_Kitap tablosunda mevcut kitaplardan sayfa says 450 ve 550 olan kitaplar listeleyen sorguyu yaznz.

Resim 2.20: IN deyimi kullanm

tablo_Kitap tablosunda mevcut kitaplardan sayfa says 310 ve 330 olmayan kitaplar listeleyen sorguyu yaznz.

Resim 2.21: NOT IN deyimi kullanm

Her iki sorgu sonucunu Results penceresinde grnz.

Resim 2.22: IN ve NOT IN deyimlerinin sorgu sonucu

tablo_Kitap tablosundan Kitap_Id,Kitap_Ad, "Kitap_Yazar alanlarn seerek sayfa says 450den byk olan kitaplar gsteren i ie sorguyu yaznz.
Resim 2.23: ie sorgu

Sorgunun sonucunu Results penceresinde grnz.

Resim 2.24: ie sorgu sonucu

37

tablo_Kitap tablosunda Kitap Idsi 130dan byk olan kitaplar listeleyen tretilmi tablo sorgusunu yaznz.
Resim 2.25: Tretilmi tablo sorgusu

Sorgunun sonucunu Results penceresinde grnz.


Resim 2.26: Sorgu sonucu

Kitap bilgisi olmayan kitaplar listeleyen sorguyu yaznz.


Resim 2.27: NOT EXISTS kullanm

Sorgunun sonucunu Results penceresinde grnz.


Resim 2.28. Sorgu sonucu

38

LME VE DEERLENDRME LME VE DEERLENDRME


Aadaki sorular dikkatlice okuyarak doru/yanl seenekli sorularda uygun harfleri yuvarlak iine alnz. Seenekli sorularda ise uygun kk iaretleyiniz. Boluk doldurmal sorularda boluklara uygun cevaplar yaznz. 1. Inner Join ile tablolar birletirirken eleen ortak alan olup olmadna baklmaz (D/Y). Tablo birletirme ileminde en fazla adet tablo birletirilebilir. Bir tabloda ilikili olmayan satrlar .. ile listelenebilir. Ancak, deerler .. olarak gsterilir. FULL OUTER JOIN, .in ve .. in birleim kmesidir. Aadakilerden hangisi yazlan SELECT ile geriye bir tane deer dndren sorgudur? A) oul alt sorgu B) Tekli alt sorgu C) Tekil alt sorgu D) Tekil sorgu Aadaki deyimlerden hangisi SELECT ile geriye dnen deer birden fazla ise sorgular birbirine balar? A) SELECT B) EXISTS C) IN D) NOT IN Sorgu iinde sorgu, iteki sorgunun dtaki sorgu iin deer retmesidir (D/Y). Tretilmi tablonun bir takma ismi olur (D/Y). erideki sorguda, bir veya daha fazla kayt dnerse dardaki sorgu altrlmaz (D/Y). EXISTS deyimi mantksal deerler olan TRUE veya FALSE deerlerinden birini retir (D/Y).

2. 3.

4.

5.

6.

7. 8. 9.

10.

DEERLENDRME Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konulara geri dnerek tekrar inceleyiniz. Tm sorulara doru cevap verdiyseniz dier renme faaliyetine geiniz.

39

RENME FAALYET-3 RENME FAALYET-3


AMA
SQL Serverda imle kullanmay reneceksiniz.

ARATIRMA
Kelime ilemci programnda imlecin nasl davrandn inceleyeniz.

3. MLE
SQL Serverdaki imle (cursor), bir metin editrndeki imlelerle ayn grevi yapar. Metin editrnde alma annda, imle nerede bulunuyorsa oradaki verileri temel alan ilemler yaplabilir. SQL Serverdaysa imlecin bulunduu yerdeki verilere satr satr eriilebilir. Veritaban ortamnda bir seme sorgusu sonucu eriilen kaytlara bir dng erevesinde tek tek eriim salayabilmek iin imle programlamak gerekir. mleler, veritabanlarnda saklanmaz. mleler performans asndan ok tercih edilmemektedir. Bu yzden gerekmedike imle kullanlmamaldr. CASE yaps ya da geici tablolar kullanarak imle kullanmadan ayn sonular elde edilebilmektedir. mleler, satr satr hareket etmenize olanak salayarak kimi zaman iinizi ok kolaylatrsalar da ou zaman performans kaybna sebep olurlar. Bu yzden, gereksiz yere imle kullanmaya almaynz.

3.1. Kullanm Amalar


mleler; Bir sonu setinde o anda bulunulan pozisyondaki satr veya takip eden satrlardaki verilere ulamak, Yaplan bir sorgu sonucu geri dnen deerlerden her satr ayr ayr deerlendirip duruma gre verileri deitirmek, Tetikleyici (trigger) veya Stored Procedurelerin bir sonu setine satr satr ulamasn salamak, Dier kullanclar tarafndan yaplan deiikliklerin grnebilirlik seviyesini ortak zamanl almada ayarlamak iin kullanlrlar.

3.2. T-SQL mleler


T-SQL imleler sunucu tarafndan alr ve sadece bir sonu seti (resultset) zerinde tanmlanrlar. Bu ekilde tanmlanan bir imlete, kayt semek iin yazlan SELECT sorgusunda COMPUTE, COMPUTE BY, INTO deyimleri bulunmaz.

40

3.2.1. T-SQL mle Kullanm


Be admdan oluur: mle deiken tanmlama: Bir SELECT ifadesinde, bir deiken tanmlanarak seme ilemi sonucunda elde edilecek deeri tutacak imle tanmlanm olur. mleci ama: SELECT ileminden sonra imle ilk satr iaret edecek ekilde ayarlanr. Eriim ile ilgili ilemler: FETCH deyimi kullanlarak, bir dngyle satrlara eriilir. Deiiklik ve okuma yaplabilir. mleci kapatma: CLOSE deyimiyle imle kapatlr. Tekrar alabilir. mleci bellekten silme: DEALLOCATE deyimi imleci bellekten siler.

3.2.2. @@FETCH_STATUS ve @@ROWCOUNT


Yaplan ilemler sonucunda imlecin son satra gelip gelmediini anlamak iin @@FETCH_STATUS ve @@ROWCOUNT fonksiyonlar kullanlr. FETCH_STATUS fonksiyonu, en son altrlan FETCH komutunun sonucu hakknda bilgi verir. FETCH_STATUS fonksiyonu farkl deer alabilir. Deer 0 -1 2 Aklama Bir nceki FETCH komutu baaryla gerekletirildi. Bir nceki FETCH komutunda hata ile karlald. Son kayta ulald. (end of resultset)
Tablo 3.1: @@FETCH_STATUS fonksiyonu deer tablosu

@@ROWCOUNT fonksiyonu, bir nceki FETCH komutu baaryla gerekletirildikten sonra sonu setinde toplam ka kaydn bulunduunu tutan fonksiyondur. FETCH komutu hi kullanlmamsa, imlecin iaretledii sonu setinde toplam ka kaydn yer aldn gsterir. rnek Kitaplar tablosunun istenilen ieriini yazdracak bir imle tanmlayp kullanacanz varsaynz.

41

Resim 3.1: Kitaplar tablosu

lk admda imle tanmlanr.

Resim 3.2: mlecin tanmlanmas ve SELECT sorgusu

kinci admda imle alr.

Resim 3.3: mlecin almas

nc admda imle zerinde dolamak iin FETCH komutundan faydalanlr. Bu sorgu tarafndan dndrlen iki satra karlk deikenler tanmlanr. FETCH ile ilk satrn stne gelinir ve ilk kaytta yer alan iki deer yazdrlr.

Resim 3.4: FETCH komutunun kullanlmas

mle kapatlr.

Resim 3.5: mlecin kapatlmas

Gerekirse hafzadan silinir.

Resim 3.6: mlecin hafzadan silinmesi

42

Eer, birden fazla kayt yazdrlacaksa dng kullanlmaldr.

Resim 3.7: Birden fazla kayt iin dng kullanlmas

Resim 3.8: mle oluturma ve kapatma ileminin tamam

CAST fonksiyonuyla int tipindeki @KitapKod deikeni VARCHAR tipine dntrlmektedir. Sorguyu altrdktan sonra elde edilen sonular Messages penceresinden grebilirsiniz.

Resim 3.9: mlecin sonucu

43

3.2.3. mle Seeneklerini Ayarlamak


Bir imlecin tipi ve davran ayarlanabilir. CursorType: Forward-Only, static, keyset-driven, dynamic deerlerinden birini alabilir. Genel olarak istemci tipi imleler, forward-onlydir. ODBC, OLE DB veya DB-Library gibi APIler tarafndan bu deer otomatik olarak ayarlanabilir. Kullancnn istedii ekle de getirilebilir. CursorBehaviors: SCROLL ve INTENSIVE tiplerinden birini alabilir. ODBC ve DB-Libraray bu zellik iin deer atamas yapmaz.

3.3. mlelerle Satrlar Arasnda Dolamak


Bir imle satrlar zerinde drt temel ilevi yerine getirir: lk kayta, son kayta, nceki veya sonraki kayta gidebilir ve SCROLL CURSOR olarak adlandrlrlar. fade FETCH FIRST FETCH LAST FETCH NEXT FETCH PRIOR FETCH RELATIVE n FETCH ABSOLUTE levi lk satra konumlanr. Son satra konumlanr. Bir sonraki satra konumlanr. Bir nceki satra konumlanr. Bulunulan satrdan n kayt ileriye konumlanr. Batan n. kayta konumlanr.
Tablo 3.2: Hareket ifadeleri

rnek Kitaplar tablosu zerinde imleci eitli ekillerde hareket ettireceinizi varsaynz.

Resim 3.10: FETCH komutu ile satrlar arasnda dolam rnei

44

Bu Queryi altrdnzda elde edilen sonular Results penceresinden grebilirsiniz.

Resim 3.11: Sonu penceresi

3.4. mlele Kaytlar Dzenlemek


Bir imlele, zerinde bulunulan satr silebilir veya dzenlemeler yapabilirsiniz. Bu ilemler aslnda UPDATE ve DELETE komutlaryla da yaplabilir ancak bir UPDATE veya DELETE ifadesiyle ifade edemeyeceiniz bir ilem karnza gelirse bu tr bir yntemi tercih edebilirsiniz. UPDATE ve DELETE ifadelerinin WHERE ksm iin WHERE CURRENT OF ifadesini kullanabilirsiniz.

Resim 3.12: WHERE CURRENT OF ifadesi

45

3.5. Ortak Zamanl alma


mlelerle bir veriye eriirken ayn anda baka baka kullanclarn da bu veriye eriimlerini dzenlemek iin kilitleme mekanizmas devreye konulabilir. Bir imlecin verilere ortak eriiminin dzenlenmesi iin iki yntemden biri kullanlabilir. Oturum seviyesinde kilitleme seeneini tayin ederek imle veriye eritii anda dier eriim isteklerinin hangi haklara sahip olaca otomatik olarak tayin edilebilir. mleci tanmlayan FROM cmlesinden sonra kilitleme seenei belirtilerek sadece imlecin ii bitinceye kadar olan sre zarfnda, ayn kaynaklara erimek isteyenler iin bir kilitleme seenei belirtilebilir. FROMdan sonra Tablo 3.3teki ifadelerden biri gelebilir. fade READ_ONLY OPTIMISTIC WITH VALUES OPTIMISTIC WITH ROW VERSIONING SCROLL LOCKS levi Pozisyona bal gncellemelere izin verilmez ve imle aldnda herhangi bir kilit konmaz. Hibir satr kilitlemez. Satr baznda deiiklikleri SQL Server takip eder. Timestamp tr stunu olan bir tablo zerindeki imleler iin tanmlanabilir. Bu tr bir imle, sadece timestamp stun deerine bakarak kendisinden sonra deiip deimediini anlamasn salad iin server asndan daha az yk bindiricidir. SELECT cmlesinde verilen kilitleme ipucuna gre kilitleme yapar.
Tablo 3.3: Ortak zamanllk seenekleri

46

UYGULAMA FAALYET UYGULAMA FAALYET

Kitaplar tablosunu kullanarak fiyat 20 lirann altnda olan kitaplara %10, stnde olan kitaplara %5lik bir fiyat art uygulayacak bir imle programlayacanz varsaynz.
Resim 3.13: Kitaplar tablosu

@fiyat adnda bir deiken tanmlaynz. @fiyatlar adnda bir imle tanmlayarak Kitaplar tablosundaki Kitap_Fiyat alann seiniz. mleci anz. lk kayta konumlanarak Kitap_Fiyat alanndaki deeri imle yardmyla @fiyat deikenine aktarnz. Tablodaki asl kitap fiyat verilerini grmek iin bir SELECT sorgusu yaznz. mlecin tabloda son kayta gelip gelmediini kontrol edecek ve dier kaytlardaki verileri okuyacak bir dng hazrlaynz. Kitap fiyatnn 20 liradan az olmas durumunda %10luk bir art ve imlecin bulunduu kaytla almasn salayacak (WHERE CURRENT OF) kodu dng ierisine yaznz. Kitap fiyat 20 lirann zerinde ise %5lik art ve imlecin bulunduu kaytla almasn salayacak kodu yaznz.

DECLARE @fiyat int DECLARE @fiyatlar CURSOR SET @fiyatlar = CURSOR FOR SELECT Kitap_Fiyat FROM Kitaplar OPEN @fiyatlar FETCH NEXT FROM @fiyatlar INTO @fiyat

SELECT Kitap_Fiyat FROM Kitaplar WHILE ( @@FETCH_STATUS = 0) BEGIN

FETCH NEXT FROM @fiyatlar INTO @fiyat END IF @fiyat < 20 UPDATE Kitaplar SET Kitap_Fiyat = (@fiyat + (@fiyat * .1)) WHERE CURRENT OF @fiyatlar ELSE UPDATE Kitaplar SET Kitap_Fiyat = (@fiyat + (@fiyat * .05)) WHERE CURRENT OF @fiyatlar

47

mlecin almasndan sonra tabloda bulunan kitap fiyatlarnn son hlini grmek iin yine bir SELECT seme sorgusu yaznz. mleci kapatnz. mleci hafzadan siliniz. Yazdnz imleci altrnz.

SELECT Kitap_Fiyat FROM Kitaplar CLOSE @fiyatlar DEALLOCATE @fiyatlar F5

Sonular Results penceresinden grnz.

Resim 3.14: Sonularn gsterimi

Resim 3.15: @fiyatlar imleci

48

LME VE DEERLENDRME LME VE DEERLENDRME


Aadaki sorular dikkatlice okuyarak doru/yanl seenekli sorularda uygun harfleri yuvarlak iine alnz. Seenekli sorularda ise uygun kk iaretleyiniz. Boluk doldurmal sorularda boluklara uygun cevaplar yaznz. 1. mle, bir metin editryle ayn ilemi yapar. Yani, bulunduu satrdaki verileri baz alr (D/Y). T-SQL imleler, istemci tarafndan altrlr (D/Y). mle, .. komutu ile alr, .. komutu ile kapatlr. FETCH komutunun durumu hakknda bilgi veren komut tr. Aadaki komutlardan hangisi imleci bellekten silmek iin kullanlr? A) DELETE B) DEL C) DROP D) DEALLOCATE Resultsette toplam ka kaydn bulunduunu gsteren komut aadakilerden hangisidir? A) RESULT B) ROWCOUNT C) @@ROWCOUNT D) COUNT CAST fonksiyonu bir tipteki deikeni baka bir tipe evirmek iin kullanlr (D/Y). mle ile nceki kayda gitmek iin .., son kayda gitmek iin .. kullanlr. mlecin bulunduu kayt ile almasn salamak iin WHERE CURRENT OF ifadesi kullanlr (D/Y). Pozisyona bal gncellemelere izin vermeyecek ve imle aldnda herhangi bir kilit koymayacak ifade .dir.

2. 3. 4. 5.

6.

7. 8.

9.

10.

DEERLENDRME Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konulara geri dnerek tekrar inceleyiniz. Tm sorulara doru cevap verdiyseniz dier renme faaliyetine geiniz.

49

RENME FAALYET-4 RENME FAALYET-4


AMA
SQL Serverda tetikleyici oluturmay ve kullanmay reneceksiniz.

ARATIRMA
Programlama dillerinde belirtilen art yerine getiren yaplar aratrnz.

4. TETKLEYC
Tetikleyici (trigger), SQL Server zerinde herhangi bir ilem gerekletiinde baka bir ilemin tetiklenmesi iin kullanlr. Tetiklenecek ilem tamamen bizim belirlediimiz erevede baka bir kayt eklemek, rapor almak veya genelde kontrol mekanizmalar oluturmak iin kullanlabilir. Tetikleyici, bir eit zel Stored Proceduredr. Bir kaydn eklenmesi (INSERT), silinmesi (DELETE) veya deitirilmesi (UPDATE) durumlarnda otomatik olarak devreye girecektir. Tetikleyiciler, Query ekrannda T-SQL kodu ile veya Management Studio ile oluturulup ynetilebilirler. Tetikleyiciler, grnmler (View) ve tablolar zerinde tanmlanabilir. SQL Server 2005, DDL (Data Defination Language) tetikleyicileri adnda yeni bir kavram destekler. DDL tetikleyiciler, olay gerekletikten sonra deil de CREATE, ALTER ve DROP gibi DDL ifadeleri iin tanmlanrlar.

4.1. Tetikleyici Ne Zaman Kullanlr?


eitli amalara uygun olarak tetikleyiciler kullanlabilir. Bu amalar; Deiiklikleri takip etmek, Birincil anahtar retmek, Karmak i kurallarn gerekletirmek, E-posta atmak gibi olaylar otomatik olarak yapmak, Standart hata mesajlarnn dnda bir hata mesaj elde etmek, Veritaban eriimlerini takip edebilmek, Nesnede meydana gelebilecek deiiklikleri takip ve engellemektir.

50

4.2. Tetikleyiciyi Ateleyen Olaylar


Bir ilemin gereklemesini veya gereklemeye balamasn tetikleyici ateleyebilir. Tetikleyiciyi ateleyen bir ilem ile karlaldnda tetikleyici ile ilem bir blokta ele alnr. Bu blok, RAMde bulunan geici hafza bloudur. Tetikleyiciyi aran ilemi onaylamak anlamnda hibir ilem yapmayabilir veya ilem baarl olmadnda ilemi geersiz klabilir. Tetikleyici alt zaman Inserted ve Deleted ad verilen sahte tablolar kullanr. Bu tablolar tetikleyicinin atelendii tabloyla edeer alanlara sahiptir. Bunlar da mantksal olarak RAMde bulunur. Asl tabloya bir kayt eklendiinde ve tetikleyici atelendiinde bu kayt Inserted tablosuna da eklenir. Tablodan bir kayt silindiinde silinen kayt Deleted sahte tablosuna da eklenir. Update ilemi ise nce silme (Delete) ve ardndan bir kayt ekleme (Insert) olarak ele alnr. Bir kayt gncellendiinde asl kayt Deleted sahte tablosuna, deien kayt da Inserted sahte tablosuna yazlr. Inserted ve Deleted sahte tablolar RAMdeki hafza blgesinde elde edilir. Bundan dolay, TRUNCATE TABLE gibi yazlmayan tablolara yansmayan deiiklikler tetikleyici tarafndan yakalanamaz. Tetikleyiciler dardan parametre almazlar. Ancak, sahte tablolar sayesinde son ilemden etkilenmekte olan kaytlar tespit edilebilir.

4.3. Tetikleyici Trleri


SQL Server'da iki farkl tr tetikleyici vardr. Bunlar After ve Instead Of tetikleyicileridir.

4.3.1. After Tetikleyicileri


After tetikleyicileri, kendiyle ilikili ilem gerekletikten hemen sonra atelenir. Veritabanndaki temel ilemler iin (ekleme, silme ve gncelleme) After tetikleyicileri tanmlanabilir. rnein, yeni bir personel kayd silindiinde farkl tablolarda o personele ait dier bilgilerin silinmesi After Delete tetikleyicisi ile salanabilir. Birden fazla tetikleyici, bir i iin tanmlanabildii gibi, bir tetikleyici de birden fazla i iin tanmlanabilir. After tetikleyicileri, sadece tablolar iin tanmlanabilir.

4.3.2. Instead Of Tetikleyicileri


Instead of tetikleyicileri, belirlenen ilem gerekleirken devreye girer ve kendi iinde tanmlanan komutlar icra etmeye balar. Yani, belirlenen ilemin yerine geer. Instead of tetikleyicileri ilemlerin arasna girebildiinden kontrol amal kullanlabilirler. rnein, ekleme ilemi iin tanmlanan bir tetikleyici, ekleme ileminden hemen nce araya girerek uygun koullarn salanp salanmadn kontrol edebilir. Tpk After tetikleyicileri gibi temel veritaban ilemleri iin Instead Of tetikleyicileri tanmlanabilir. Fakat, After

51

tetikleyicileri sadece tablolar iin tanmlanabilirken Instead Of tetikleyicileri hem tablolar iin hem de grnmler (views) iin tanmlanabilirler.

4.4. Tetikleyici Oluturmak


Tetikleyiciyi oluturmak iin CREATE TRIGGER ifadesi veya Managemet Studioda tablo altnda bulunan Triggers klasr zerinde sa tklayarak alan menden New Trigger komutu kullanlr.

Resim 4.1: New Trigger komutu

CREATE TRIGGERi kullanabilmek iin sysadmin, db_owner veya db_ddladmin rolne sahip olmak gerekir. Bir tetikleyici (trigger) baka bir tabloya eriecekse bu tablo iin de tetikleyici oluturan kullancnn eriim izni veya gncelleme izni olmas gerekir. Yazl CREATE TRIGGER tetikleyici_adi ON tablo_adi FOR veya AFTER veya INSTEAD OF (INSERT veya UPDATE veya DELETE) AS Sql ifadeleri

4.4.1. INSERT Tetikleyicisi


Bir tablo zerinde yeni kaytlar girildikten sonra devreye giren tetikleyicidir. Insert tetikleyici devreye girdikten sonra Inserted tablosunda yeni eklenen kaytlarn bir kopyas tutulur. Inserted tablosu, asl tablonun yapsal bir kopyas olup tetikleyici sonlanana kadar saklanr. Eer, bir tabloya birden fazla kayt girildiyse tetikleyici her kayt iin ayr ayr devreye girmez. Tek seferde ilemi gerekletirir. nk SQL Server, satr baznda tetikleyici destei salamamaktadr.

52

rnek tablo_KitapBilgi tablosunda kitaplarn basm yln otomatik olarak yazacak bir tetikleyici yazacan varsaynz.

Resim 4.2: tablo_KitapBilgi tablosu

Bunun iin, bir tetikleyici oluturmanz gerekmektedir.

Resim 4.3: Tetikleyicinin oluturulmas

tablo_KitapBilgi tablosuna yeni bir kayt girildiinde ve kitap basm yl bo geildiinde kitap basm yl olarak 2007 deeri otomatik olarak yazlacaktr. Tetikleyiciyi yazdktan sonra Execute ediniz. Artk tetikleyici, Tables klasr altnda oluturulacak ve tetiklenmeye hazr hle gelecektir.

Resim 4.4: Oluturulan tetikleyicinin konumu

tablo_KitapBilgi tablosunu aarak yeni bir kayt giriniz ve basm yl alanna deer girmeden Enter tuuna basnz.

53

Resim 4.5: Yeni kaydn girilmesi

Basm yl alann bo geip Enter tuuna bastnzda tetikleyici devreye girecektir. Eklenen kaydn son durumunu grmek iin tabloyu Refresh etmeniz gerekir. Bunun iin, Execute SQL simgesini tklayarak ya da kapatp aarak tabloyu yenileyiniz. Basm yl alanna otomatik olarak 2007 deerinin yazldn greceksiniz.

Resim 4.6: Tablonun yenilendikten sonraki grnm

4.4.2. DELETE Tetikleyicisi


Tablodan bir kayt silindiinde otomatik olarak yaplmas istenen ilemler iin DELETE tetikleyicisi kullanlr. DELETE tetikleyicisi altktan sonra silinen kayt Deleted sahte tablosuna kaydedilir. Deleted tablosunun Inserted tablosundan fark, asl tablodan silinen kayt artk Deleted tablosunda yer almaktadr. rnek tablo_Kitap tablosunda Kitap_Idsi 150den byk olan kitaplarn silinmesini engelleyecek bir DELETE tetikleyicisi yazdnz varsaynz.

54

Resim 4.7: tablo_Kitap tablosu

tablo_Kitap tablosu zerinde bir tetikleyici oluturulmaktadr. Tablodaki toplam kayt saysnn 0dan byk olmas durumu gz nne alnmaktadr. Bu halde, Kitap_Idsi 150ye eit ve byk id numaralarnn silinmesi engellenecektir.

Resim 4.7: DELETE tetikleyicisinin kullanm

Tetikleyiciyi Execute ettiinizde tablo_Kitap altnda Sil adnda bir tetikleyici oluturulacaktr. Yeni bir sorgu sayfas ap tablodan kitap idsi 150den byk olanlar silmek istediinizde uyar mesaj ekrana gelecektir.

Resim 4.8: Silme sorgusu ve sonu ekran

55

4.4.3. UPDATE Tetikleyicisi


Tablo zerindeki kayt ya da kaytlarda gncelleme olduunda devreye girecek olan tetikleyicidir. INSERT ve DELETE tetikleyicilerden biraz farkldr. Fark ise UPDATE tetikleyici devreye girdiinde Inserted sahte tablosu asl tablodaki kaytlardan, dzenlenmi kaytlarn kopyasn, Deleted sahte tablosu ise kaytlarn dzenleme ileminden nceki hllerini tutar. rnek tablo_Kitap tablosunda bulunan kitap fiyatlarndan kann fiyatnn deitiini bulacak bir UPDATE tetikleyici yazdnz varsaynz. Bunun iin tablo_Kitap tablosuna kitap fiyatlarnn tutulaca Kitap_Fiyat adnda ve int tipinde bir stun oluturarak stun ierisine kitap fiyat bilgilerini giriniz.

Resim 4.9: Kitap fiyatlarnn tabloya eklenmesi

Buna gre UPDATE tetikleyicisini Resim 4.10a gre oluturunuz.

Resim 4.10: UPDATE tetikleyicisi rnei

Bu tetikleyicide kullanlan RAISERROR fonksiyonu, SQL Serverda hata meydana geldiinde hata mesaj vermek iin kullanlr. Burada ise sadece mesaj verme ilemi iin kullanlmtr. @@rowcount ise SQL Serverde en son yaplan ilemden ka kaydn etkilendiini verir. Bu tetikleyicinin otomatik olarak devreye girebilmesi iin bu tetikleyiciyi ateleyen bir SQL kodunun olmas gerekir. rnek olmas asndan tablo_Kitap tablosunda Kitap_Id

56

numaras 250den byk kaytlarn fiyatlarnda 5 YTLlik bir indirim yaplmas istensin. Tetikleyiciyi ateleyecek SQL kodlarn Resim 4.11de gsterildii gibi yaznz ve Execute ediniz.

Resim 4.11: Tetikleyiciyi ateleyecek SQL kodlar Execute ileminden sonra Messages penceresinde sorgu sonucu ka kaydn bu ilemden etkilendii grntlenecektir.

Resim 4.12: lemin sonucu

Tabloyu Open Table komutuyla atnzda etkilenen satrn son satr olduunu greceksiniz.

Resim 4.13: Tablonun son hli

4.4.4. INSTEAD OF Tetikleyicisi


INSTEAD OF tetikleyicisi, belirlenen ilem gerekleirken devreye girer ve kendi iinde tanmlanan komutlar icra etmeye balar. Yani, belirlenen ilemin yerine geer. Bu tetikleyiciden nceki tetikleyiciler, veriler uygun deilse ROLLBACK ile ilemleri geri alrlar. INSTEAD OF, ilem gerekleirken verilerin uygunluunu denetleyecektir.

57

rnek Uygulamas yaplacak olan bu tabloda, kaytl olan mteri silinmeye alld anda silme ileminin gerekletii tarih ve saat otomatik olarak SilmeGirisimi adl alana yazlacaktr. Musteriler adnda bir tablo oluturarak tabloda kullanlacak alanlar T-SQL kodu ile tanmlaynz.

Resim 4.14: Musteriler tablosu

EXECUTE ederek tablonun oluumunu tamamlaynz. Oluturulan bu tabloda mteri numaralar 1den balayarak otomatik olarak artacaktr. Oluturulan tabloya kayt giriini de yine T-SQL kodlar ile gerekletiriniz. Sorguyu altrarak kaytlarn tabloya eklenmesini salaynz.

Resim 4.15: Musteriler tablosuna kayt eklenmesi

Musteri_Silme adnda bir tetikleyici oluturarak bu tetikleyicinin tablodan kayt silinmesinin balamas durumunda sistem tarih ve saatini SilmeGirisimi stununa yazmasn ve sorguyu EXECUTE ederek tetikleyicinin olumasn salaynz.

Resim 4.16: INSTEAD OF tetikleyicisinin oluturulmas

58

Musteriler tablosunda nc ve beinci kaytlar silecek yeni bir sorgu oluturunuz ve altrnz.

Resim 4.17: Kayt silme sorgusu

3 ve 5 numaral kayt silinmek istendiinde tetikleyici devreye girecek ve SilmeGirisimi stununa sistem tarih ve saatini yazacaktr. Uygulamann sonu penceresine bakarak yaplan ilemleri grebilirsiniz.

Resim 4.18: Sorguyla atelenen tetikleyicinin rettii sonu

4.5. Tetikleyici Ynetimi


4.5.1. Tetikleyiciyi Dzenlemek (ALTER)
CREATE ile oluturulmu bir tetikleyiciyi daha sonra zerinde deiiklikler yapmak zere tekrar amak isteyebilirsiniz. Bunun iin, tablonuzda oluturulmu bir tetikleyici zerindeyken sa tklayarak alan menden Modify komutunu vermeniz gerekir.

59

Resim 4.19: Modify komutu

Modify komutunu verdiinizde daha nceden oluturduunuz tetikleyici alacaktr.

Resim 4.20: Tetikleyicinin dzenleme iin alm durumu

Burada dikkat edilmesi gereken nokta, tetikleyici oluturulurken CREATE komutu ile oluturulmutu. Modify (dzenle) komutunu verdiinizde ise tetikleyici, ALTER komutu ile alacaktr. Daha nceden de bildiiniz gibi ALTER, var olan tablo, tetikleyici gibi nesneler zerinde deiiklik yapmak iin kullanlan komuttu. Daha nceden oluturulmu tetikleyiciyi dzenlerken yeni bir sorgu sayfas ap Modify komutunu kullanmadan da ALTER komutu ile tetikleyiciyi yeniden yazarak dzenleyebilirsiniz. Ancak bu nerilmez.

4.5.2. Tetikleyiciyi Silmek (DROP)


Oluturulan bir tetikleyiciyi DROP komutuyla ya da tetikleyici zerinde sa tklayarak alan menden Delete komutunu vererek silebilirsiniz.

60

Resim 4.21: Tetikleyici silmek iin Delete komutu

T-SQL kodu olarak, DROP TRIGGER Musteri_Silme eklinde yazabilirsiniz.

4.5.3. Tetikleyiciyi Aktif ya da Pasif Yapma


Oluturulan bir tetikleyici, her zaman aktif durumdadr. Tetikleyiciyle ilgili bir durum olutuunda otomatik olarak devreye girer. stenildiinde oluturulan bu tetikleyiciler pasif hle getirilebilir. Tetikleyici zerinde sa tklayarak alan mende Disable komutunu verdiinizde tetikleyici pasif hle gelir.

Resim 4.22: Disable komutu

Tetikleyiciyi pasif hle getirmenin bir dier yolu da kod yazmaktr. ALTER TABLE tablo_adi DISABLE TRIGGER Musteri_Silme Tetikleyiciyi tekrar aktif hle getirebilmek iin menden Enable komutunu veya ENABLE TRIGGER komutunu kullanmanz gerekir.

61

UYGULAMA FAALYET UYGULAMA FAALYET


lem Basamaklar Musteri_Bilgi adnda bir veritaban oluturunuz. Yeni bir tablo oluturarak adn Kisiler olarak belirleyiniz. Tablo stun adlarn Ad_Soyad, Sehir, Ulke, Y_Dil, ve Uyrugu olarak belirleyiniz. neriler New Database New Table Ad_Soyad VARCHAR(30), Sehir VARCHAR(15), UlkeVARCHAR(15), Y_Dil VARCHAR(15), Uyrugu VARCHAR(10), Onay Open Table komutu

Tabloya be kayt giriniz.

Resim 4.23: Kaytlarn tabloya girilmesi

Uyrugu stununa hibir ey yazlmazsa kiinin uyruunu Trk. olarak belirleyen bir tetikleyici yaznz.
Resim 4.24: Tetikleyicinin oluturulmas

Tetikleyiciyi oluturduktan sonra tabloya yeni bir kayt girerek tabloyu EXCEUTE ediniz.

Uyruu Fransz olan mteriyi silmeyi engelleyecek tetikleyiciyi ve rnek sorgusunu yaznz.

Resim 4.25: DELETE tetikleyicisi

62

Resim 4.26: Silme sorgusu

Hibir uyruk deiimine izin vermeyen tetikleyiciyi ve rnek sorgusunu yaznz.


Resim 4.27: UPDATE tetikleyicisi

Resim 4.28: Gncelleme sorgusu

63

LME VE DEERLENDRME LME VE DEERLENDRME


Aadaki sorular dikkatlice okuyarak doru/yanl seenekli sorularda uygun harfleri yuvarlak iine alnz. Seenekli sorularda ise uygun kk iaretleyiniz. Boluk doldurmal sorularda boluklara uygun cevaplar yaznz. 1. Aadaki durumlardan hangisinde tetikleyici otomatik olarak devreye girmez? A) CREATE B) INSERT C) UPDATE D) DELETE 2. Tabloya bir kayt eklendiinde ve trigger tetiklendiinde bu kayt . sahte tablosuna da eklenir. 3. SQL Serverda ka tetikleyici tr vardr? A) 1 B) 2 C) 3 D) 4 4. Bir tetikleyiciyi oluturabilmek iin aadaki rollerden hangilerine sahip olmak gerekir? A) public B) db_securityadmin C) db_accessadmin D) sysadmin 5. Tabloya birden fazla kayt girildiyse tetikleyici her kayt iin ayr ayr devreye girer (D/Y). 6. Asl tablodan silinen kayt, Deleted tablosunda yer alr (D/Y). 7. UPDATE tetikleyicisi atelendiinde, Inserted tablosunda yeni kaytlarn kopyas, Deleted tablosunda eski kaytlarn kopyas kalr (D/Y). 8. SQL Serverda en son yaplan ilemden ka kaydn etkilendiini . verir. 9. After tetikleyicileri veriler uygun deilse . ile ilemleri geri alr. 10. Tetikleyiciyi dzenlemek iin , silmek iin .. komutu kullanlr. DEERLENDRME Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konulara geri dnerek tekrar inceleyiniz. Tm sorulara doru cevap verdiyseniz dier renme faaliyetine geiniz.

64

RENME FAALYET-5 RENME FAALYET-5


AMA
SQL Serverda grnm oluturmay reneceksiniz.

ARATIRMA
Verilere erimek iin kullanlan en gvenli metotlar genel olarak aratrnz.

5. GRNM
Grnm (view), sorgular basitletirmek, eriim izinlerini dzenlemek, farkl sunuculardaki benzer verileri karlatrmak ve bazen sorgu sresini ksaltmak iin kullanlan, aslnda var olmayan, SELECT ifadesi ile tanmlanm sanal tablolardr. Tablolar, olduundan farkl gstermek iin filtreler kullanlr. Bu gibi ilemler iin view kullanlr. Viewler kaydedilmi sorgulardan oluur. Bir viewin verileri ald asl tabloya temel tablo denir. View, temel tabloda bulunan stun ya da stunlar veya satrlar kapsayabilecei gibi birden fazla temel tablo zerinde tanmlanm olabilir.

5.1. Hangi Amalar in Kullanlr?


Viewler; Kullanclarn, nemli bir tabloda istenilen stun veya satrlar grmek, Kullanclarn, uygun birim dnmleri yaplm deerlerini (mil, km gibi) grmek, Tablolarda bulunan verileri baka bir tablo formatnda sunmak, Karmak sorgular basitletirmek amacyla kullanlr.

5.2. View Oluturmak


Tablolarla ayn zelliklere sahiptir. En fazla 1024 stun oluturulabilir. View, CREATE VIEW ifadesi kullanlarak oluturulur.

65

Genel Kullanm CREATE VIEW view_ad AS SELECT stun_adlar FROM temel_tablo View, iki trl oluturulabilir: T-SQL kod yazarak Object Explorerda aktif veritaban grnmnden New View komutunu vererek

rnek Personel veritabanndaki Person_Bilgi tablosunda, cinsiyeti Kadn olan personeli ad, soyad ve blmyle gsterecek bir view hazrlayacanz varsaynz.

Resim 5.1: Person_Bilgi tablosu

Yeni bir Query aarak, viewi oluturmak iin Resim 5.2deki kodlar yaznz.

Resim 5.2: Viewin oluturulmas

CREATE View ile grnme bir isim verilir.

66

SELECT ile tablodan kullanlacak alanlar belirlenir. WHERE ile istenirse bir art konulabilir. Yeni bir Query daha aarak oluturulan viewin altrlmas gerekir.

Resim 5.3: Oluturulan viewin altrlmas

V_Cinsiyet viewini altrdnzda verilen arta gre sonular Results penceresinde grebilirsiniz.

Resim 5.4: View ileminin sonucu

Ayn ilemi Management Studioyu kullanarak da yapabilirsiniz. Veritaban iindeki Views klasr zerinde fareyle sa tuu tklaynz.

Resim 5.5: New View komutu

Alan Add Table penceresinde kullanacanz Person_Bilgi tablosunu seerek Add komut dmesini tklaynz. Close dmesiyle de pencereyi kapatnz.

67

Resim 5.6: Add Table iletiim penceresi

Eklenen tablo iersinde kullanlacak alanlar iaretleyiniz.

Resim 5.7: Alanlarn seimi

Alanlar setiinizde SELECT ifadesi otomatik olarak yazlacaktr. Cinsiyeti kadn olan personel view ile gsterileceinden Cinsiyet alannda bir filtreleme yaplmas gerekmektedir.

68

Resim 5.8: Cinsiyet alan iin filtrelemenin yaplmas

Oluturulan viewi vereceiniz bir isimle (V_CinsiyetKadin) kaydediniz. Son olarak viewi altrmak kald. Open View komutuyla oluturulan viewi altrnz.

Resim 5.9: Oluturulan viewin altrlmas

View altktan sonra verilen ltlere gre sonucu grebilirsiniz.

Resim 5.10: View ileminin sonucu

Viewlerde stun adlar belirtilmedii srece temel tabloda bulunan stun adlaryla ayn olur. Viewle stun adlarn ihtiyaca gre de deitirebilirsiniz. Viewde stunlar iin veri tipi belirtilmez nk view, temel tablodan baz alnd iin stun veri tipleri temel tablodaki veri tipleriyle ayn olur.

69

Ayn rnei stun adlarn deitirerek yazarsak view, Resim 5.11deki gibi olur.

Resim 5.11: Viewle stun adlarnn belirlenmesi

Resim 5.3teki sorguyu altrdnzda viewin sonucu Resim 5.12deki gibi olacaktr.

Resim 5.12: Sorgu sonucu

5.3. Kstlamalar ve zinler


Viewler geici tablolar temel tablo olarak kullanamaz. Bunun dnda viewde kullanlan SELECT ifadesi ORDER BY, COMPUTE veya COMPUTE BY yan cmleciklerini alamaz. Viewin tanmland veritabanna eriim izni olmayan kullanclar viewe eriemez. Ancak, veritabannda izni olan kullanclar miras yntemi sayesinde viewe eriebilir. Dolaysyla, viewin bulunduu veritabanna erimek demek, viewe erimek demektir. Bu durumda viewi oluturduktan sonra bir de kullanclar iin eriim izni tanmlamak gerekir. Kullanclara izin verilirken temel tabloya asla eriim izni vermemek ve sadece viewe eriim izni tanmak gerekir. Bir viewin hangi tablolara bal olduunu ve bu tablolarn sahiplerinin kim olduunu sp_depends sistem stored procedure ile grmek mmkndr.

Resim 5.13: sp_depends ile sahiplik sorgulama

Sonu olarak sahipler Results penceresinde gsterilir.

70

Resim 5.14: Sahiplik sonular

Genellikle SQLde, nesnelerin sahibi dbodur. Bu nedenle, view oluturulurken de sahibini dbo olarak belirlemek sonradan oluacak karmaklklarn nne geecektir.

5.4. Birden Fazla Tablo Kullanm


Bir join ifadesiyle birden fazla tablonun verilerinin grntlenmesi salanabilir. Genel olarak bu ilem iin u yap kullanlr: CREATE VIEW view_ad AS SELECT stun_adlar FROM tablo_1 JOIN tablo_2 ON birletirme_art rnek FIRMA veritabannda, her bir personelin ka yaknnn olduuyla ilgili bir view oluturacanz varsaynz. Personel bilgileri PERSONEL tablosunda, personel yaknlarnn bilgileri PERSONEL_YAKIN tablosunda tutulmaktadr.

Resim 5.15: Birden fazla tablo ile view kullanm rnei

View oluturulduktan sonra SELECT ifadesiyle sorguyu yazp altrdnzda sonucu Results penceresinde grebilirsiniz.

71

Resim 5.16: Birden fazla tablo ile viewin sonucu

5.5. Viewde Deiiklik Yapmak veya Viewi Silmek


5.5.1. Deiiklik Yapmak
View zerinde deiiklik yapmak iin ALTER deyimi kullanlr. ALTER VIEW view_ad WITH seenekler AS SELECT ifadesi View zerinde deiiklik yapabilmenin dier bir yolu da Object Explorer penceresinde veritaban altnda oluturduunuz view zerinde fareyle sa tklayarak alan menden Modify komutunu vermektir.

5.5.2. Silmek
Viewleri silmek iin DROP deyimi kullanlr. DROP view_ad Dier bir yntem ise, Object Explorer penceresinde veritaban altnda oluturduunuz view zerinde fareyle sa tklayarak alan menden Delete komutunu vermektir.

72

UYGULAMA FAALYET UYGULAMA FAALYET

Resim 5.17: Person_Bilgi tablosu

lem Basamaklar Yeni bir query oluturunuz. nvanlara gre hazrlanacak bir view oluturunuz. Person_Bilgi tablosundan ilgili alanlar SELECT ile seiniz. Person_Bilgi tablosunda nvan i olan personel iin bir filtreleme uygulaynz. Oluturduunuz viewi kaydediniz ve altrnz. Yeni bir query daha aarak oluturduunuz viewi altracak SELECTi yaznz.

neriler New Query CREATE VIEW V_Unvan SELECT Sicil_No,Ad,Soyad FROM Person_Bilgi WHERE Unvan=i Save Execute SELECT * FROM V_Unvan

Management Studio ile kullandnz veritabannda yeni bir view oluturunuz.

Resim 5.18: New View komutu

73

Add Table penceresinden kullanacanz tabloyu seiniz.

Resim 5.6

Kullanlacak alanlar belirleyiniz.

Resim 5.19: Alanlarn seimi

Brt creti 900 YTLden byk olan personel iin filtreleme yapnz.

Resim 5.20: Brut_Ucret alan iin filtreleme

Viewi kaydediniz.

Resim 5.21: Viewin kaydedilmesi

Viewi anz.

Resim 5.22: Open View komutu

74

Sonucu gzlemleyiniz.

Resim 5.23: View sonucu

75

LME VE DEERLENDRME LME VE DEERLENDRME


Aadaki sorular dikkatlice okuyarak doru/yanl seenekli sorularda uygun harfleri yuvarlak iine alnz. Seenekli sorularda ise uygun kk iaretleyiniz. Boluk doldurmal sorularda boluklara uygun cevaplar yaznz. 1. 2. 3. 4. 5. 6. Grnm (view), eriim izinlerini dzenler ve sorgular basitletirir (D/Y). Bir viewin verileri ald asl tabloya temel tablo denir (D/Y). View ile en fazla . adet stun oluturulabilir. Bir view oluturmak iin kullanlan ifade .dir. Viewle bir filtreleme uygulamak iin, istenen art, .. ifadesinden sonra yazlr. Management Studioda bir view iin kullanlacak alanlar seildiinde T-SQL kodlar otomatik olarak yazlr (D/Y). Aadakilerden hangisi viewdeki stunlarla ilgili bir zellik deildir? A) Stun adlar, temel tablodaki stun adlaryla ayndr. B) Stun adlar istenirse deitirilebilir. C) Stun adlar deitirilemez. D) Stun veri tipleri iin temel tablo baz alnr. Aadakilerden hangisi view olutururken kullanlan SELECT ifadesiyle beraber kullanlabilir? A) ORDER BY B) GROUP BY C) COMPUTE D) COMPUTE BY Viewin sahiplik sorgusu ile yaplabilir. Viewde deiiklik yapmak iin . deyimi, viewi silmek iin deyimi kullanlr.

7.

8.

9. 10.

DEERLENDRME Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konulara geri dnerek tekrar inceleyiniz. Tm sorulara doru cevap verdiyseniz dier renme faaliyetine geiniz.

76

RENME FAALYET-6 RENME FAALYET-6


AMA
SQL Serverda indeks oluturmay reneceksiniz.

ARATIRMA
Programlama dillerinde indeksin kullanmn ve nemini genel hatlaryla aratrnz.

6. NDEKS
ndeks, tablolardan veri ekmek iin gerekli sorgular altrlrken gereken sreyi azaltmak amacyla kullanlr. Kayt saysnn milyonlarla ifade edildii durumlarda ok nemli bir yere sahiptir. ndeksi bir rnekle anlatmak gerekirse bir ila deposunu hayalinizde canlandrnz. lalarn raflardaki dizililerini ele alnz. Bir ila aradnzda, ilalar bir kurala gre dizilmemise her bir ilac tek tek kontrol etmeniz gerekir. lalar raflara alfabetik olarak dizerseniz, her bir ilac tek tek gzden geirmek zorunda kalmazsnz. Ayn ekilde, ila numaralarna gre sralanm bir liste olursa bu ltlere gre de aradnz ilac kolayca bulabilirsiniz.

6.1. likisel Veritabannda ndeksler


Veritabanlarnda indeks oluturarak verileri, veritabannda kaytl olduklar sradan deil de baka bir srada gsterebiliriz. Temelde indekslerin ilikisel veritabannda u ilevi vardr: Tekil indeksler, veri ilikilerini ve veri btnln salayan birincil anahtar alanlar oluturmada kullanlr. ndeks olan alann deerine gre bir kaydn kaytlar arasndaki srasn gsterir. Sorgularn neticelenme srelerini ksaltr.

77

6.2. Kme ve Kme Olmayan ndeksler


Kme indekslere clustered index, kme olmayan indekslere de nonclustered index de denir. Clustered indekste tabloda yer alan kaytlar, fiziksel olarak indeks tanml stuna gre dizilirler. Bir clustered indeks tarandnda varlan son nokta verinin kendisidir. Bu yzden, clustered indeksle yaplan aramalar ok hzl sonu verirler. Bir tabloda en fazla bir tane clustered indeks tanmlanabilir. Clustered indeks, zellikle aralk sorgular iin yksek performans salar. SQL Serverda tanmlanan bir clustered indeks stununa karlk, kaydedilen deerlerin mutlaka daha nce kaydedilmemi bir deer olmas, yani tekil olmas gerekir. Bu durum, bir tablonun Primary Key Constraint veya Unique Key Constraint tanml stunu stnde tanml indeksler iin sorun karmaz. SQL Server, verilere erimek iin bir clustered indeksi iki ekilde kullanabilir: Clustered indeks aramas (seek): Sorgu sonucunda dnecek kaytlar stnde bir kstlama varsa (WHERE cmlecii gibi), clustered indeks aramas kullanlr. Clustered indeks taramas (scan): Sorgu sonucunda dnecek kaytlar stnde bir kstlama yoksa clustered indeks taramas kullanlr.

Tablo stnde clustered indeksin dier indekslerden nce oluturulmasnda fayda vardr. nk dier indekslerin tamamnda bu indeksin oluturulduu tekil deer kullanlr. Nonclustered indeks, ya yn (heap) zerinden veya clustered indeksin zerinden verilere eriebilir. Tek bana, dorudan verilere eriemez. Nonclustered indeksler veri eriiminde hz artrr ancak clustered indeks aramas veya clustered indeks taramas ile birlikte kullanlabilir olduundan performanslar clustered indekslerden daha dktr.

6.3. ndeks Oluturmak


ndeks oluturmak iin kullanlabilecek en basit ifade u ekildedir: CREATE indeks_tipi INDEX indeks_ad ON tablo_ad(stun_ad) Genel kullanmda; ndeks_tipi: Unique clustered veya sadece clustered, nonclustered eklinde indeksin tipini belirtir. Tip belirtilmediinde nonclustereddir. ndeks_ad: ndekse verilen isim.

78

Tablo_ad: ndeksin tanmland tablo ya da view ad. Stun_ad: Tablo ya da viewde indekslenmesi istenen stun veya stunlarn ismi.

rnek Person_Bilgi tablosunda Sicil_No stunu stnde Clustered Index tanmlansn. CREATE CLUSTERED INDEX Ind_Sicil ON Person_Bilgi (Sicil_No) SQL Serverda sral indeks oluturabilir. Sral indeks iin ASC veya DESC deyimleri stun adlaryla beraber kullanlr. Varsaylan sralama deeri ASCdir. rnek CREATE INDEX Ind_Brut_Ucret ON Person_Bilgi (Brut_Ucret DESC)

6.3.1. Unique ndeks


Verilerin tekrarlanmamas iin kullanlr. Verilerin tekrarlanmamas iin UNIQUE deyimini kullanmak yeterlidir. Veri alma ve tekrar nlemede ayn indeks kullanlabilir. UNIQUE indeks, hem clustered hem de nonclustered tipte olabilir. Kstlayc (Primary Key Constraint veya Unique Constraint) tanm yapldnda Unique indeks otomatik olarak oluur. Bu oluum yaplrken indeksin clustered olup olmayaca belirtilmelidir. Kullanc bir seenek belirtmezse Primary Key Constraint SQL Serverca Unique indeks olarak Unique Constraintde nonclustered unique indeks olarak belirlenir. rnek ALTER TABLE Person_Bilgi ADD CONSTRAINT PK_Sicil PRIMARY KEY(Sicil_No) CLUSTERED

6.3.2. Karma (Composite) veya Birleik ndeks


Birbiriyle ilikili tablolar arasnda bir tablonun iki stunu birincil anahtar olarak belirlenebilir. Bu duruma karmak veya birleik indeks denir. rnek ALTER TABLE Personel ADD CONSTRAINT PK_Personel PRIMARY KEY (TCKimlikNo,Sicil_No) CLUSTERED

79

6.4. ndekste Deiiklik Yapmak


ndekslerde eitli amalar dorultusunda deiiklikler yaplabilir. Bir indeks, yeniden derlenebilir (rebuild), yeniden dzenlenebilir (reorganize), kullanma kapatlabilir (disable) ve seenekleri deitirilebilir (set). Bir indekste deiiklik iki yolla yaplabilir: Management Studio ve DDL ifadelerinden ALTER INDEX komutu indekste deiiklikler yaplmasn salar. ndekste deiiklik yapmak iin tabloda oluturulmu indeks zerinde fareyle sa tklaynz ve Properties komutunu seiniz.

Resim 6.1: ndeks dzenlemek

Properties komutunu verdiinizde indeksle ilgili bilgiler ekrana gelecektir.

Resim 6.2: ndeks zellikleri penceresi

80

Bu pencere zerinden indeksin tipini deitirebilir, unique zellii verebilir, yeni bir indeks daha ekleyebilirsiniz. ALTER INDEXin kullanm ise yledir: ALTER INDEX indeks_ad veya ALL ON (tablo_ad.indeks_ad) ( REBUILD veya REORGANIZE veya DISABLE veya SET (indeks_seenekleri) )

6.4.1. ndeks Silmek


Oluturulan indeks, ilevini yitirirse silinmesi gerekebilir. Bunun iin, DROP INDEX komutu veya indeks zellikleri penceresi kullanlabilir. Genel Kullanm DROP INDEX indeks_ad ON tablo_ad SQL Server 2000de bu yazm farkldr. DROP INDEX tablo_ad.indeks_ad Bir baka yol olarak da Resim 6.2deki indeks zellikleri penceresinde bulunan Remove dmesiyle de indeksi silebilirsiniz.

6.5. sp_helpindex Komutu


Bir tabloda hangi alanlarda ne tr indekslerin tanml olduunu grmek mmkndr. Bu indeksleri grmek iin sp_helpindex komutu kullanlr. Genel Kullanm sp_helpindex tablo_ad rnek Person_Bilgi tablosunda bulunan indeksleri grebilmek iin ; sp_helpindex Person_Bilgi

81

yazmak gerekir. Bu yazm, yeni bir query sayfasnda olmaldr. Query sayfasna yazlan komutu altrdnzda sonu Resim 6.3teki gibi olacaktr.

Resim 6.3: Tablodaki indeks bilgileri

82

UYGULAMA FAALYET UYGULAMA FAALYET


lem Basamaklar Person_Bilgi tablosunda Sicil_No stununa gre clustered bir indeks oluturunuz. neriler

Resim 6.4: ndeksin oluturulmas

Oluturduunuz indeksi siliniz.


Resim 6.5: ndeksin silinmesi

Sicil_No stununa benzer verilerin girilmemesi iin indeksi yeniden oluturunuz.

Resim 6.6: Unique indeksin oluturulmas

Oluturduunuz indeks hakknda bilgi alnz.

Resim 6.7: ndeks hakknda bilgi alnmas

Sonular Results penceresinde grnz.


Resim 6.8: Results penceresi

Oluturduunuz indeksi silerek ayn ilemleri Management Studio ile yapnz.


Resim 6.9: Management Studio ile indeksin oluturulmas

83

LME VE DEERLENDRME LME VE DEERLENDRME


Aadaki sorular dikkatlice okuyarak doru/yanl seenekli sorularda uygun harfleri yuvarlak iine alnz. Seenekli sorularda ise uygun kk iaretleyiniz. Boluk doldurmal sorularda boluklara uygun cevaplar yaznz. 1. ndeks oluturmak veriye eriimi hzlandrr (D/Y). 2. Veri ilikilerini ve btnln salayan birincil anahtar alanlar oluturmada .kullanlr. 3. Kme indekse ............, kme olmayan indekse indeks denir. 4. ndeks tarandnda ulalan sonu verinin kendisidir (D/Y). 5. Aadakilerden hangisi veriye direkt ulaamaz? A) Clustered B) Nonclustered C) Heap

D) Yn

6. Sorgu sonras elde edilen kaytlarda bir kstlama yoksa kme indeks aramas kullanlr (D/Y). 7. Aadakilerden hangisi bir indekste deiiklik yapmaz? A) REBUILD B) RECOGNIZE C) DISABLE D) SET 8. Tabloda belirtilen stun iin verilerin tekrarlanmamas gerekiyorsa Unique indeks tanmlanmaz (D/Y). 9. ndeksi silmek iin .. komutu kullanlr. 10. ndeks hakknda bilgi almak iin komutu kullanlr. DEERLENDRME Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konulara geri dnerek tekrar inceleyiniz. Tm sorulara doru cevap verdiyseniz dier renme faaliyetine geiniz.

84

MODL DEERLENDRME MODL DEERLENDRME


PERFORMANS TEST (YETERLK LME) Modl ile kazandnz yeterlii, retmeniniz ilem basamaklarna gre 0 ile 4 puan arasnda olacak ekilde deerlendirecektir. DEERLENDRME KRTERLER Dardan veri alabilme Verilerin kopyalanaca veritabann seebilme Tablonun nasl oluacan seebilme Kayt ilemi ve paket tercihlerini yapabilme Veritabann bir metin dosyasna aktarabilme Veritaban ve tablolar oluturabilme Tablolar aras iliki kurabilme likilerde yntem uygulayabilme ie select kullanabilme Tretilmi tablo oluturabilme mle tanmlayabilme mlecin konumunu test edebilme mlecin bulunduu kaytla almasn salayabilme mleci kapatabilme mleci hafzadan silebilme Tetikleyici oluturabilme Tetikleyiciyi kullanabilme Grnm oluturabilme Grnm aabilme ve kapatabilme Filtreleme uygulayabilme ndeks oluturabilme Kme indeks oluturabilme Unique indeks oluturabilme ndeksi silebilme ndeks hakknda bilgi alabilme Toplam (100 puan) DEERLENDRME Yaptnz deerlendirme sonucunda eksikleriniz varsa renme faaliyetlerini tekrarlaynz. Modl tamamladnz, tebrik ederiz. retmeniniz size eitli lme teknikleri uygulayacaktr, retmeninizle iletiime geiniz. Puan

85

CEVAP ANAHTARLARI CEVAP ANAHTARLARI


RENME FAALYET-1N CEVAP ANAHTARI 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Import, Export D kk Import and Export Doru Yanl Data Source, Destination Bcp Yanl Bulk Insert Doru

RENME FAALYET-2NN CEVAP ANAHTARI 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Yanl 256 OUTER JOIN-NULL LEFT OUTER JOINRIGHT OUTER JOIN C kk C kk Doru Doru Yanl Doru

RENME FAALYET-3N CEVAP ANAHTARI 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Doru Yanl OPEN-CLOSE FETCH_STATUS DEALLOCATE @@ROWCOUNT Doru FETCH PRIOR FETCH LAST Doru READ_ONLY

86

RENME FAALYET-4N CEVAP ANAHTARI 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. A kk Inserted B kk D kk Yanl Doru Doru @@rowcount ROLLBACK ALTER-DROP

RENME FAALYET-5N CEVAP ANAHTARI 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Doru Doru 1024 CREATE VIEW WHERE Doru C kk B kk sp_depends ALTER-DROP

RENME FAALYET-6NIN CEVAP ANAHTARI 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Doru Tekil indeks Clusterednonclustered Doru B kk Yanl B kk Yanl DROP INDEX sp_helpindex

87

KAYNAKLAR KAYNAKLAR
GZDEL Yaar, Yazlmclar in SQL Server 2005 ve Veritaban Programlama, Sekin Yaynclk, Ankara, 2006.

88

You might also like