Upload
eren
View
217
Download
0
Embed Size (px)
Citation preview
8/14/2019 SQL Server 4
1/49
T.C.
MLL ETM BAKANLII
MEGEP(MESLEK ETM VE RETM SSTEMNN
GLENDRLMES PROJES)
BLM TEKNOLOJLER
VER BTNL
ANKARA 2008
8/14/2019 SQL Server 4
2/49
Milli Eitim Bakanl tarafndan gelitirilen modller;
Talim ve Terbiye Kurulu Bakanlnn 02.06.2006 tarih ve 269 sayl Karar ileonaylanan, Mesleki ve Teknik Eitim Okul ve Kurumlarnda kademeli olarakyaygnlatrlan 42 alan ve 192 dala ait ereve retim programlarndaamalanan mesleki yeterlikleri kazandrmaya ynelik gelitirilmi retimmateryalleridir (Ders Notlardr).
Modller, bireylere mesleki yeterlik kazandrmak ve bireysel renmeyerehberlik etmek amacyla renme materyali olarak hazrlanm, denenmek vegelitirilmek zere Mesleki ve Teknik Eitim Okul ve Kurumlarndauygulanmaya balanmtr.
Modller teknolojik gelimelere paralel olarak, amalanan yeterliikazandrmak koulu ile eitim retim srasnda gelitirilebilir ve yaplmasnerilen deiiklikler Bakanlkta ilgili birime bildirilir.
rgn ve yaygn eitim kurumlar, iletmeler ve kendi kendine mesleki yeterlikkazanmak isteyen bireyler modllere internet zerinden ulalabilirler.
Baslm modller, eitim kurumlarnda rencilere cretsiz olarak datlr.
Modller hibir ekilde ticari amala kullanlamaz ve cret karlndasatlamaz.
8/14/2019 SQL Server 4
3/49
i
AIKLAMALAR ...................................................................................................................iiiGR .......................................................................................................................................1RENME FAALYET - 1 ...................................................................................................31. VER KISITLAMALARI ....................................................................................................3
1.1. Veri Btnl..............................................................................................................31.2. Tanmlanabilir Veri Btnl.....................................................................................31.3. Tanmlanabilir Veri Btnl Esaslar .......................................................................4
1.3.1. Satr Btnl (Entity) ........................................................................................41.3.2. Stun Btnl (Domain)....................................................................................41.3.3. Bavuru Btnl ................................................................................................41.3.4. Kullanc Tanml Btnlk...................................................................................4
1.4. Constraint (Kstlayc)..................................................................................................41.5. Constraint Trleri .......................................................................................................... 51.5.1. Primary Key Constraint .........................................................................................51.5.2. Unique Constraint..................................................................................................51.5.3. Foreign Key Constraint..........................................................................................51.5.4. Default Constraint..................................................................................................51.5.5. Check Constraint ...................................................................................................5
1.6. Stun Seviyeli Kstlamalar ..........................................................................................51.6.1. Primary Key Constraint Oluturmak .....................................................................61.6.2. Unique Constraint Oluturmak..............................................................................61.6.3. Default Constraint Oluturmak..............................................................................6
1.6.4. Check Constraint Oluturmak................................................................................ 71.7. Default Nesnesi Oluturmak .........................................................................................81.8. Rule Oluturmak ........................................................................................................... 91.9. Tablo Seviyeli Kstlamalar ..........................................................................................9
1.9.1. Stunlar Aras Check Constraint Oluturmak .......................................................91.9.2. Foreign Key Constraint Oluturmak....................................................................10
1.10. Constraintleri Dzenlemek ......................................................................................131.11. T_SQL ile Tablodaki Constraintlerin Gsterimi .....................................................141.12. Constraintleri Silmek ...............................................................................................151.13. Constraintlerin Kullanlp Kullanlmamas..............................................................15UYGULAMA FAALYET .............................................................................................. 16
LME VE DEERLENDRME ....................................................................................18RENME FAALYET - 2 .................................................................................................192. TRIGGER VE SAKLI PROSEDRLER ..........................................................................19
2.1. Trigger......................................................................................................................... 192.2. Stored Procedure.........................................................................................................21
2.2.1. Extended Stored Procedure..................................................................................212.2.2. CLR Stored Procedure.........................................................................................212.2.3. System Stored Procedure.....................................................................................222.2.4. Kullanc Tanml Stored Procedure ....................................................................22
2.3. altrlma Aamalar ................................................................................................222.4. Stored Procedure Oluturmak .....................................................................................22
2.4.1. NOCOUNT Parametresi......................................................................................262.4.2. Stored Proceduren Kullanm Hakk.................................................................. 26
NDEKLER
8/14/2019 SQL Server 4
4/49
ii
2.5. Deiiklik Yapmak .....................................................................................................27
2.5.1. Management Studio ile Deiiklik Yapmak........................................................272.5.2. sp_helptext fadesi ile Deiiklik Yapmak ......................................................292.6. Stored Procedure Silmek ......................................................................................... 312.7. Deer Alan Stored Procedureler................................................................................ 312.8. Deer Alp-Veren Stored Procedureler......................................................................342.9. RETURN Deyimi........................................................................................................36UYGULAMA FAALYET .............................................................................................. 38LME VE DEERLENDRME ....................................................................................40
MODL DEERLENDRME .............................................................................................. 41CEVAP ANAHTARLARI.....................................................................................................42KAYNAKA ......................................................................................................................... 43
8/14/2019 SQL Server 4
5/49
iii
AIKLAMALARKOD 481BB0045ALAN Biliim TeknolojileriDAL/MESLEK Veri Taban ProgramclMODLN ADI Veri Btnl
MODLN TANIMISQL Serverda veri btnl veya kstlamalar ile ilgilirenme materyalidir.
SRE 40/32N KOUL T SQL modln bitirmi olmak
YETERLK
MODLN AMACI
Genel AmaGerekli ortam salandnda, veri kstlamalar yapabilecek veyaplan kstlamalar ynetebileceksiniz..
Amalar1. Veri kstlamalarn kullanabileceksiniz.2. Kstlanan verileri ynetebileceksiniz.3. Sakl prosedrleri kullanabileceksiniz.
ETM RETMORTAMLARI VEDONANIMLARI
Ortam
Atlye, laboratuar, bilgi teknolojileri ortam ( nternet ) vb.kendi kendinize veya grupla alabileceiniz tm ortamlar.
DonanmA veri tabann altrabilecek yeterlikte bilgisayar,yedekleme iin gerekli donanm (CD yazc, flash bellek),raporlama iin yazc, kat ve kalem
LME VEDEERLENDRME
Modln iinde yer alan her renme faaliyetinden sonraverilen lme aralar ile kendinizi ve modl sonunda ise,bilgi ve beceriyi belirlemek amacyla, retmeniniz tarafndan
belirlenecek lme aracyla deerlendirileceksiniz.
AIKLAMALAR
8/14/2019 SQL Server 4
6/49
iv
8/14/2019 SQL Server 4
7/49
1
GRSevgili renci,
Okul yaantnzda reneceiniz her konu, yaptnz uygulama ve tamamladnz hermodl bilgi daarcnz gelitirecek ve ilerde atlacanz i yaantnzda size baar olarakgeri dnecektir. Eitim srecinde daha z verili alr ve alma disiplinini kazanrsanz;baarl olmamanz iin hibir neden yoktur.
Son yllarda yaplan birok proje, ok sayda bilgisayar tarafndan kullanlabilecekekilde tasarlanmaktadr. Bu yzden, a ortamnda birden fazla kullanc ayn proje zerindealabilmektedir. Bu ilemleri ok sk kullandnz veri taban programyla dayapabilmenize ramen a ortamnda gvenlik ve hzl eriim asndan en iyi sonucu verenSQL Server veri tabanyla da yapabilirsiniz. Bu programla, milyonlarca kaydn olduutablolar zerinde ilem yaparken tm kullanclara hitap edebilmektedir. stenilen sorgusonularn da en hzl ekilde elde edebilmenizi salar.
Bu modlle, SQL Serverda veri btnln veya kstlamalar salayarakoluturulan bu kstlamalar ynetmeyi ayrca, sakl prosedr tanmlamay ve sorgu ierisindekullanabilmeyi reneceksiniz.
GR
8/14/2019 SQL Server 4
8/49
2
8/14/2019 SQL Server 4
9/49
3
RENME FAALYET - 1
SQL Serverda veri kstlamalarn kullanmay reneceksiniz.
SQL Serverda daha nceden tablo olutururken stunlara verdiiniz zellikleriaratrnz.
1. VER KISITLAMALARI
1.1. Veri Btnl
Veri btnl, bir tabloda veri gncelleme, silme veya ekleme gibi ilemleryaplrken dier tablo ya da tablolardaki verilerin birbirleriyle uyum iinde olmas,dolaysyla veri tutarllnn kaybolmamasnn garanti altna alnmas demektir.
Veri btnln salamak iki yntemle olabilir:
Tanmlanabilir veri btnl: Tanmlanan nesnelerin kendi zelliklerisayesinde salanabilen veri btnldr.
Prosedrel (Programsal) veri btnl: Bir programlama mantylabtnln tasarlanmas gerekir. SQLde bu yaklam ise Trigger(tetikleyiciler), Stored Procedure (sakl yordamlar) veya programc kodlarylayaplr.
1.2. Tanmlanabilir Veri BtnlNesnelerin kendi tanmlar dolaysyla elde edilen veri btnlne tanmlanabilir veri
btnl denir.
Bu veri btnlnn; Constraintler (kstlayclar), Rulelar (kurallar) ve Defaultlar(varsaylanlar) olmak zere eidi vardr.
Tanmlanabilir veri btnl, prosedrel veri btnlne gre daha kullanl vedenetlenebilirdir; ancak, tanmlanabilir veri btnlnn kullanlamad durumlardaprosedrel veri btnl kullanlr.
RENME FAALYET-1
AMA
ARATIRMA
8/14/2019 SQL Server 4
10/49
4
1.3. Tanmlanabilir Veri Btnl Esaslar
Tanmlanabilir veri btnl esaslarn drt balk altnda toplayabiliriz.
1.3.1. Satr Btnl (Entity)
Tabloya girilen kaytlardan her bir kaydn dier kaytlardan farkl bir deer olmasnsalayan btnlktr.
1.3.2. Stun Btnl (Domain)
Tablodaki herhangi bir stunun hangi gruptan verileri alabileceini veya NULL bir
deer alp alamayacan salayan btnlktr.
1.3.3. Bavuru Btnl
Bir birincil anahtarl ve bir yabancl anahtarl birbiriyle ilikili iki tabloolduunu dnnz.
Yabancl anahtarl tablodan bir kaydn silinemedii durumda, birincil anahtarltablodan birincil anahtar ayn olan kaytlarn silinemeyeceini salayanbtnlktr.
rnek:Bilgisayarnzn kasasnda bir anakart, TV kart ve ekran kart olduunu varsayn. TV
kart ve ekran kart kasadan karlmadan ana kart kasadan karlamayacaktr.
1.3.4. Kullanc Tanml Btnlk
Dier btnlklere uymayan ve kod yazlarak oluturulan btnlktr.
1.4. Constraint (Kstlayc)
Veri zerindeki mantksal snrlamalara kst ad verilir. Kstlarn genel olmas tercihedilen bir durumdur.
Kstlar, veri modellerinde btnlk salamak iin kullanlr. Kstlamalar, tablolarntanmlanmasyla beraber oluan elerdir. Kstlamalar ile Rule (kural) ve Defaultlarn(varsaylan) yapabilecei iler yaplabilir.
Constraintler tablo olutururken yani CREATE TABLE komutuyla tanmlanabilir.Tablo oluturulmusa ALTER TABLE komutuyla bu ilem gerekleir. ALTER TABLEkomutuyla kullanldnda stunlara girilen bilgilerin dikkate alnmas gerekir.
8/14/2019 SQL Server 4
11/49
5
1.5. Constraint Trleri
1.5.1. Primary Key Constraint
Birincil anahtar kstlayc anlamndadr. Ayn olmayan deerler girilmesini salar. Buda her kaydn farkl olmas demektir. Her tablonun en fazla 1 adet Primary Key Constraintiolabilir.
1.5.2. Unique Constraint
Tekil alan kstlayc anlamndadr. Birincil anahtar olan ve tablodaki dier alanlariinde ayn ierie sahip verilerin olmamas iin Unique Constraint tanmlanr. T.C.Kimlik
Nu. primary key ve Okul Nu. Unique eklinde bir tanmlama Unique Constrainte birrnektir.
1.5.3. Foreign Key Constraint
Yabancl anahtar kstlayc anlamndadr. Bir tablodaki bir stuna ait verilerin bakabir tablonun belirli bir stunundan gelmesini denetler.
1.5.4. Default Constraint
Varsaylan kstlayc anlamndadr. Tablodaki herhangi bir alan iin girilmesi gerekenbir deerin atanmasdr. INSERT komutu iin geerlidir. rnein, kii bilgilerinin alndbir tabloda kiinin uyruunun girilmesi ileminde varsaylan deer olarak T.C. atanabilir.
1.5.5. Check Constraint
Kontrol kstlayc anlamndadr. Belirtilen formata gre verilerin girilmesini salar.rnein, T.C.Kimlik Nu. alanna 11 karakterin girilmesi Check Constraint ile salanabilir.
1.6. Stun Seviyeli KstlamalarTablodaki bir stun iin girilecek bilgileri kontrol etmek iin kullanlan
kstlamalardr. Bir stunun deer alp (NULL) almamas (NOT NULL) iin kstlamayaplabilir. Bu, kstlamaya en basit rnektir.
Resim 1.1: Bir stunun deer alp almamas (NULL veya NOT NULL)
8/14/2019 SQL Server 4
12/49
6
1.6.1. Primary Key Constraint Oluturmak
Tablo tasarm aamasnda bir birincil anahtarnz tanmlanm olmas gerekir. Birtabloda sadece 1 adet Primary Key Constraint tanmlanabilir.
CREATE TABLE Okul (OgrNo int,Adi VARCHAR (15),Soyadi VARCHAR (20),Sinifi VARCHAR(10),TcKimlikNo VARCHAR (11),
CONTRAINT PKC_OgrNo PRIMARY KEY (OgrNo)
)
1.6.2. Unique Constraint Oluturmak
Bir tabloda birden fazla Unique Key olabilir. SQL Server, bunu Unique Index olarakele alr. Unique Key Constraint eklinde tanmlanm bir alan NULL deerler alabilir. Eer,bu alan NULL olmayacak yani deer alacaksa daha nce girilmi olan bilgilerden mutlakafarkl deer olmaldr.
Daha nceden oluturulmu bir tablo iin Unique Key Constraint tanm yledir.
ALTER TABLE OkulADD CONSTRAINT PK_Okul PRIMAY KEY CLUSTERED (OgrNo),
CONSTRAINT UC_TcKimlikNo UNIQUE (TcKimlikNo)
1.6.3. Default Constraint Oluturmak
Bir tabloya veri girii esnasnda o alann alaca varsaylan bir deerin tanmlanmasiin kullanlan kstlaycdr.
Tabloda bulunan tarih alanna bir deer girilmemesi durumunda bulunulan gnntarihini o alana aktarma ilemi en gzel rnektir. SQLde bu ilem GETDATE() fonksiyonu
kullanlarak yaplr.
Tablonun ilk oluturulmas esnasnda genel kullanm yledir.
CREATE TABLE Tabloadi (Stunadi,Stunadi,
CONSTRAINT Constraint_Adi DEFAULT (Stunadi))
Varolan bir tablo iin ise aadaki gibi kullanlmaldr.
8/14/2019 SQL Server 4
13/49
7
ALTER TABLE Tabloadi
ADD CONSTRAINT Constraint_Adi DEFAULT ifade veya deer FOR Stunadirnek
ALTER TABLE OkulADD CONSTRAINT DC_Sinif DEFAULT 10 FOR Sinif
1.6.4. Check Constraint Oluturmak
Tabloda belirtilen bir stuna istenilen artlara gre deer girilebilmesini ve bunlarnkontroln salayan kstlaycdr. Ayn stun iin birden fazla Check Constraint
kullanlabilir.
Check Constraintin kullanm amalar yledir,
Stuna girilebilecek verileri bir snr ile kstlamak, Stuna girilebilecek verilerin belli bir formatla girilmesini salamak, Stuna girilebilecek verileri baka stun formatlarna gre karlatrarak
denetlemektir.
Tablonun ilk oluturulmas esnasnda genel kullanm yledir.
CREATE TABLE Tablo_Adi (Stun_Adi,Stun_Adi,..,
CONSTRAINT Constraint_Adi CHECK (ifade))
rnek:Sinif adnda yeni bir tablo oluturulacaktr. Bu tabloyu oluturmadan nce yeni bir
veri taban (Databases) oluturabilirsiniz. Bu tablonun stunlar ise, OgrNo int trnde, Adve Soyad Char trnde olsun.
OgrNo alanna renci numaralarnn mutlaka 0dan (sfr) byk olmalarnsalayacak CHECK ifadesini CREATE TABLE ierisinde yazabilirsiniz.
Resim 1.2: CHECK ifadesinin kullanm
8/14/2019 SQL Server 4
14/49
8
Querynizi kaydediniz ve Execute ediniz. Hata mesaj almadysanz tablonuzu Open
Table komutuyla anz ve veri giriine balaynz. renci numaralar 0dan byk olduusrece veri giriinde sorun olmayacaktr.
Resim 1.3: Veri girii
Ancak, renci numaralarn girerken 0 ya da 0dan kk bir deer vermekistediinizde hata mesaj ile uyarlacaksnz.
Resim 1. 4: Hata mesaj
Bu hata mesajnda Check Constraint ile belirttiiniz ifadeye gre uygun veri giriininyaplmad ve verilerin tabloya eklenemedii bildirilmektedir. Ya veriyi dzenleyeceksinizya da ESC tuuna basarak veri giriinden vazgeeceksiniz demektir.
1.7. Default Nesnesi Oluturmak
Default nesnesi, Default Constraint ile ayn ileve sahiptir ve ayr bir nesne olaraktanmlanr. Bir tabloda bir alan iin sadece bir adet Default nesnesi tanmlanabilir. Ama,nesne olarak tanmlanmayan Default veya Check Constraintler birden fazla tanmlanabilir.
Genel kullanm u ekildedir.
CREATE DEFAULT Default_Adi AS deer veya ifade
Son olarak, oluturulan Default nesnesinin sp_bindefault isimli sistem StoredProcedure kullanlarak stunla ilikilendirilmesi gerekir.
sp_bindefault Default_Adi, tablo.stun_adi
8/14/2019 SQL Server 4
15/49
9
Eer, default nesnesini artk kullanmayacaksanz DROP ile silmeniz gerekir.
DROP DEFAULT Default_Adi
1.8. Rule Oluturmak
Rule nesnesi de ayr bir nesne olarak tanmlanmaktadr. Check Constraintlerle aynileri yapabilir. Rule oluturduktan sonra sp_bindrule isimli sistem Stored Procedureyleilikilendirilmesi gerekir.
Genel kullanm u ekildedir.CREATE RULE Rule_Adi AS ifadeler
Balant ekli de aadaki gibidir.
sp_bindrule Rule_Adi, Tablo.Stun_adi
Ruleu silmek iin de DROP komutunu kullanmalsnz.DROP RULE Rule_Adi
1.9. Tablo Seviyeli Kstlamalar
Satr ve bavuru btnl ile veri tabanndaki verilerin tablo ierisinde ve tablolararasnda birbiriyle uyumlu olmas salanacaktr.
1.9.1. Stunlar Aras Check Constraint Oluturmak
Tablonuzda bu ilemin yaplaca stunlar varsa Check Constraint ile satr bilgilerinindoruluunu kontrol edecek bileenler tanmlamakla yapacanz ileri kolaylatrabilirsiniz.
rnek
Bir stok program yazldn dnn. Urunler adl tabloda rnlerle ilgili bilgilerinolduunu varsayn. UrunGirisTarihi, rnn depoya giri tarihinin, UrunCikisTarihi dernn depodan k tarihinin girildii stunlar olarak belirlensin. rnn depodan ktarihinin her zaman bo ve giri tarihinden byk olduunu garanti edecek bir CheckConstrainti tablo seviyeli olarak yle tanmlayabilirsiniz.
CREATE TABLE Urunler (UrunNo VARCHAR(10),UrunAd VARCHAR(200),UrunGirisTarihi DATETIME,UrunCikisTarihi DATETIME NULL,
CONSTRAINT chk_UrunCikisTarihi CHECK (UrunCikisTarihi IS NULL OR
UrunCikisTarihi >= UrunGirisTarihi) FOR UrunCikisTarihi)
8/14/2019 SQL Server 4
16/49
10
1.9.2. Foreign Key Constraint Oluturmak
Bir tablodaki bir stuna ait deerlerin, baka bir tablonun belli stunundan gelmesinidenetler. Bir tabloya girilebilecek deerleri baka bir tablonun bir belli alannda yeralabilecek veri grubu ile snrlandrmaya ve en nemlisi de ilikilendirmeye yarar.
Bu kstlaycy hem Management Studio hem de T-SQL kodu yazarakoluturabilirsiniz. Tabii ki veri tabannzda birden fazla tablo olmas gerekir.
Resim 1.5: TablolarManagement Studioda veri tabannzda bulunan tablolar iin yeni bir Database
Diagram oluturmanz ve bu tablolar oraya eklemeniz gerekir.
Resim 1. 6: Yeni veri taban diyagram oluturma
Diyagram oluturduunuzda ekrana Add Table iletiim kutusu gelecektir.
Resim 1. 6: Add Table iletiim kutusu
8/14/2019 SQL Server 4
17/49
11
Add Table iletiim kutusundan ilgili tablolar seip Add dmesine basarak diyagrama
ekleyiniz. Ekleme iiniz bitince Close dmesine basarak Add Table iletiim kutusunukapatnz.
Resim 1. 7: Diyagrama eklenmi tablolar
Sinif tablosundaki OgrNo alanna fareyle tklayp brakmadan Sinif_Bilgitablosundaki ilikilendirilecek alana kadar fareyi srkleyip braknz. liki gerekletirilmiolacaktr.
Tables and Columns iletiim kutusu ekrana gelecektir.
Resim 1. 8: Tables and Columns iletiim kutusu
8/14/2019 SQL Server 4
18/49
12
likilendirilecek alanlar burada size gsterilecektir. sterseniz ilikilendirilecek
alanlar alr liste kutularna tklayarak deitirebilirsiniz. OK dmesine basarak iletiimkutusunu kapatnz.
Yabancl anahtar ilikilendirilmesi yaplm olacaktr.
Resim 1. 9: Yabancl anahtar ilikilendirmesi
Yaptnz ilikilendirilme diyagram zerinde gsterilecektir.
Resim 1.10: likilendirmenin gsterimi
likilendirilmenin sonucunda, sonsuz iareti yabancl tarafn, anahtar iareti debirincil taraf gstermektedir.
Dier bir yntem olan T-SQLle tablo olutururken Foregin Key Constraint
tanmlamak iin aadaki genel yapy kullannz.
8/14/2019 SQL Server 4
19/49
13
Genel Yap
CREATE TABLE tablo_ad (Stun_adlar,CONSTRAINT const_ad FOREIGN KEY (stun_ad)REFERENCES diertablo_ad (stun_ad)
)
Oluturulmu olan tablo iin ise genel yap u ekildedir.
ALTER TABLE tablo_adADD CONSTRAINT cons_ad FOREIGN KEY (stun_ad)
REFERENCES diertablo_ad (stun_ad)
Managemet Studio ile oluturulan Foreign Key iin T-SQL kodu da aadaki gibidir.
ALTER TABLE SinifADD CONSTRAINT FK_Sinif_Bilgi_Sinif FOREIGN KEY (TcKimlikNo)REFERENCES Sinif_Bilgi (TcKimlikNo)
Yabanc anahtar tanmlanrken unutulmamas gereken nokta; yabanc anahtarn,referansta bulunan deerler deitike deimesi gereklilii vardr. Bunun iinde ForeignKey Constraint tanmlarken, birincil tabloda bir UPDATE (gncelleme) veya DELETE
(silme) ilemi gerekletirildiinde, yabanc tarafta nasl bir yol izlenecei CASCADE veyaNO ACTION deyimleri kullanlr. Ancak, bir Foreign Key Constraint, birincil taraftasilmeye msaade edebilmesi iin, yabanc taraftaki btn ilikili kaytlarn silinmi olmasartn arar.
fadenin genel kullanm u ekildedir:
ON {DELETE |UPDATE} {CASCADE |NO ACTION}
ON DELETE, bir birincil kayt silindii zaman yabanc kaytlarn ne yaplacanbelirtirken ON UPDATE birincil kayt silindii zaman, yabanc kaytlarn ne yaplacana
dair bir tanmlama girmek iin kullanlr. CASCADE, birincil kaytlardaki deiimin yabanckaytlara da yanstlacan belirtir. NO ACTION default olarak bu ayar geerlidir. ayetbirincil kayt siliniyorsa, ilikili yabanc kayt bulunmuyorsa msaade edilir. Ama ilikilikayt varsa, silinmesine msaade edilmez.
1.10. Constraintleri Dzenlemek
Constraintleri dzenlemenin en uygun yolu Managemet Studioyu kullanmaktr.Dzenleme ilemi T-SQL kodlaryla da gerekleebilir ancak, bu ilem iin birka aamaygerekletirmeniz gerekir.
8/14/2019 SQL Server 4
20/49
14
Management Studioda oluturulan Constraintleri dzenlemek iin zerinde fareyle
sa tklaynz. Alan yardmc men ile yeni bir Constraint oluturabilir, dzenleyebilir,adn deitirebilir veya silebilirsiniz.
Resim 1.11: Constrainti dzenlemek
1.11. T_SQL ile Tablodaki Constraintlerin Gsterimi
Tabloda oluturduunuz Constraintleri grebilmek iin sorgu ekrannda
sp_helpconstraint sistem sakl prosedrn kullanmanz gerekir. Bylece tanmlkstlayclar ve hangi tr olduklarn grebilirsiniz.
Resim 1.12: Constraintlerin gsterimi
8/14/2019 SQL Server 4
21/49
15
1.12. Constraintleri Silmek
Tanmlanan bir Constrainti Management Studioda mevcut Constraint zerindefareyle sa tklayp alan menden Delete komutunu vererek silebilirsiniz.
Resim 1.13: Constraint silme
Bu ilemi T-SQL kodu yazarak da yapabilirsiniz.
ALTER TABLE tablo_adDROP CONSTRAINT const_ad
rnek:
ALTER TABLE SinifDROP CONSTRAINT CK_Sinif
1.13. Constraintlerin Kullanlp Kullanlmamas
Veri tabannda tanml kstlayclarn yaplan ileme gre baz zamanlardakullanlmas istenmeyebilir. Bu gibi durumlarda kstlayclarn devre d braklmasgerekir.
Bir Constrainti devre d brakmak iin,
ALTER TABLE tablo_adNOCHECK CONSTRAINT const_ad
eklinde yazlmaldr.Tm Constraintleri devre d brakmak iin ise,
ALTER TABLE tablo_adNOCHECK CONSTRAINT ALL
yazlmaldr.
8/14/2019 SQL Server 4
22/49
16
UYGULAMA FAALYETlem Basamaklar neriler
Yeni bir veri taban oluturunuz. Object Explorerda Databases klasr
zerinde fareyle sa tklayarak alanmenden New Database komutunu veriniz.
Veri tabanna bir isim veriniz. Veri tabannn ad Faaliyet-4 olabilir.
Yeni bir sorgu oluturunuz. simgesine tklayabilirsiniz.
Oluturduunuz bu sorgudaKitaplar adnda bir tablooluturunuz.
CREATE TABLE komutunukullanabilirsiniz.
Tablonun stunlarn belirleyiniz.
Stun adlar ve veri trleri iin;Stok_Kodu int ,Kitap_Adi VARCHAR (50),Yazar VARCHAR(50),Y_Evi VARCHAR(50)eklinde bir tanmlama yapabilirsiniz.
Bu tablo iin Birincil anahtar olarakstok kodunu belirleyiniz.
CONSTRAINT PKC_Stok_Kodu PRIMARY
KEY(Stok_Kodu)
Stok kodunun deerinin sfrdanbyk olmasn salayan bir CheckConstraint belirtiniz.
CONSTRAINT CK_StokKod
CHECK(Stok_Kodu>0)
Tabloyu Execute ediniz. Klavyeden F5 tuuna basabilirsiniz. Hata
olmadndan emin olunuz. Tables klasrnde tablonuzun
olutuunu grnz. Tables >> Refresh
kinci bir sorgu oluturunuz. New Query simgesine tklayabilirsiniz.
Oluturduunuz bu rg iin deKitapBilgi adnda bir tablooluturunuz.
CREATE TABLE
Tablonun stunlarn belirleyiniz.
Stun adlar ve veri trleri iin;Stok_Kodu int ,Kitap_Kodu int,BasimYili VARCHAR (50),ISBNno VARCHAR(13),SayfaSayisi int,eklinde bir tanmlama yapabilirsiniz.
kinci tablonun birincil anahtarn
belirleyiniz.
CONSTRAINT PKC_StokK PRIMARY
KEY(Stok_Kodu)
UYGULAMA FAALYET
8/14/2019 SQL Server 4
23/49
17
ISBNno stununa girilecek
numaralarn birbirinden farklolmas iin bir kstlayc yaznz.
CONSTRAINT UC_ISBNno
UNIQUE(ISBNno)
ISBN numarasnn mutlaka 13karakter olarak girilmesinisalaynz.
CONSTRAINT CK_ISBN
CHECK(LEN(ISBNno)=13)
kinci tabloda da Stok kodununmutlaka sfrdan byk girilmesinisalaynz.
CONSTRAINT CK_StokKCHECK(Stok_Kodu>0)
KitapBilgi tablosunu Kitaplartablosuna Stok_Kodu stunuzerinden balayacak bir yabancl
anahtar oluturunuz. Bununlaberaber birinci tablodan bir kaydnsilinmesi veya deitirilmesidurumlarnda ikinci tablodaki balstunda etkilenecek ekilde birkstlayc tanmlaynz.
CONSTRAINT
FK_KitapBilgi1_Kitaplar1
FOREIGN KEY(Stok_Kodu)
REFERENCES Kitaplar1(Stok_Kodu)
ON UPDATE CASCADE
ON DELETE CASCADE
Tablonuzu Execute ediniz. Hataolmadndan emin olunuz.
F5
Tablolara kaytlar girerek hazrlanankstlamalarn almasn grnz.
8/14/2019 SQL Server 4
24/49
8/14/2019 SQL Server 4
25/49
19
RENME FAALYET - 2
Trigger ve Sakl prosedr tanmlamay, sorgu ierisinde kullanabilmeyireneceksiniz.
Programlama dillerindeki prosedrlerin kullanm amalarn aratrnz.
2. TRIGGER VE SAKLI PROSEDRLER
2.1. Trigger
Triggerlar veri taban ierisindeki tabloda belirli olaylar meydana geldiizaman alan kk kod paralardr. Bu olaylar ise aada listelenmitir.
Insert ( Ekleme ) Update ( Gncelleme ) Delete ( Silme )
Yani daha ak bir deyimle bir tabloya yeni bir kayt eklendiinde, bir kaytsilindiinde veya bir kayt deitirildiinde yaplmas istenen olaylar iin yazlabilir.
Trigger yazm ekli ;
Create Trigger trigger_ad
On tablo_adFor Update | Insert | DeleteAsSQL kodlar
NOT: Triggerlar query analizerda yazlp altrlarak kaydedilebileceigibi, Enterprise Managerda da yazlabilir. Enterprise Managera girip hangi tabloiin trigger yazmak istiyorsak onun zerinde sa tua tklayalm. Karmza kanmenden All Tasks/Manage triggers seenei seelim. Karmza gelen penceredetriggerlarmz yazabiliriz.
RENME FAALYET-2
AMA
ARATIRMA
8/14/2019 SQL Server 4
26/49
20
rnek: Okuldaki bir snfa bir renci geldiinde snftaki renci saysnn
bir artrlmas gerekir. Aadaki trigger da bu ilemi gerekletirmektedir.Bu soru iin bilinmesi gerekli olan nokta udur. Siz tablonuza yeni bir kayt eklemekistediinizde bu kaydn bir kopyas inserted tablenda tutulur.
CREATE TRIGGER yeni_ogrenci ON [ogrenci]FOR INSERTASdeclare @sayi intselect @sayi=ogno from insertedupdate ogno set sayi=sayi+1 where ogrenci.ogno=@sayi
rnek: Okuldaki bir rencinin snfn deitirdiini dnelim. O zamansnf tablosunda iki ilem gereklemelidir. rencinin ayrld snftaki sayalanndaki deer bir azaltlmal, yeni katld snftaki deer ise bir artrlmaldr.
NOT: Bu soru iin bilinmesi gerekli olan nokta udur: Siz tablonuzdaki birkayt zerinde deiiklik yaptnzda bu deiiklie ait yeni kayt insertedtablosunda, kaydn deitirilmemi hali ise deleted tablosunda tutulur.
CREATE TRIGGER [ogrenci_degis] ON [sinif]FOR UPDATEASdeclare @eski int, @yeni intselect @eski=ogno from deletedselect @yeni=ogno from insertedupdate ogsay set sayi=sayi+1 where ogno=@yeniupdate ogsay set sayi=sayi-1 where ogno=@eski
rnek: Snf tablosundaki kaytlardan biri silindiinde bu kaydn kaytlolduu snfa ait say alanndaki deeri bir azaltan bir trigger yazalm.
CREATE TRIGGER ogrenci_sil ON [sinif]FOR DELETEASdeclare @sayi intselect @sayi=ogno from deletedupdate ogsay set sayi=sayi-1 where snf.ogno=@sayi
mailto:s%EF%BF%BDf.ogno=@sayimailto:s%EF%BF%BDf.ogno=@sayimailto:s%EF%BF%BDf.ogno=@sayimailto:s%EF%BF%BDf.ogno=@sayimailto:s%EF%BF%BDf.ogno=@sayimailto:s%EF%BF%BDf.ogno=@sayimailto:il.ilno=@sayi8/14/2019 SQL Server 4
27/49
21
2.2. Stored Procedure
Bir amaca ulamak iin takip edilen yol ve yntem tanmndan yola karak birprosedr, herhangi bir ilevi yerine getirmek iin yazlan kodlarn bir paket ierisindetutulmu hali demektir.
Bir prosedr baka bir prosedr tarafndan arlabilir. Prosedrlerin oluturulmasnnnedeni, ska yaplan ilemlerin bir defa yazlarak program akna gre tekrar tekrarkullanlmasn salamaktr. Bylece, kod yazm ve programlama kolaylatrlm olur.
Stored Procedureler (SP) dier programlama dillerindeki fonksiyonlara (function)denk gelmektedir. Oluturulan bir Stored Proceduree ana programdan bir komut ile
ulalabilir.
1980li yllarda Sybase SQL Server ile kullanma giren Stored Procedureler,sorgularn nceden derlenmesi ve veri taban ynetim sistemiyle ayn ortamda almasndandolay hzl sonu vermesi en byk zelliidir. Bir Stored Procedure (SP) oluturulur vesunucuda saklanr. Her ihtiya duyulduunda defalarca arlarak ileme tabi tutulabilir.
Oluturulma ekillerine gre Stored Procedureler drt eittir.
2.2.1. Extended Stored Procedure
Genellikle dll dosya eklinde derlenmi prosedrlerdir. T-SQL dndaki dillerdeyazlrlar. Adlar xp_ ile balar. Ama sp_ ile balayan prosedrler de vardr. Master veritabannda tutulurlar ve tam adlar yazlarak kullanlr.
master.dbo.xp_cmdshell gibi.
Resim 2.1: Extended Stored Procedureler
2.2.2. CLR Stored Procedure
Herhangin bir CLR programlama dilini kullanarak Stored Procedure oluturulabilir. T-SQLin desteklemedii kod yazmlarnda bu programlama dilleriyle kodlar yazlr. Gvenlikve denetim gibi konularda CLR Stored Procedureler SQL Server iin avantaj salar.
8/14/2019 SQL Server 4
28/49
22
2.2.3. System Stored Procedure
sp_ ile balayan prosedrlerdir. Master veri tabannda tutulurlar. Extended StoredProcedurede olduu gibi tam adlarnn yazlmas zorunluluu yoktur. Sadece adn yazmakyeterlidir.
2.2.4. Kullanc Tanml Stored Procedure
Programcnn yazd prosedrlerdir. Geerli olduklar yere gre tiptir.
Geici Yerel
Uzak
2.3. altrlma Aamalar
Bir Stored Proceduren altrlma aamalar herhangi bir Querynin altrlmaaamalaryla ayndr.
Stored Proceduren bileenleri paralara ayrtrlr (Parsing). Veri taban ierisinde table, view gibi baka nesnelere gnderme yapan
referanslar varsa, geerli olup olmadklar (nesnenin ve iznin olup olmamas)kontrol edilir.
Kontrollerden geen Stored Proceduren ad sysobjects tablosuna, kodlar isesyscomments tablosuna kaydedilir (Compilig).
Bu ilemlerle birlikte derleme ilemi yaplr. Normalizasyon ilemleri olarak daanlan bu ilemler sonucunda, aa emas elde edilir. Bu ema dasysprocedures tablosunda saklanr.
Stored Procedure herhangi bir anda arldnda, ilk kez alyorsa bu ilemlergerekletirilir. lk defa arlmyorsa, kontrol, sorgulama aac oluturmailemleri yaplmaz ve olduka hzl bir ekilde Stored Proceduren derlenmihali alr. Bundan dolay Stored Procedureler derlenen nesnelerden biri olarakbilinir.
2.4. Stored Procedure Oluturmak
Stored Proceduren oluturulma ekli aadaki gibidir.
CREATE PROC [ EDURE ] prosedr_adAS
T-SQL ifadeleriGO
Oluturacanz Stored Procedureler ile sistemin Stored Procedurelerinin
karmamas iin prosedr adlarnn nne U harfini ekleyiniz. Bylece, oluturduunuzStored Procedureleri sistem Stored Procedurelerinden ayrt etmi olursunuz.
8/14/2019 SQL Server 4
29/49
23
Stored Procedure oluturabilmek iin sysadmin, db_owner veya dll_admin rolne
sahip olmanz gerekir.Bir Stored Procedure CREATE DEFAULT, CREATE PROCEDURE, CREATE
RULE, CREATE TRIGGER ve CREATE VIEW ifadelerini ieremez. Ancak, her nesnedenveri alabilir.
rnek:
Bir snfta bulunan rencilerin, renci numaralar, adlar, soyadlar ve finalnotlar bir tabloda tutulmaktadr.
Resim 2. 2: Final_not tablosu
Final notlar 55ten byk olan notlar gsterecek bir Stored Procedureoluturmak istediiniz dnnz.
Veri tabannzn Programmability klasrnn solundaki + iaretinetkladnzda alan Stored Procedures klasr zerinde farenizle sa tklaynz.
Yeni bir Stored Procedure oluturabilmeniz iin New Stored Procedurekomutunu tklatnz.
Resim 2. 3: New Stored Procedure komutu
8/14/2019 SQL Server 4
30/49
24
Komutu tkladnzda Stored Proceduren genel yapsn bulunduran bir
Query sayfas alacaktr.
Resim 2. 4: Stored Procedure yapsnn hazr olarak verildii Query sayfas
Stored Proceduren yaps iin gerekli yazm kural verilmiti. Ekrana gelenQuery sayfasnda size gerekli olmayacak satrlar silebilir veya Querynintamamn silip kendiniz Stored Procedure oluturabilirsiniz.
Final notu 55ten byk olan notlar grntleyecek satrlar Resim 2.5teki gibiyazabilirsiniz.
Resim 2. 5: Stored Proceduren oluturulmas
F5 tuuna basarak oluturduunuz Stored Proceduren doruluunu snaynzve hata varsa dzeltiniz.
Oluturduunuz Stored Procedure grmek iin Stored Procedures zerindefareyle sa tklayarak Refresh komutunu veriniz.
8/14/2019 SQL Server 4
31/49
25
Resim 2. 6: Stored Proceduren grlmesi
Oluturulan Stored Procedure altrabilmek iin veri tabannz zerinde faresa tuuyla alan menden New Query komutunu veriniz.
Resim 2. 7: New Query komutunun verilmesi
Tablonuzdaki verilerin tamamn ve final notu 55ten byk olan rencilerigrebilmek iin Resim 2.8deki gibi ilgili kodlar yaznz.
Resim 2. 8: lgili kodlar
EXEC komutu oluturduunuz Stored Procedure altracak olan komuttur.EXECten sonra yazlan ifade ise oluturduunuz Stored Proceduren addr.Yazdnz bu Queryi altrarak (F5) sonucu grebilirsiniz.
8/14/2019 SQL Server 4
32/49
26
Resim 2. 9: Stored Proceduren altrlmas ve sonularn gsterimi
2.4.1. NOCOUNT Parametresi
Sorgunun altrlmas sonucunda ka kaydn bu ilemden etkilendiini gsterir veyagstermez. SET NOCOUNT ON eklinde sorguya yazlrsa ka kaydn b u ilemden
etkilendii gsterilmeyecektir. SET NOCOUNT OFF eklinde bir sorgu yazmndaysa builemden ka kaydn etkilendii gsterilecektir.
Varsaylan olarak bu parametre OFF konumundadr. Yani etkilenen kaytlargsterilmektedir. Yukardaki Stored Procedure oluturma rneinde sonularn gsterildiiResults sekmesinin yannda bulunan Messages sekmesinde etkilenen kaytlar grebilirsiniz.Eer, etkilenen kaytlarn gsterilmesini istemiyorsanz Stored Procedure olutururkenSET NOCOUNT ON satrn eklemelisiniz.
Resim 2.10: Etkilenen kaytlarn gsterilmesi
2.4.2. Stored Proceduren Kullanm Hakk
Stored Procedure oluturduktan sonra altrlabilmesi iin kullanclara izinverilmi olmas gerekir. Eer, bir kullancnn izni varsa o Stored Procedure
kullanabilecektir.
8/14/2019 SQL Server 4
33/49
27
zin verme yetkileri DENY ve GRANT ile salanmaktadr. DENY ile belirtilen
kullanc Stored Procedure kullanamayacaktr. GRANT ile belirtilen kullancysa StoredProcedure kullanabilecektir.
DENY ON UNotlar TO guest1GRANT ON UNotlar TO ali
2.5. Deiiklik Yapmak
Stored Procedurelerde deiiklik yapmak ALTER ile gerekleir.
Genel Kullanm
ALTER PROC [EDURE] prosedr_adAS
T-SQL ifadeleriGO
Bir Stored Procedurede deiiklik yapabilmek iin nce kaynak kodunun alnmas vebir Query ekranna kopyalanp dzenlenmesi gerekir.
rnek:
Stored Procedure oluturmayla ilgili yaplan rnekte final notlar 55ten bykolan notlar gstermektedir. Bu prosedr final notlar 55 ve 55ten kk olanfinal notlar eklinde deitirelim.
Oluturulmu bir Stored Procedurede deiiklik yapabilmenin yani kaynakkodlarn alabilmenin iki yolu vardr:
Management Studioda oluturulmu Stored Procedure zerinde fareylesa tklanarak alan menden Modify komutunu vermek,
sp_helptext prosedr_ad komutunu kullanarak elde edilen kodlarkopyalayp yeni bir Querye yaptrmaktr.
2.5.1. Management Studio ile Deiiklik Yapmak
Oluturduunuz UNotlar adndaki Stored Procedure zerinde fareyle satklatnz ve alan menden Modify komutunu veriniz.
8/14/2019 SQL Server 4
34/49
28
Resim 2.11: Modify komutunun verilmesi
Modify komutunu verince kodlar bir Query sayfas eklinde ekrana gelecektir.zerinde gerekli deiiklikleri yapnz ve Execute (F5) ediniz.
Resim 2.12: Dzenlenmi Stored Procedure
Execute ileminin sorunsuz bir ekilde gerekletiini Messages penceresindegrebilirsiniz.
Resim 2.13: Execute ileminin sonucu
Yeni bir Query ekran anz ve Stored Proceduren almas iin gerekli koduyaznz.
Resim 2.14: Stored Proceduren altrlmas
8/14/2019 SQL Server 4
35/49
29
UNotlar Stored Procedure iletilecek ve sonular Results penceresinde size
gsterilecektir.
Resim 2.15: Sonularn gsterimi
2.5.2. sp_helptext fadesi ile Deiiklik Yapmak UNotlar Stored Procedurendeki kodlar grebilmek iin yeni bir Queryde
sp_helptext ifadesini Resim 2.16daki gibi kullannz.
Resim 2.16: fadenin kullanm
UNotlar Stored Proceduredeki kodlar Results penceresinde sizegsterilecektir.
Resim 2.17: Kodlarn gsterilmesi
Kodlar seerek kopyalaynz ve Query sayfasndaki sp_helptext ifadesinisilerek yaptrnz.
Resim 2.18: Kodlarn Querye tanmas
8/14/2019 SQL Server 4
36/49
30
Kodlardaki CREATE komutunu silerek ALTER komutunu yaznz.
Resim 2.19: ALTER komutunun yazlmas
Stored Procedure altrnz (F5). Execute ileminin sorunsuz bir ekildegerekletiini Messages penceresinden grebilirsiniz.
Resim 2.20: Execute ileminin sonucu
Yine, Query sayfasnda yazlan Stored Procedure kodlarn siliniz ve sonularngsterilmesi iin gerekli olan kodlar yaznz.
Resim 2.21: Stored Proceduren altrlmas
Elde edilen sonular Results penceresinde grebilirsiniz.
Resim 2.22: Sonularn Results penceresinde gsterilmesi
Bir Stored Procedurede ok fazla deiiklikler yaplyorsa EXEC komutuylaaltrlrken yeniden derlenmesi istenebilir. Bunun iin, RECOMPILE kullanlmaldr.
rnek:EXEC UNotlar WITH RECOMPILE
8/14/2019 SQL Server 4
37/49
31
2.6. Stored Procedure Silmek
Var olan bir Stored Procedure silmek iin DROP komutunu kullanmak gereklidir.DROP komutundan sonra Stored Proceduren sahibinin ad ve Stored Proceduren adyazlmaldr.
Genel Kullanm
DROP PROC sahip.prosedr_ad
rnek:DROP PROC dbo.UNotlar
2.7. Deer Alan Stored Procedureler
Stored Procedurelerin daha etkin kullanlabilmesi ve ilevsel bir hale gelebilmesi iindardan deer almalarna ihtiya duyulur. Bu nedenle girdi parametreleri (Input Parameter)kullanlr.
Stored Procedurenin ald deer Queryden gelen deerdir. Gnderilen deerikarlayacak bir deiken Stored Procedurede tanmlanmaldr.
rnek:
Bir renciye ait 3 not bilgisi Queryde ilk deerleri atanarak not ortalamalarhesaplanacaktr. Hesaplanan not ortalamasna gre rencinin baarl olupolmad Stored Procedurede belirlenecek ve mesaj olarak yazdrlacaktr.Bunun iin, yeni bir sorgu sayfas anz ve rencinin 3 notunun tutulacadeikenleri tanmlayp ilk deerlerini Resim 2.23teki gibi veriniz.
Resim 2.23: Deikenlerin tanmlanmas ve ilk deerlerinin verilmesi
lk deerleri verilen deikenlerin ortalamasn @ortalama deikeninehesaplatp Resim 2.24teki gibi aktarnz.
Resim 2.24: Ortalamann hesaplanmas
8/14/2019 SQL Server 4
38/49
32
Elde edilen deeri oluturacanz Stored Proceduree EXEC komutuyla Resim
2.25teki gibi gnderiniz. Bylece hem deer gnderilecek hem de StoredProcedure altrlm olacaktr.
Resim 2.25: Elde edilen deerin Stored Proceduree gnderilmesi
Hesaplamalarn yaplaca Stored Procedure yazmak iin yeni bir Querysayfas anz. Stored Proceduren adn UHesapla olarak belirterekortalamay karlayacak deikeni tanmlaynz ve baarnn belirlenecei ifyapsn yaznz.
Resim 2.26: UHesapla adndaki Stored Proceduren oluturulmas
Yazdnz Stored Procedure F5 ile altrarak doruluunu kontrol ediniz.
Resim 2.27: Execute ileminin sonucu
Daha sonra ilk yazdnz sorgunuza dnerek altrnz. UHesapla StoredProcedure altrlacak ve sonucu Messages penceresinde gsterilecektir.
Resim 2.28: Sonucun gsterilmesi
Stored Proceduree gelen parametrelerin istee bal olmas istenebilir. Bu gibidurumlarda Stored Procedurede tanmlanan deikene default deer atanmas yaplr. StoredProceduree gelen parametreye deer atanmazsa, tanmlanan deikene atanan default deerileme tabi tutulur. Stored Procedurede bir default deer atayacaksanz bu deer, bir sabitolmas gerekir.
8/14/2019 SQL Server 4
39/49
33
rnek:
Bir snftaki rencilerin bilgilerinin tutulduu bir tabloda renci adlarnnierisinde a harfi geen rencileri gsteren bir Stored Procedure yleyazlmaldr.
Resim 2.29: renci bilgilerinin tutulduu tablo
Resim 2.30: Ogr_Ara Stored Procedure
Stored Procedurede tanmlanan ara deikeni Queryden bir deer gelmesede NULL deerini alacak ve ilem gerekleecektir.
Queryden renci adlarnn ierisinde a harfi olan rencileri grmek iinResim 2.31deki gibi kod satrn yaznz ve altrnz.
Resim 2.31: Queryden deer gnderilmesi
Ogr_Ara a eklindeki yazm ile de Stored Procedure alacaktr. Sonular Results penceresinde grebilirsiniz.
8/14/2019 SQL Server 4
40/49
34
Resim 2.32: Sonularn gsterilmesi
Stored Proceduree deer gnderilmeseydi Messages penceresindeCommand(s) completed successfully. mesajn grecektiniz.
2.8. Deer Alp-Veren Stored ProcedurelerDeer alp-veren sakl prosedrler, Queryden gnderilen deerleri alp istenilen
ileme tabi tuttuktan sonra elde edilen sonucu tekrar Querye gnderen prosedrlerdir. Builem iin OUTPUT parametresi kullanlr.
rnek
Tanmlanan ve ilk deerleri verilen iki sayy Stored Proceduree gndererektoplamlarn Stored Procedurede yapp sonucu gnderildii yerde grntleyen kodlaryazmak iin aada verilen admlar uygulaynz.
Yeni bir Query sayfas anz. Stored Proceduren adn UTopla olarakbelirleyiniz. Queryden gelecek deerler iin kullanlacak iki say deikeni,toplamlar ve geriye deer dndrmesi iin toplam deikenini tanmlaynz.
Resim 2.33: Stored Procedurenin oluturulmas ve deikenlerinin tanmlanas
Gelen saylar tpl deikeninde toplatnz.
Resim 2.34:Saylarn toplanmas ve deikene aktarlmas
Oluturduunuz prosedr altrnz ve hata olmadndan emin olunuz.
8/14/2019 SQL Server 4
41/49
8/14/2019 SQL Server 4
42/49
36
2.9. RETURN Deyimi
Prosedrden tek bir tamsay deer dndrmek iin bir baka seenek olarak RETURNifadesi kullanlabilir. Bu ekilde OUTPUT parametresini hem prosedr iinde hem deprosedrn arld yerde tanmlamak zorunda kalnmadan dorudan deer dndrlebilir.
Bir uygulamada hem RETURN hem de OUTPUT parametresi ayn anda kullanlabilir.
rnek:Deer alp veren Stored Procedureler rneini RETURN deyimi ile de yaplabilir.
rnei adm adm uygulaynz.
Yeni bir Query sayfas anz. Stored Proceduren adn URet_Topla olarakbelirleyiniz. Queryden gelecek deerler iin kullanlacak iki say deikeni iinStored Procedurede iki deikeni tanmlaynz.
Resim 2.39: Stored Procedurenin oluturulmas ve deikenlerinin tanmlanas
Yaplacak ilem sonucunda elde edilen deerin Querye gnderilmesi iinRETURN deyimiyle beraber yaplacak ilemi belirtiniz.
Resim 2.40: RETURN deyimi ve geriye dnecek deerin belirtilmesi
Oluturduunuz Stored Procedure altrarak hata olmadndan eminolunuz. Hata yoksa Stored Procedure oluturulmu demektir.
Yeni bir Query sayfas anz. Kullanlacak deikenleri belirleyiniz ve ilkdeerlerini ataynz.
Resim 2.41: Deikenlerin tanmlanmas ve ilk deerlerinin verilmesi
8/14/2019 SQL Server 4
43/49
8/14/2019 SQL Server 4
44/49
38
UYGULAMA FAALYET
lem Basamaklar neriler
Yeni bir veri taban oluturunuz. Ad UcretHesaplama olabilir.
Yeni bir sorgu oluturunuz. New Query simgesine tklayabilirsiniz.
Stored Proceduren adnbelirleyiniz.
Stored Proceduren ad Yevmiye Hesaplaolabilir.
Bir iinin alma saati ve saatcreti verildiinde alaca gnlkyevmiye tutarn gsterecek birStored Procedure yazlacaktr.Queryden gelecek deerleri
karlayacak ve sonucu geridndrecek deikenleritanmlaynz.
CREATE PROC UYemiyeHesap (@CSaat smallint,
@SUcret int,
@Yevmiye float OUTPUT
)
Eer iinin alma saati 8 saat ve 8saatten kk ise alaca yevmiyetutar alma saati ve saat cretininarpmyla bulunacaktr. Bunun iingerekli art yaznz.
AS
IF (@CSaat8)BEGIN
SELECT @Yevmiye=(@CSaat*@SUcret)+
((@CSaat*@SUcret)*0.05)
END
GO
Queryi altrnz ve hataolmadndan emin olunuz.
F5
UYGULAMA FAALYET
8/14/2019 SQL Server 4
45/49
39
Yeni bir Query daha oluturunuz New Query simgesine tklayabilirsiniz.
Yevmiye hesab iin kullanlacak ikideikeni ve toplam tutarntutulaca deikeni tanmlaynz.
DECLARE @Calisma_Saati smallint
DECLARE @Saat_Ucreti int
DECLARE @Isci_Yevmiye float
lk deerlerini ataynz.SELECT @Calisma_Saati=10
SELECT @Saat_Ucreti=5
SELECT @Isci_Yevmiye=NULL
EXEC komutuyla, StoredProceduree gndereceinizdeikenleri ve sonucu alacakIsci_Yevmiye deikenini de
OUTPUT parametresi ile yaznz.
EXEC UYevmiyeHesap
@Calisma_Saati,@Saat_Ucreti,
@Isci_Yevmiye OUTPUT
Stored Procedureden dnen deeride Results penceresinde grmek iinSELECT komutuyla yazdrnz.
SELECT 'Yevmiyesi =',
@Isci_Yevmiye
Sorgunuzu altrnz ve hataolmadndan emin olunuz.
F5
Sonucu Results penceresindegrnz.
Resim 2.45: Sonucun grntlenmesi
8/14/2019 SQL Server 4
46/49
40
LME VE DEERLENDRMEAadaki sorular dikkatlice okuyarak doru/yanl seenekli sorularda uygun
harfleri yuvarlak iine alnz. Seenekli sorularda ise uygun kk iaretleyiniz. Bolukdoldurmal sorularda boluklara uygun cevaplar yaznz.
1. Bir ilevi yerine getirmek iin yazlan kodlarn oluturduu program parasna SaklProsedr denir. (D/Y)
2. Aadakilerden hangisi sakl prosedr eidi deildir?A) Extended B) CLR C) Model D) System
3. Sakl prosedrleri altrrken bileenlerini paralara ayrtrmailemine.denir.
4. Prosedrn ad sysobjects tablosuna .den getikten sonra kaydedilir.
5. Sakl prosedr oluturma komutu.dr.
6. Sakl prosedr oluturabilmek iin aadakilerden hangi role sahip olunmasgerekmez?
A) userB) sysadminC) db_ownerD) dll_admin
7. Bir stored procedure her nesneden veri alamaz.(D/Y)
8. Oluturulan sorgunun altrlmas sonucunda kaytlarn b u ilemden etkilenipetkilenmediini gsteren parametresidir.
9. .ile yetki verilen kullanc Stored Procedure kullanabilecektir.
10. Stored Procedure silmek iin DROP komutu kullanlr. (D/Y)
DEERLENDRME
Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerekkendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt yaadnzsorularla ilgili konulara geri dnerek tekrar inceleyiniz. Tm sorulara doru cevapverdiyseniz dier renme faaliyetine geiniz.
LME VE DEERLENDRME
8/14/2019 SQL Server 4
47/49
41
MODL DEERLENDRMEPERFORMANS TEST (YETERLK LME)
Modl ile kazandnz yeterlii, retmeniniz ilem basamaklarna gre 0 ile 4 puanarasnda olacak eklinde deerlendirecektir.
Deerlendirme ltleri Puan
1. Veri taban oluturabilme2. Sorgu oluturabilme3. T-SQL diliyle tablo oluturabilme
4. Stunlar veri trleriyle beraber tanmlayabilme5. Birincil anahtar oluturabilme6. CHECK CONSTRAINT oluturabilme7. Sorguyu altrabilme8. UNIQUE CONSTRAINT oluturabilme9. CHECK CONSTRAINT ile fonksiyonlar kullanabilme10. Yabancl anahtar oluturabilme11. likili tablolarda gncelleyebilme ve silme izinlerini yazabilme12. Sakl prosedr oluturabilme13. Sakl prosedrde hesaplayabilme14. art cmlecikleri yazabilme15. Deiken tanmlayabilme16. Deiken veri trlerini belirleyebilme17. Deikenlere ilk deer atayabilme18. EXEC komutunu kullanabilme19. OUTPUT parametresini kullanabilme20. Elde edilen sonucu grntleyebilme
Toplam (100 puan olabilir)
DEERLENDRME
Yaptnz deerlendirme sonucunda eksikleriniz varsa renme faaliyetlerinitekrarlaynz.
Modl tamamladnz, tebrik ederiz. retmeniniz size eitli lme aralaruygulayacaktr, retmeninizle iletiime geiniz.
MODL DEERLENDRME
8/14/2019 SQL Server 4
48/49
42
CEVAP ANAHTARLARIRENME FAALYET-1 CEVAP ANAHTARI
1. Veri btnl2. D kk3. C kk4. Kst5. Yanl6. Doru7. Doru
8. Check Constraint9. Delete10. NOCHECK
RENME FAALYET-2 CEVAP ANAHTARI
1. Doru2. C kk3. Parsing4. Kontrol5. CREATE PROC6. A kk7. Yanl8. NOCOUNT9. GRANT
10. Doru
CEVAP ANAHTARLARI
8/14/2019 SQL Server 4
49/49