SQL Server 4

  • 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=@sayi
  • 8/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