Professional Documents
Culture Documents
MEGEP
(MESLEK ETM VE RETM SSTEMNN GLENDRLMES PROJES)
BLM TEKNOLOJLER
VERTABANI YNETM
ANKARA 2008
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
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.
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.
rnek Excel programn aarak A ve B stununa Resim 1.1deki gibi bilgileri giriniz. Bu bilgiler ehir ad ve ehrin telefon kodu eklinde olacaktr.
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.
Import Data komutunu tkladnzda ekrana SQL Server Import and Export Wizard gelecektir.
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.
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.
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.
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.
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.
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
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.
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.
Yaplan ilemlerin zetinin gsterildii bu pencerede sihirbaz tamamlamak iin Finish dmesini tklatnz. altrlma sonucunda yaplan ilemlerin baarl bir ekilde gerekleip gereklemediini greceksiniz.
10
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
Tablo iindeki verileri de grmek isterseniz tabloyu Open Table komutuyla anz.
11
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
Veri alma ve yollama sihirbaznn ilk admn geerek veri kaynan belirtiniz. Veri kaynanz, tabloyu gndermek istediiniz veritabannn ad olacaktr.
Veri kaynanz setikten sonra Next dmesin, tklaynz. Ekrana hedef seiminin yaplaca pencere gelecektir.
13
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.
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.
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
16
rnek Sinif tablosundaki verileri bcp komutu ile bir dosyaya aktaralm. Komut istemine bcp komutunu Resim 1.22deki gibi yaznz ve Enter tuuna basnz.
SListe.txt dosyas ilgili klasrn altnda oluturulacaktr. Dosya ieriini grmek iin dosyay Not Defteri program ile aabilirsiniz.
-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
Burada sadece out ifadesi yerine in ifadesinin geldiine dikkat ediniz. Veritabanndaki tablonuzu da aarak verilerin tabloya aktarlp aktarlmadn grebilirsiniz.
SListe.txt dosyas ierisinde var olan verilerin yeni tablonuz bulk_tabloya aktarldn greceksiniz.
18
19
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.
20
Tabloyu kaydediniz.
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.
21
22
altrlma sonucunda yaplan ilemlerin baarl bir ekilde gerekleip gereklemediini kontrol ediniz ve Close dmesini tklaynz.
23
Microsoft Accesstan Import ettiiniz tablonun Tables dizini altnda olup olmadn kontrol ediniz.
Resim 1.38: Accessten Import edilen tablo
24
UYGULAMA FAALYET 2
lem Basamaklar Balat/altr tklaynz. neriler
Bir nceki uygulama faaliyetiyle veritabannza aktardnz tablo ieriini bcp komutuyla bir text dosyaya aktarnz.
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
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
ARATIRMA
Daha nceden rendiiniz veritaban paket programnda tablolarn nasl birletirildiini aratrnz?
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.
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.
28
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.
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.
WHEREden sonra sorgular balamak iin kullanlan = operatr yerine dier karlatrma operatrleri de kullanlabilir. Eer, sorgunuzda geriye birden fazla deer dndrlyorsa SQL Server hata verir.
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.
30
Yazdnz sorgu birden fazla deer dndryorsa sorgular IN deyimiyle birbirine balamanz gerekir.
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.
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.
rnek Yalar ayn olan rencilerin saylarn listeleyeceinizi varsaynz. nce tablodaki tm kaytlar listeleyip renci yalarn grnz.
32
33
34
lem Basamaklar
neriler
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.
Kitap_Id alanlar eleecek ekilde Kitap_Ad ve Kitap_Yaynevi alanlar iin INNER JOIN yntemini uygulayacak sorguyu yaznz.
Birinci tablodaki kaytlara gre ikinci tablodaki ilikili kaytlar gsterecek OUTER JOIN yntemini uygulayacak sorguyu yaznz.
36
tablo_Kitap tablosunda mevcut kitaplardan sayfa says 450 ve 550 olan kitaplar listeleyen sorguyu yaznz.
tablo_Kitap tablosunda mevcut kitaplardan sayfa says 310 ve 330 olmayan kitaplar listeleyen sorguyu yaznz.
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
37
tablo_Kitap tablosunda Kitap Idsi 130dan byk olan kitaplar listeleyen tretilmi tablo sorgusunu yaznz.
Resim 2.25: Tretilmi tablo sorgusu
38
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
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.
40
@@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
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.
mle kapatlr.
42
CAST fonksiyonuyla int tipindeki @KitapKod deikeni VARCHAR tipine dntrlmektedir. Sorguyu altrdktan sonra elde edilen sonular Messages penceresinden grebilirsiniz.
43
rnek Kitaplar tablosu zerinde imleci eitli ekillerde hareket ettireceinizi varsaynz.
44
45
46
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
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.
48
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
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.
50
51
tetikleyicileri sadece tablolar iin tanmlanabilirken Instead Of tetikleyicileri hem tablolar iin hem de grnmler (views) iin tanmlanabilirler.
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
52
rnek tablo_KitapBilgi tablosunda kitaplarn basm yln otomatik olarak yazacak bir tetikleyici yazacan varsaynz.
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.
tablo_KitapBilgi tablosunu aarak yeni bir kayt giriniz ve basm yl alanna deer girmeden Enter tuuna basnz.
53
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.
54
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.
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.
55
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.
Tabloyu Open Table komutuyla atnzda etkilenen satrn son satr olduunu greceksiniz.
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.
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.
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.
58
Musteriler tablosunda nc ve beinci kaytlar silecek yeni bir sorgu oluturunuz ve altrnz.
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.
59
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.
60
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
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.
62
63
64
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.
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.
Yeni bir Query aarak, viewi oluturmak iin Resim 5.2deki kodlar yaznz.
66
SELECT ile tablodan kullanlacak alanlar belirlenir. WHERE ile istenirse bir art konulabilir. Yeni bir Query daha aarak oluturulan viewin altrlmas gerekir.
V_Cinsiyet viewini altrdnzda verilen arta gre sonular Results penceresinde grebilirsiniz.
Ayn ilemi Management Studioyu kullanarak da yapabilirsiniz. Veritaban iindeki Views klasr zerinde fareyle sa tuu tklaynz.
Alan Add Table penceresinde kullanacanz Person_Bilgi tablosunu seerek Add komut dmesini tklaynz. Close dmesiyle de pencereyi kapatnz.
67
Alanlar setiinizde SELECT ifadesi otomatik olarak yazlacaktr. Cinsiyeti kadn olan personel view ile gsterileceinden Cinsiyet alannda bir filtreleme yaplmas gerekmektedir.
68
Oluturulan viewi vereceiniz bir isimle (V_CinsiyetKadin) kaydediniz. Son olarak viewi altrmak kald. Open View komutuyla oluturulan viewi altrnz.
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.3teki sorguyu altrdnzda viewin sonucu Resim 5.12deki gibi olacaktr.
70
Genellikle SQLde, nesnelerin sahibi dbodur. Bu nedenle, view oluturulurken de sahibini dbo olarak belirlemek sonradan oluacak karmaklklarn nne geecektir.
View oluturulduktan sonra SELECT ifadesiyle sorguyu yazp altrdnzda sonucu Results penceresinde grebilirsiniz.
71
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
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
73
Resim 5.6
Brt creti 900 YTLden byk olan personel iin filtreleme yapnz.
Viewi kaydediniz.
Viewi anz.
74
Sonucu gzlemleyiniz.
75
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
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.
77
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.
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)
79
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) )
81
yazmak gerekir. Bu yazm, yeni bir query sayfasnda olmaldr. Query sayfasna yazlan komutu altrdnzda sonu Resim 6.3teki gibi olacaktr.
82
83
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
85
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