imHalal Toplist , Toplist , site ekle , google site ekle , Link ekle , tr.gg , imhalal.tr.gg , google dizin toplist a a

55

Untitled Document

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
-->
</style>
</head>

<body>
<p class="style1">--CONSTRAINT LER(KISITLAYICILAR)<br />
--Veri &uuml;zerindeki mant&#305;ksal s&#305;n&#305;rlamalara k&#305;s&#305;t denir. E&#287;er tablolarda s&uuml;tunlar &uuml;zerinde k&#305;s&#305;tlama uygulanacaksa gerekli constraint t&uuml;r&uuml; kullan&#305;larak i&#351;lem ger&ccedil;ekle&#351;tirilir.</p>
<p class="style1">-- Constraint T&uuml;rleri<br />
--1. Primary Key Constraint<br />
--Birincil anahtar k&#305;s&#305;tlamas&#305;d&#305;r. Ayn&#305; olmayan de&#287;erler girilmesini sa&#287;lar. Her tablonun en fazla 1 adet Primary Key Constraint tan&#305;mlanabilir.</p>
<p class="style1">--Tablo tasar&#305;m a&#351;amas&#305;nda birincil anahtar tan&#305;mlanm&#305;&#351; olmas&#305; gerekir. <br />
&Ouml;rnek:<br />
CREATE TABLE OKUL(<br />
OgrNo int,<br />
Adi varchar(15),<br />
Soyadi varchar(20),<br />
Sinifi varchar(10),<br />
TcKimlikNo varchar(11),<br />
CONSTRAINT PKC_OgrNo PRIMARY KEY (OgrNo)<br />
)<br />
--E&#287;er tablo olu&#351;turulmas&#305; esnas&#305;nda Primary Key olu&#351;turulmam&#305;&#351;sa daha sonra Primary Key Constraint &#351;u &#351;ekilde olu&#351;turulur. <br />
ALTER TABLE OKUL<br />
ADD CONSTRAINT PKC_OgrNo PRIMARY KEY(OgrNo)</p>
<p class="style1">--2. Unique Constraint<br />
--Alan i&ccedil;erisine ayn&#305; bilginin birden fazla girilmesini engelleyen k&#305;s&#305;tlay&#305;c&#305;d&#305;r. Daha &ouml;nce olu&#351;turulmu&#351; bir tabloya unique constraint &#351;u &#351;ekilde eklenir:<br />
ALTER TABLE Okul<br />
ADD CONSTRAINT UC_TcKimlik UNIQUE (TcKimlikNo)</p>
<p class="style1">--3. Default Constraint<br />
--Bir tabloya veri giri&#351;i esnas&#305;nda alan i&ccedil;in varsay&#305;lan bir de&#287;er atamay&#305; sa&#287;lar.<br />
--Daha &ouml;nce olu&#351;turulmu&#351; bir tabloya Default Constraint &#351;u &#351;ekilde eklenir.<br />
ALTER TABLE Okul<br />
ADD CONSTRAINT DC_Sinif Default 11 For Sinifi</p>
<p class="style1">--4.Check Constraint<br />
--Belirtilen alana istenilen &#351;arta g&ouml;re de&#287;er girilmesini sa&#287;lar.<br />
--&Ouml;rne&#287;in, Okul tablosundaki OgrNo alan&#305;na 0 dan b&uuml;y&uuml;k bir de&#287;er girilmesi &#351;art&#305; uygulayal&#305;m.</p>
<p class="style1">ALTER TABLE Okul<br />
ADD CONSTRAINT CK_OgrNo CHECK(OgrNo&gt;0)</p>
<p class="style1">--&Ouml;rnek: Urunler tablosunda CikisTarihi alan&#305;na girilen tarih de&#287;eri ya bo&#351; olmal&#305; ya da GirisTarihi alan&#305;na girilen de&#287;erden sonra olmal&#305;.<br />
CREATE TABLE Urunler(<br />
UrunNo int,<br />
UrunAdi varchar(10),<br />
GirisTarihi datetime,<br />
CikisTarihi datetime,<br />
CONSTRAINT chk CHECK(CikisTarihi is null or CikisTarihi&gt;=GirisTarihi)<br />
)</p>
<p class="style1">--5. Foreign Key Constraint<br />
--Foreign Key : Bir tablodaki bir alan ba&#351;ka bir tabloda birincil anahtar ise bu alan Foreign Key olarak tan&#305;mlan&#305;r.<br />
--Tablodaki bir alan Foreign Key olarak tan&#305;mlanm&#305;&#351;sa, bu, verisini birincil anahtar oldu&#287;u di&#287;er tablodan al&#305;yor demektir. Birincil anahtar olarak tan&#305;mland&#305;&#287;&#305; tablodaki kayd&#305;n silinebilmesi i&ccedil;in ona ba&#287;l&#305; olan di&#287;er tablodaki kayd&#305;n&#305;n silinmesi gerekir.</p>
<p class="style1">&Ouml;rnek:</p>
<p class="style1">CREATE TABLE SinifBilgi(<br />
OgrNo int,<br />
AnneAdi varchar(10),<br />
BabaAdi varchar(10),<br />
CONSTRAINT FK_Sinif Foreign Key(OgrNo)<br />
References Okul(OgrNo)<br />
)<br />
</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1"><strong>CONSTRAINTLER(KISITLAYICILAR)</strong></p>
<p class="style1">Veri &uuml;zerindeki mant&#305;ksal s&#305;n&#305;rlamalara <strong>k&#305;s&#305;t </strong>ad&#305; verilir.</p>
<p class="style1"><strong>Constraint T&uuml;rleri</strong></p>
<p class="style1"><strong>1. Primary Key Constraint</strong><br />
Birincil anahtar k&#305;s&#305;tlay&#305;c&#305; anlam&#305;ndad&#305;r. Ayn&#305; olmayan de&#287;erler girilmesini sa&#287;lar. Bu da her kayd&#305;n farkl&#305; olmas&#305; demektir. Her tablonun en fazla 1 adet Primary Key Constraint&rsquo;i olabilir.</p>
<p class="style1">Tablo tasar&#305;m a&#351;amas&#305;nda bir birincil anahtar&#305;n&#305;z tan&#305;mlanm&#305;&#351; olmas&#305; gerekir. Bir tabloda sadece 1 adet Primary Key Constraint tan&#305;mlanabilir.</p>
<p class="style1">CREATE TABLE Okul (<br />
OgrNo int,<br />
Adi VARCHAR (15),<br />
Soyadi VARCHAR (20),<br />
Sinifi VARCHAR(10),<br />
TcKimlikNo VARCHAR (11),<br />
CONSTRAINT PKC_OgrNo PRIMARY KEY (OgrNo)<br />
)</p>
<p class="style1"><strong>2. Unique Constraint</strong><br />
Tekil alan k&#305;s&#305;tlay&#305;c&#305; anlam&#305;ndad&#305;r. Birincil anahtar olan ve tablodaki di&#287;er alanlar i&ccedil;inde ayn&#305; i&ccedil;eri&#287;e sahip verilerin olmamas&#305; i&ccedil;in Unique Constraint tan&#305;mlan&#305;r. T.C.Kimlik Nu. primary key ve Okul Nu. Unique &#351;eklinde bir tan&#305;mlama Unique Constraint&rsquo;e bir &ouml;rnektir.</p>
<p class="style1">Daha &ouml;nceden olu&#351;turulmu&#351; bir tablo i&ccedil;in Unique Key Constraint tan&#305;m&#305; &#351;&ouml;yledir.</p>
<p class="style1">ALTER TABLE Okul<br />
ADD CONSTRAINT UC_TcKimlikNo UNIQUE (TcKimlikNo)</p>
<p class="style1"><strong>3. Default Constraint</strong><br />
Bir tabloya veri giri&#351;i esnas&#305;nda o alan&#305;n alaca&#287;&#305; varsay&#305;lan bir de&#287;erin tan&#305;mlanmas&#305; i&ccedil;in kullan&#305;lan k&#305;s&#305;tlay&#305;c&#305;d&#305;r. </p>
<p class="style1">Tablonun ilk olu&#351;turulmas&#305; esnas&#305;nda genel kullan&#305;m&#305; &#351;&ouml;yledir.</p>
<p class="style1">CREATE TABLE Tabloadi (<br />
S&uuml;tunadi,<br />
S&uuml;tunadi,<br />
CONSTRAINT Constraint_Adi DEFAULT (S&uuml;tunadi)<br />
)</p>
<p class="style1"><strong>&Ouml;rnek</strong><br />
ALTER TABLE Okul<br />
ADD CONSTRAINT DC_Sinif DEFAULT 10 FOR Sinif</p>
<p class="style1"><strong>4.</strong> <strong>Check Constraint</strong><br />
Tabloda belirtilen bir s&uuml;tuna istenilen &#351;artlara g&ouml;re de&#287;er girilebilmesini ve bunlar&#305;n kontrol&uuml;n&uuml; sa&#287;layan k&#305;s&#305;tlay&#305;c&#305;d&#305;r. &Ouml;rne&#287;in, T.C.Kimlik Nu. alan&#305;na 11 karakterin girilmesi Check Constraint ile sa&#287;lanabilir. Ayn&#305; s&uuml;tun i&ccedil;in birden fazla Check Constraint kullan&#305;labilir.</p>
<p class="style1">Tablonun ilk olu&#351;turulmas&#305; esnas&#305;nda genel kullan&#305;m&#305; &#351;&ouml;yledir.</p>
<p class="style1">CREATE TABLE Tablo_Adi (<br />
S&uuml;tun_Adi,<br />
S&uuml;tun_Adi,<br />
&hellip;..,<br />
CONSTRAINT Constraint_Adi CHECK (ifade)<br />
)</p>
<p class="style1"><strong>&Ouml;rnek:</strong><br />
&ldquo;Sinif&rdquo; ad&#305;nda yeni bir tablo olu&#351;turulacakt&#305;r. Bu tabloyu olu&#351;turmadan &ouml;nce yeni bir veri taban&#305; (Databases) olu&#351;turabilirsiniz. Bu tablonun s&uuml;tunlar&#305; ise, OgrNo int t&uuml;r&uuml;nde, Ad ve Soyad Char t&uuml;r&uuml;nde olsun.<br />
OgrNo alan&#305;na &ouml;&#287;renci numaralar&#305;n&#305;n mutlaka 0&rsquo;dan (s&#305;f&#305;r) b&uuml;y&uuml;k olmalar&#305;n&#305; sa&#287;layacak CHECK ifadesini CREATE TABLE i&ccedil;erisinde yazabilirsiniz.</p>
<p class="style1"><img width="384" height="125" src="../Application Data/Macromedia/Dreamweaver 8/OfficeImageTemp/clip_image002.gif" /> </p>
<p class="style1"><strong>5. S&uuml;tun Seviyeli K&#305;s&#305;tlamalar</strong><br />
Tablodaki bir s&uuml;tun i&ccedil;in girilecek bilgileri kontrol etmek i&ccedil;in kullan&#305;lan k&#305;s&#305;tlamalard&#305;r. Bir s&uuml;tunun de&#287;er al&#305;p (NULL) almamas&#305; (NOT NULL) i&ccedil;in k&#305;s&#305;tlama yap&#305;labilir. Bu, k&#305;s&#305;tlamaya en basit&nbsp; &ouml;rnektir.</p>
<p class="style1"><img width="339" height="115" src="../Application Data/Macromedia/Dreamweaver 8/OfficeImageTemp/clip_image004.gif" /></p>
<p class="style1"><strong>6.</strong> <strong>S&uuml;tunlar Aras&#305; Check Constraint Olu&#351;turmak</strong></p>
<p class="style1"><strong>&Ouml;rnek</strong><br />
Bir stok program&#305; yaz&#305;ld&#305;&#287;&#305;n&#305; d&uuml;&#351;&uuml;n&uuml;n. &ldquo;Urunler&rdquo; adl&#305; tabloda &uuml;r&uuml;nlerle ilgili bilgilerin oldu&#287;unu varsay&#305;n. UrunGirisTarihi, &uuml;r&uuml;n&uuml;n depoya giri&#351; tarihinin, UrunCikisTarihi de &uuml;r&uuml;n&uuml;n depodan &ccedil;&#305;k&#305;&#351; tarihinin girildi&#287;i s&uuml;tunlar olarak belirlensin. &Uuml;r&uuml;n&uuml;n depodan &ccedil;&#305;k&#305;&#351; tarihinin her zaman bo&#351; ve giri&#351; tarihinden b&uuml;y&uuml;k oldu&#287;unu garanti edecek bir Check Constraint&rsquo;i tablo seviyeli olarak &#351;&ouml;yle tan&#305;mlayabilirsiniz.</p>
<p class="style1">CREATE TABLE Urunler (<br />
UrunNo VARCHAR(10),<br />
UrunAd VARCHAR(200),<br />
UrunGirisTarihi DATETIME,<br />
UrunCikisTarihi DATETIME NULL,<br />
CONSTRAINT chk_UrunCikisTarihi <br />
CHECK (UrunCikisTarihi IS NULL OR<br />
UrunCikisTarihi &gt;= UrunGirisTarihi)<br />
)</p>
<p class="style1"><strong>7. Foreign Key Constraint Olu&#351;turmak</strong><br />
<img width="339" height="139" src="../Application Data/Macromedia/Dreamweaver 8/OfficeImageTemp/clip_image006.gif" align="left" hspace="12" /><img width="348" height="140" src="../Application Data/Macromedia/Dreamweaver 8/OfficeImageTemp/clip_image008.gif" align="left" hspace="12" />Bir tablodaki bir s&uuml;tuna ait de&#287;erlerin, ba&#351;ka bir tablonun belli s&uuml;tunundan gelmesini denetler. Bir tabloya girilebilecek de&#287;erleri ba&#351;ka bir tablonun bir belli alan&#305;nda yer alabilecek veri grubu ile s&#305;n&#305;rland&#305;rmaya ve en &ouml;nemlisi de ili&#351;kilendirmeye yarar. Bu k&#305;s&#305;tlay&#305;c&#305;y&#305; hem Management Studio hem de T-SQL kodu yazarak olu&#351;turabilirsiniz. Tabii ki veri taban&#305;n&#305;zda birden fazla tablo olmas&#305; gerekir.</p>
<p class="style1">Management Studio&rsquo;da veri taban&#305;n&#305;zda bulunan tablolar i&ccedil;in yeni bir Database Diagram olu&#351;turman&#305;z ve bu tablolar&#305; oraya eklemeniz gerekir.</p>
<p class="style1">&ldquo;Sinif&rdquo; tablosundaki &ldquo;OgrNo&rdquo; alan&#305;na fareyle t&#305;klay&#305;p b&#305;rakmadan &ldquo;Sinif_Bilgi&rdquo; tablosundaki ili&#351;kilendirilecek alana kadar fareyi s&uuml;r&uuml;kleyip b&#305;rak&#305;n&#305;z. &#304;li&#351;ki ger&ccedil;ekle&#351;tirilmi&#351; olacakt&#305;r.</p>
<p class="style1">&#304;li&#351;kilendirilmenin sonucunda, sonsuz i&#351;areti yabanc&#305;l taraf&#305;n&#305;, anahtar i&#351;areti de birincil taraf&#305; g&ouml;stermektedir. </p>
<p class="style1">Di&#287;er bir y&ouml;ntem olan T-SQL&rsquo;le tablo olu&#351;tururken Foregin Key Constraint tan&#305;mlamak i&ccedil;in a&#351;a&#287;&#305;daki genel yap&#305;y&#305; kullanmakt&#305;r.</p>
<p class="style1"><strong>Genel Yap&#305;</strong><br />
CREATE TABLE tablo_ad&#305; (<br />
S&uuml;tun_adlar&#305;,<br />
CONSTRAINT const_ad&#305; FOREIGN KEY (s&uuml;tun_ad&#305;)<br />
REFERENCES di&#287;ertablo_ad&#305; (s&uuml;tun_ad&#305;)<br />
)</p>
<p class="style1">Olu&#351;turulmu&#351; olan tablo i&ccedil;in ise genel yap&#305; &#351;u &#351;ekildedir.</p>
<p class="style1">ALTER TABLE tablo_ad&#305;<br />
ADD CONSTRAINT cons_ad&#305; FOREIGN KEY (s&uuml;tun_ad&#305;)<br />
REFERENCES di&#287;ertablo_ad&#305; (s&uuml;tun_ad&#305;)</p>
<p class="style1">Managemet Studio ile olu&#351;turulan Foreign Key i&ccedil;in T-SQL kodu da a&#351;a&#287;&#305;daki gibidir.</p>
<p class="style1">ALTER TABLE Sinif<br />
ADD CONSTRAINT FK_Sinif_Bilgi_Sinif FOREIGN KEY (TcKimlikNo)<br />
REFERENCES Sinif_Bilgi(TcKimlikNo)</p>
<div class="style1"> </div>
<p class="style1">&nbsp;</p>
<p class="style1"><strong>Constraint&rsquo;leri D&uuml;zenlemek</strong><br />
Constraint&rsquo;leri d&uuml;zenlemenin en uygun yolu Managemet Studio&rsquo;yu kullanmakt&#305;r.<br />
D&uuml;zenleme i&#351;lemi T-SQL kodlar&#305;yla da ger&ccedil;ekle&#351;ebilir ancak, bu i&#351;lem i&ccedil;in birka&ccedil; a&#351;amay&#305;<br />
ger&ccedil;ekle&#351;tirmeniz gerekir.<br />
Management Studio&rsquo;da olu&#351;turulan Constraint&rsquo;leri d&uuml;zenlemek i&ccedil;in &uuml;zerinde fareyle sa&#287; t&#305;klay&#305;n&#305;z. A&ccedil;&#305;lan yard&#305;mc&#305; men&uuml; ile yeni bir Constraint olu&#351;turabilir, d&uuml;zenleyebilir,<br />
ad&#305;n&#305; de&#287;i&#351;tirebilir veya silebilirsiniz.</p>
<p class="style1"><strong>Constraint&rsquo;leri Silmek</strong><br />
Tan&#305;mlanan bir Constraint&rsquo;i Management Studio&rsquo;da mevcut Constraint &uuml;zerinde fareyle sa&#287; t&#305;klay&#305;p a&ccedil;&#305;lan men&uuml;den Delete komutunu vererek silebilirsiniz. </p>
<p class="style1">Bu i&#351;lemi T-SQL kodu yazarak da yapabilirsiniz.<br />
ALTER TABLE tablo_ad&#305;<br />
DROP CONSTRAINT const_ad&#305;</p>
<p class="style1"><strong>&Ouml;rnek:</strong><br />
ALTER TABLE Urunler<br />
DROP CONSTRAINT chk_UrunCikisTarihi</p>
<p class="style1"><strong>Constraint&rsquo;lerin Kullan&#305;l&#305;p Kullan&#305;lmamas&#305;</strong><br />
Veri taban&#305;nda tan&#305;ml&#305; k&#305;s&#305;tlay&#305;c&#305;lar&#305;n yap&#305;lan i&#351;leme g&ouml;re baz&#305; zamanlarda kullan&#305;lmas&#305; istenmeyebilir. Bu gibi durumlarda k&#305;s&#305;tlay&#305;c&#305;lar&#305;n devre d&#305;&#351;&#305; b&#305;rak&#305;lmas&#305; gerekir.</p>
<p class="style1">Bir Constraint&rsquo;i devre d&#305;&#351;&#305; b&#305;rakmak i&ccedil;in,</p>
<p class="style1">ALTER TABLE tablo_ad&#305;<br />
NOCHECK CONSTRAINT const_ad&#305;</p>
<p class="style1">&#351;eklinde yaz&#305;lmal&#305;d&#305;r.</p>
<p class="style1">T&uuml;m Constraint&rsquo;leri devre d&#305;&#351;&#305; b&#305;rakmak i&ccedil;in ise,</p>
<p class="style1">ALTER TABLE tablo_ad&#305;<br />
NOCHECK CONSTRAINT ALL</p>
<p class="style1">yaz&#305;lmal&#305;d&#305;r.</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">--SQL DENET&#304;M DEY&#304;MLER&#304;<br />
--IF - ELSE YAPISI<br />
--Bir deyimi &#351;arta ba&#287;lamak i&ccedil;in kullan&#305;l&#305;r.<br />
Kullan&#305;m&#305;:<br />
IF (ko&#351;ul)<br />
BEGIN<br />
deyim ya da deyimler<br />
ELSE<br />
deyim ya da deyimler<br />
END<br />
--&Ouml;rnek: En y&uuml;ksek maa&#351; alan &ccedil;al&#305;&#351;an&#305;n maa&#351;&#305; 2000 den y&uuml;ksek ise 'maa&#351;lar iyi', 2000 den az ise 'maa&#351;lar iyi de&#287;il' mesaj&#305;n&#305; veren T-SQL kodlar&#305;n&#305; yaz&#305;n&#305;z.<br />
--&ouml;nce de&#287;i&#351;ken tan&#305;ml&#305;yoruz. Bu de&#287;i&#351;kene &Ccedil;al&#305;&#351;anlar tablosundaki en y&uuml;ksek maa&#351; de&#287;erini at&#305;yoruz.<br />
declare @enbuyuk int<br />
select @enbuyuk=max(Maasi) from Calisanlar<br />
if (@enbuyuk&gt;2000)<br />
begin<br />
print 'Maa&#351;lar iyi'<br />
end<br />
else <br />
begin<br />
print 'Maa&#351;lar k&ouml;t&uuml;'<br />
end</p>
<p class="style1">--&Ouml;rnek:2010 Temmuz ay&#305;nda sipari&#351; al&#305;n&#305;p al&#305;nmad&#305;&#287;&#305;n&#305; g&ouml;seren kodlar&#305; yaz&#305;n&#305;z.<br />
declare @say int<br />
select @say=count(SiparisID) from Siparisler where year(SiparisTarihi)=2010 and month(SiparisTarihi)=7<br />
if (@say&gt;0)<br />
begin<br />
print '2010 Temmuz ay&#305;nda sipari&#351; al&#305;nm&#305;&#351;t&#305;r'<br />
end<br />
else<br />
print '2010 Temmuz ay&#305;nda sipari&#351; al&#305;nmam&#305;&#351;t&#305;r'</p>
<p class="style1">--Not : E&#287;er if ya da else den sonra yap&#305;lacak i&#351;lem tek sat&#305;rl&#305;k(tek komutluk) bir i&#351;lemse begin-end aras&#305;nda yazmaya gerek yoktur. Yap&#305;lacak i&#351;lem 1 den fazla ise begin ve end kullan&#305;lmas&#305; zorunludur.</p>
<p class="style1">--&Ouml;rnek : Stokta bulunan &uuml;r&uuml;nlerin toplam de&#287;eri 5000 e e&#351;it veya b&uuml;y&uuml;kse 'stok zengin', 5000 den k&uuml;&ccedil;&uuml;kse 'stok yetersiz' mesaj&#305;n&#305; veren kodlar&#305; yaz&#305;n&#305;z.<br />
declare @toplam int<br />
select @toplam=sum(Fiyati*Miktari) from Urunler<br />
if (@toplam&gt;=5000)<br />
print 'stok zengin'<br />
else<br />
print 'stok yetersiz'</p>
<p class="style1">--CASE YAPISI<br />
--bir &ccedil;ok durum i&ccedil;in kontrol i&#351;lemi yapar.<br />
Kullan&#305;m&#305;:<br />
CASE deger<br />
WHEN deger THEN islem<br />
WHEN deger THEN islem<br />
ELSE islem<br />
END</p>
<p class="style1">--&Ouml;RNEK: &Uuml;r&uuml;nler tablosundaki her &uuml;r&uuml;n&uuml;n hangi toptanc&#305;ya ait oldu&#287;unu &uuml;r&uuml;n ad&#305;yla birlikte ekrana yazd&#305;ran T-SQL kodlar&#305;.<br />
select UrunAdi,'Toptanc&#305; Ad&#305;'=<br />
case<br />
when Toptanci=1 then 'Kalyon Toptanc&#305;l&#305;k'<br />
when Toptanci=3 then 'Polat Toptanc&#305;l&#305;k'<br />
when Toptanci=5 then 'Emir Toptanc&#305;l&#305;k'<br />
else<br />
'Bu ID ye sahip toptanc&#305; bulunmamaktad&#305;r'<br />
end<br />
from Urunler<br />
--&Ouml;rnek : Musteriler tablosundaki her musterinin sirket tipini, musteriID siyle birlikte yazan kodlar.<br />
1 - &gt; Limited<br />
2 - &gt; Kollektif<br />
3 - &gt; &#350;ah&#305;s</p>
<p class="style1">select MusteriID,'Sirket Tipi'=<br />
case<br />
when SirketTipi=1 then 'Limited'<br />
when SirketTipi=2 then 'Kollektif'<br />
when SirketTipi=3 then '&#350;ah&#305;s'<br />
end<br />
from Musteriler</p>
<p class="style1">--&Ouml;rnek : Urunler tablosundaki her &uuml;r&uuml;n&uuml;n miktar&#305; 3 ten az ise '&uuml;r&uuml;n yetersiz', 3 e e&#351;it ve fazla ise '&uuml;r&uuml;n yeterli' sonucunu veren program&#305; case yaz&#305;n&#305;z.</p>
<p class="style1">select UrunAdi,'Durum'=<br />
case<br />
when Miktari&gt;=3 then '&uuml;r&uuml;n yeterli'<br />
when Miktari&lt;3 then '&uuml;r&uuml;n yetersiz'<br />
end<br />
from Urunler</p>
<p class="style1">--WHILE D&Ouml;NG&Uuml;S&Uuml;<br />
--Bir i&#351;lemi belirli say&#305; kadar tekrar etmek i&ccedil;in kullan&#305;l&#305;r.<br />
Kullan&#305;m&#305;:<br />
WHILE &#351;art<br />
BEGIN<br />
i&#351;lemler<br />
END</p>
<p class="style1">--&Ouml;rnek : 1 ile 10 aras&#305;ndaki her say&#305;y&#305; 2 ile &ccedil;arp&#305;p sonucu ekrana yazan program<br />
declare @sayac int<br />
declare @sonuc int<br />
select @sayac=1<br />
select @sonuc=0<br />
--De&#287;i&#351;kenlere de&#287;er atarken select ile ba&#351;lan&#305;r.<br />
while(@sayac&lt;=10)<br />
begin<br />
select @sonuc=@sayac*2<br />
print 'sonuc : '<br />
print @sonuc<br />
select @sayac=@sayac+1<br />
end</p>
<p class="style1">--&Ouml;rnek : 5 ile 10(dahil) aras&#305;ndaki say&#305;lar&#305;n karesini al&#305;p ekrana yazan program..<br />
declare @sayac int<br />
declare @sonuc int<br />
select @sayac=5<br />
select @sonuc=0<br />
while (@sayac&lt;=10)<br />
begin<br />
select @sonuc =@sayac*@sayac<br />
print 'sonuc:'<br />
print @sonuc<br />
select @sayac= @sayac+1<br />
end</p>
<p class="style1">&nbsp;</p>
<p class="style1"></p>
<p class="style1">--1. D&#305;&#351;ar&#305;dan ID si girilen KargoFirmas&#305; ile ta&#351;&#305;nm&#305;&#351; sipari&#351;lerin bilgilerini g&ouml;steren procedure<br />
create proc SiparisBilgisi (@KargoID int)<br />
as<br />
select * from Siparisler where KargoID=@KargoID<br />
exec SiparisBilgisi 2</p>
<p class="style1">&nbsp;</p>
<p class="style1">--2. D&#305;&#351;ar&#305;dan ID si girilen iki &ccedil;al&#305;&#351;an&#305;n ald&#305;&#287;&#305; toplam sipari&#351; say&#305;s&#305;.<br />
create proc ToplamSiparis(@id1 int,@id2 int)<br />
as<br />
declare @sipsay1 int<br />
declare @sipsay2 int<br />
select @sipsay1=count(*) from Siparisler where CalisanID=@id1<br />
select @sipsay2=count(*) from Siparisler where CalisanID=@id2<br />
select @sipsay1+@sipsay2</p>
<p class="style1">exec ToplamSiparis 3,4<br />
</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">--3. ID si verilen &ccedil;al&#305;&#351;an&#305;n ald&#305;&#287;&#305; sipari&#351;lerin say&#305;s&#305;n&#305; d&ouml;nd&uuml;ren procedure.</p>
<p class="style1">create proc ToplamSiparis1(@id int)<br />
as<br />
return (select count(*) from Siparisler where CalisanID=@id)<br />
--<br />
declare @sayi int<br />
exec @sayi=ToplamSiparis1 3<br />
select @sayi</p>
<p class="style1">--4. D&#305;&#351;ar&#305;dan ID si girilen iki &ccedil;al&#305;&#351;andan en &ccedil;ok sipari&#351; alan&#305;n ald&#305;&#287;&#305; sipari&#351; say&#305;s&#305;n&#305; geriye d&ouml;nd&uuml;ren procedure.<br />
create proc EnCokSiparisAlan(@id1 int,@id2 int)<br />
as<br />
declare @sipsay1 int<br />
declare @sipsay2 int<br />
select @sipsay1=count(*) from Siparisler where CalisanID=@id1<br />
select @sipsay2=count(*) from Siparisler where CalisanID=@id2<br />
if @sipsay1&gt;@sipsay2<br />
return @sipsay1<br />
else<br />
return @sipsay2<br />
--<br />
declare @sonuc int<br />
exec @sonuc=EnCokSiparisAlan 3,5<br />
select @sonuc<br />
</p>
<p class="style1">--5. D&#305;&#351;ar&#305;dan girilen sipari&#351; tarihine kadar al&#305;nm&#305;&#351; olan t&uuml;m sipari&#351;lerin toplam Kargo &uuml;cretini geriye d&ouml;nd&uuml;ren procedure.<br />
create proc ToplamKargo(@tarih datetime)<br />
as<br />
declare @toplam int<br />
select @toplam=sum(KargoUcreti) from Siparisler where SiparisTarihi&lt;=@tarih<br />
return @toplam<br />
--<br />
declare @t int<br />
exec @t=ToplamKargo '12.12.2010'<br />
select @t<br />
</p>
<p class="style1"></p>
<p class="style1"></p>
<p class="style1"></p>
<p class="style1">use EVKUR</p>
<p class="style1">--1. sorgu<br />
--1. Maa&#351;&#305; 1000 lira ve &uuml;zeri olan &ccedil;al&#305;&#351;anlardan iki tanesinin bilgilerini g&ouml;steriniz.<br />
select top 2 * from Calisanlar where Maasi&gt;=1000</p>
<p class="style1">--2. sorgu<br />
--En son i&#351;e ba&#351;layan &ccedil;al&#305;&#351;an&#305;n Ad&#305; ve soyad&#305;n&#305; tek bir s&uuml;tun alt&#305;nda g&ouml;steriniz. S&uuml;tun ad&#305; &lsquo;Ad&#305; Soyad&#305;&rsquo; olsun.</p>
<p class="style1">select top 1 Adi+' '+Soyadi as 'Ad&#305; Soyadi' from Calisanlar order by CalisanID desc</p>
<p class="style1">--3. sorgu<br />
--En y&uuml;ksek maa&#351; alan 3 &ccedil;al&#305;&#351;an&#305;n maa&#351; bilgisini g&ouml;steriniz.</p>
<p class="style1">select top 3 Maasi from Calisanlar order by Maasi desc</p>
<p class="style1">--4. sorgu<br />
--4 nolu departmanda &ccedil;al&#305;&#351;&#305;p maa&#351;&#305; 1000 liradan az olan &ccedil;al&#305;&#351;an&#305;n i&#351;e ba&#351;lama tarihini g&ouml;r&uuml;nt&uuml;leyiniz.</p>
<p class="style1">select IseBaslamaTarihi from Calisanlar where Maasi&lt;1000 and Departmani=1</p>
<p class="style1">--5.sorgu<br />
--2000 y&#305;l&#305;ndan &ouml;nce i&#351;e ba&#351;layan &ccedil;al&#305;&#351;anlar&#305;n i&#351;e ba&#351;lad&#305;&#287;&#305; aylar&#305; g&ouml;steriniz.</p>
<p class="style1">select month(IseBaslamaTarihi) as 'Ise Ba&#351;lad&#305;&#287;&#305; Ay' from Calisanlar where year(IseBaslamaTarihi)&lt;2000</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">--LIKE<br />
--Arama i&#351;lemi i&ccedil;in kullan&#305;l&#305;r.<br />
--&Ouml;rnek: Ad&#305; A ile ba&#351;layan &ccedil;al&#305;&#351;anlar&#305;n t&uuml; bilgilerini g&ouml;ster.<br />
select * from Calisanlar where Adi like 'A%'</p>
<p class="style1">--&Ouml;rnek Ad&#305; n ile biten &ccedil;al&#305;&#351;anlar&#305;n ad&#305; ve soyad&#305;n&#305; g&ouml;ster<br />
select Adi, Soyadi from Calisanlar where Adi like '%N'</p>
<p class="style1">--&Ouml;rnek: Adres bilgisi i&ccedil;erisinde I&#351;&#305;k kelimesi ge&ccedil;en m&uuml;&#351;terilerin adreini g&ouml;r&uuml;nt&uuml;leyiniz.<br />
select SirketAdresi from Musteriler where SirketAdresi like '%I&#351;&#305;k%'</p>
<p class="style1">--Ad&#305; K ile ba&#351;lamayan &ccedil;al&#305;&#351;anlar&#305;n adlar&#305;n&#305; g&ouml;ster</p>
<p class="style1">select Adi from Calisanlar where Adi not like 'K%'</p>
<p class="style1">--COUNT<br />
--Sayma i&#351;lemi yapar.<br />
--&Ouml;rnek: stoklar&#305;m&#305;zda ka&ccedil; tane &uuml;r&uuml;n var?<br />
select count(UrunID) from Urunler</p>
<p class="style1">--2000 y&#305;l&#305;nda al&#305;nm&#305;&#351; ka&ccedil; sipari&#351;imiz var?<br />
select count(SiparisID) from Siparisler where year(SiparisTarihi)=2000</p>
<p class="style1">--&Ouml;rnek: Maa&#351;&#305; 700 ile 1000 aras&#305;nda olan ve ad&#305; K ile ba&#351;layan &ccedil;al&#305;&#351;anlar&#305;n ad&#305; ve maa&#351;&#305;n&#305; g&ouml;r&uuml;nt&uuml;leyiniz.<br />
select Adi,Maasi from Calisanlar where (Maasi between 700 and 1000) and Adi like 'K%'</p>
<p class="style1">--SUM <br />
--belirtilen kolondaki(s&uuml;tundaki) de&#287;erleri toplar ve sonucu verir.<br />
--&Ouml;rnek: T&uuml;m sipari&#351;lerimiz i&ccedil;in toplam ka&ccedil; lira kargo &uuml;creti &ouml;demi&#351;iz?<br />
select sum(KargoUcreti) from Siparisler</p>
<p class="style1">--&Ouml;rnek:2 nolu &ccedil;al&#305;&#351;an&#305;n Nisan ay&#305;nda ald&#305;&#287;&#305; sipari&#351;lerin tolam kargo &uuml;creti?<br />
select sum(KargoUcreti) from Siparisler where CalisanID=2 and Month(SiparisTarihi)=4<br />
--Stoklar&#305;m&#305;zda toplam ka&ccedil; liral&#305;k &uuml;r&uuml;n var?<br />
select sum(Miktari*Fiyati) from Urunler</p>
<p class="style1">--MAX ve MIN<br />
--belirtilen s&uuml;tundaki en b&uuml;y&uuml;k ve en k&uuml;&ccedil;&uuml;k de&#287;eri bulur.<br />
--Sto&#287;umuzda bulunan en d&uuml;&#351;&uuml;k birimfiyatl&#305; &uuml;r&uuml;n.<br />
select Min(Fiyati) from Urunler<br />
--En &ccedil;ok maa&#351; alan &ccedil;al&#305;&#351;an&#305;n maa&#351;&#305;<br />
select Max(Maasi) from Calisanlar</p>
<p class="style1">--AVG : belirtilen s&uuml;tunun ortalamas&#305;n&#305; al&#305;r.<br />
--T&uuml;m sipari&#351;ler i&ccedil;in &ouml;denen ortalama KargoUcreti?<br />
select Avg(KargoUcreti) from Siparisler</p>
<p class="style1">--GROUP BY<br />
--Kay&#305;tlar&#305; bir alana g&ouml;re gruplar.<br />
--&Ouml;rnek: Kargo firmalar&#305;na g&ouml;re al&#305;nm&#305;&#351; sipari&#351; say&#305;s&#305;.(Her kargo firmas&#305; ile ka&ccedil; sipari&#351; verilmi&#351;)<br />
select KargoID,count(SiparisID) from Siparisler group by KargoID<br />
</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">--1. ID si 10 ile 15 aras&#305;nda olan &uuml;r&uuml;nlerin adlar&#305;n&#305; ve her &uuml;r&uuml;nden toplam ne kadarl&#305;k mala sahip oldu&#287;umuzu g&ouml;steriniz.</p>
<p class="style1">select UrunAdi, Miktari*Fiyati from Urunler <br />
where UrunID between 2 and 4</p>
<p class="style1">--2. Ad&#305; M ile ba&#351;layan &ccedil;al&#305;&#351;anlar&#305;n maa&#351; ve i&#351;e ba&#351;lama tarihlerini g&ouml;r&uuml;nt&uuml;leyiniz.<br />
select Maasi,IseBaslamaTarihi from Calisanlar where Adi like 'A%'</p>
<p class="style1">--3. Ad&#305; G ile ba&#351;lamayan m&uuml;&#351;terilerin adlar&#305;n&#305; ve VergiNo bilgilerini g&ouml;steriniz<br />
select SirketAdi, VergiNo from Musteriler where SirketAdi not like 'G%'</p>
<p class="style1">--4. Adres bilgisi i&ccedil;erisinde &#304;nci kelimesi ge&ccedil;en &ccedil;al&#305;&#351;an&#305;n ad&#305;n&#305;, soyad&#305;n&#305; ve adresini g&ouml;steriniz.<br />
select Adi,Soyadi,Adresi from Calisanlar where Adresi like '%inci%'</p>
<p class="style1">--5. Stoklarda 5 ten fazla bulunan, fiyat&#305; 500 den y&uuml;ksek, ID si 2 ile 4 aras&#305;nda olan &uuml;r&uuml;nlerden ba&#351; harfi A veya R olan &uuml;r&uuml;nlerin en pahal&#305;s&#305;n&#305;n t&uuml;m bilgilerini g&ouml;steriniz.<br />
select top 1 * from Urunler where Fiyati&gt;500 and (UrunID between 2 and 4) and (UrunAdi like 'A%' or UrunAdi like 'R%') order by Fiyati desc </p>
<p class="style1">--6. 2010 y&#305;l&#305; haziran ay&#305;nda toplam ka&ccedil; tane sipari&#351; al&#305;nd&#305;&#287;&#305;n&#305; g&ouml;steriniz.<br />
select count(SiparisID) from Siparisler where year(SiparisTarihi)=2010 and month(SiparisTarihi)=6</p>
<p class="style1">--7. 2010 y&#305;l&#305; May&#305;s ay&#305;nda &ouml;dedi&#287;imiz toplam Kargo &Uuml;cretini g&ouml;steriniz.<br />
select sum(KargoUcreti) from Siparisler where year(SiparisTarihi)=2010 and month(SiparisTarihi)=5</p>
<p class="style1">--8. 1000 liradan az maa&#351; alan &ccedil;al&#305;&#351;anlar&#305;n maa&#351;lar&#305;n&#305;n toplam&#305;n&#305; g&ouml;steriniz.<br />
select sum(Maasi) as 'Maaslar Toplam&#305;' from Calisanlar where Maasi&lt;1000</p>
<p class="style1">--9. 1 nolu kargo firmas&#305;na &ouml;demi&#351; oldu&#287;umuz en y&uuml;ksek ve en d&uuml;&#351;&uuml;k kargo &uuml;creti<br />
select min(KargoUcreti) as 'En D&uuml;&#351;&uuml;k',max(KargoUcreti) as 'En Y&uuml;ksek' from Siparisler where KargoID=2</p>
<p class="style1">--10. Toptanc&#305;ya g&ouml;re gruplanm&#305;&#351; &uuml;r&uuml;nler.Her toptanc&#305;ya ait ka&ccedil; tane &uuml;r&uuml;n var<br />
select Toptanci,count(UrunID) from Urunler group by Toptanci</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">--INSERT SORGUSU<br />
--Kay&#305;t Ekleme<br />
--Yaz&#305;l&#305;&#351;&#305;:<br />
--INSERT INTO Tablo_Adi(s&uuml;tun1,s&uuml;tun2,..) VALUES(de&#287;er1,de&#287;er2,..)<br />
--&Ouml;RNEK:Toptanc&#305;lar tablosuna kay&#305;t ekleyelim.<br />
Insert Into Toptancilar(ToptanciAdi,Yetkilisi,Adres,Sehir,Telefon) Values('Halis Toptanc&#305;l&#305;k','Murat Halis','Kanarya Cad. No:45','2','02123456787')</p>
<p class="style1">--Her tabloya 1 adet kay&#305;t ekleyiniz.</p>
<p class="style1">--UPDATE ile ilgili 5 tane &ouml;rnek sorgu ve cevab&#305;.<br />
</p>
<p class="style1"></p>
<p class="style1"></p>
<p class="style1">--UPDATE komutu<br />
--Kay&#305;tlar &uuml;zerinde de&#287;i&#351;iklik yapmak i&ccedil;in kullan&#305;l&#305;r. E&#287;er &#351;art belirtilmezse de&#287;i&#351;iklik tablodaki t&uuml;m kay&#305;tlar i&ccedil;in uygulanm&#305;&#351; olur.</p>
<p class="style1">--Kullan&#305;m&#305;:<br />
--UPDATE tablo_adi SET Alan_adi=deger WHERE &#351;art</p>
<p class="style1">--&Ouml;rnek: Ad&#305; Murat olan &ccedil;al&#305;&#351;an&#305;n soyad&#305;n&#305; &#350;ahin olarak de&#287;i&#351;tiriniz.<br />
update Calisanlar set Soyadi='&#350;ahin' where Adi='Murat'</p>
<p class="style1">--&Ouml;rnek: 2000 y&#305;l&#305;ndan &ouml;nce i&#351;e ba&#351;layan &ccedil;al&#305;&#351;anlar&#305;n maa&#351;&#305;n&#305; 2000 olarak de&#287;i&#351;tiriniz.<br />
update Calisanlar set Maasi=2000 where year(IseBaslamaTarihi)&lt;2000</p>
<p class="style1">--&Ouml;rnek :Musteriler tablosunda SirketAdi i&ccedil;erisinde &quot;Nakliye&quot; ge&ccedil;en m&uuml;sterinin &#350;irket ad&#305;n&#305; Mutlular Nakliyat olarak de&#287;i&#351;tiriniz.<br />
update Musteriler set SirketAdi='Mutlular Nakliyat' where SirketAdi like '%Nakliye%' </p>
<p class="style1">--&Ouml;rnek : Fiyat&#305; 1000 den b&uuml;y&uuml;k olan &uuml;r&uuml;nlerin son kullanma tarihi 2015 ten &ouml;nce olan &uuml;r&uuml;nlerin son kullanma tarihini 12.12.2020 olarak de&#287;i&#351;tiriniz.<br />
update Urunler set SonKullanmaTarihi='12.12.2010' where Fiyati&gt;1000 and year(SonKullanmaTarihi)&lt;2015</p>
<p class="style1">--DELETE komutu<br />
--Kay&#305;t silmek i&ccedil;in kullan&#305;l&#305;r.<br />
--Kullan&#305;m&#305;:<br />
--DELETE FROM tablo_adi WHERE &#351;art<br />
--&Ouml;rnek: 20 nolu &ccedil;al&#305;&#351;an taraf&#305;ndan al&#305;nan sipari&#351;i siliniz.<br />
delete from Siparisler where CalisanID=20</p>
<p class="style1">--&Ouml;rnek Vergi Nosu olmayan m&uuml;&#351;terilerin kayd&#305;n&#305; siliniz.<br />
delete from Musteriler where VergiNo is null</p>
<p class="style1">--inner join li ifadeler<br />
--inner join ba&#287;l&#305; olan tablolar&#305; ifade eder.<br />
--&Ouml;rnek: &#350;ehir bilgisi &#304;stanbul olan &ccedil;al&#305;&#351;anlar&#305;n t&uuml;m bilgilerini g&ouml;steriniz.<br />
select * from Calisanlar<br />
inner join Sehirler on Sehirler.SehirID=Calisanlar.Sehir where Sehirler.SehirAdi='Istanbul'</p>
<p class="style1">--&Ouml;rnek : &#304;leri Kargo ile ta&#351;&#305;nm&#305;&#351; olan sipari&#351;lerin toplam kargo &uuml;cretini g&ouml;steriniz.<br />
select sum(KargoUcreti) from Siparisler inner join KargoFirmalari on KargoFirmalari.KargoID=Siparisler.KargoID where KargoFirmalari.KargoAdi='&#304;leri Kargo'</p>
<p class="style1">--&Ouml;rnek1.Hakan adl&#305; &ccedil;al&#305;&#351;an&#305;n, &#350;irket ad&#305; i&ccedil;erisinde &quot;Yaz&#305;l&#305;mc&#305;l&#305;k&quot; ge&ccedil;en m&uuml;&#351;terilerden ald&#305;&#287;&#305; sipari&#351;lerin &#350;irket ad&#305;n&#305; ve sipari&#351; numaras&#305;n&#305; g&ouml;steriniz.<br />
select Musteriler.SirketAdi,Siparisler.SiparisID from Siparisler inner join Musteriler on Siparisler.MusteriID=Musteriler.MusteriID where Musteriler.SirketAdi like <br />
'%Yaz&#305;l&#305;mc&#305;l&#305;k%'<br />
</p>
<p class="style1">--&Ouml;rnek2.Beyaz E&#351;ya departman&#305;nda &ccedil;al&#305;&#351;an &ccedil;al&#305;&#351;anlar&#305;n maa&#351;lar&#305;n&#305; g&ouml;steriniz.<br />
select Maasi from Calisanlar <br />
inner join Departmanlar on Departmanlar.DepartmanID=Calisanlar.Departmani<br />
where Departmanlar.DepartmanAdi='Beyaz Esya'</p>
<p class="style1">--&Ouml;rnek 3.Kalyon Toptanc&#305;l&#305;k'a ait &uuml;r&uuml;nlerden en ucuzunun ad&#305;n&#305; ve firmas&#305;n&#305; g&ouml;steriniz.<br />
select top 1 Urunler.UrunAdi,Toptancilar.ToptanciAdi from Urunler inner join Toptancilar on Urunler.Toptanci=Toptancilar.ToptanciID where Toptancilar.ToptanciAdi='Kalyon Toptanc&#305;l&#305;k' order by Fiyati desc<br />
</p>
<p class="style1">--&Ouml;rnek4.Ad&#305; Hakan olan &ccedil;al&#305;&#351;an&#305;n sipari&#351;lerinden kargo &uuml;creti 5 lira olan sipari&#351;lerin kargo &uuml;cretlerini g&ouml;steriniz.<br />
select KargoUcreti from Siparisler<br />
inner join Calisanlar on Calisanlar.CalisanID=Siparisler.CalisanID<br />
where Siparisler.KargoUcreti=5 and Calisanlar.Adi='Hakan'</p>
<p class="style1">--&#350;irket t&uuml;r&uuml; Limited olup Ankarada olan m&uuml;&#351;terilerden ismi H ile ba&#351;layan&#305;n &#351;irket ad&#305;n&#305; ve vergi numaras&#305;n&#305; g&ouml;steriniz.<br />
select SirketAdi,VergiNo from Musteriler <br />
inner join SirketTipleri on Musteriler.SirketTipi=SirketTipleri.SirketTipID<br />
inner join Sehirler on Sehirler.SehirID=Musteriler.SirketSehri where SirketTipleri.SirketTipi='Limited' and Sehirler.SehirAdi='Ankara' and Musteriler.SirketAdi like 'H%'</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">--STORED PROCEDURE LER<br />
--(Haz&#305;r fonksiyonlar)</p>
<p class="style1">--Herhangi bir i&#351;levi yerine getirmek i&ccedil;in yaz&#305;lan kodlar&#305;n paket i&ccedil;erisinde tutulmu&#351; halidir. Bir defa yaz&#305;l&#305;rlar. &#304;stenildi&#287;i anda kullan&#305;labilirler. <br />
--Insert, update, delete i&#351;lemlerinde kolayl&#305;k sa&#287;lar.</p>
<p class="style1">--&Ouml;rnek : Hesap tablosuna bir kay&#305;t ekleyen procedure</p>
<p class="style1">create proc HesapEkle<br />
@ad varchar(15),<br />
@soyad varchar(20),<br />
@bakiye money<br />
as<br />
insert into Hesap(Adi,Soyadi,Bakiye) values(@ad,@soyad,@bakiye)</p>
<p class="style1">--Procedure un kullan&#305;l&#305;&#351;&#305;:</p>
<p class="style1">Exec HesapEkle 'Metin','Soylu',25000</p>
<p class="style1">--&Ouml;rnek: D&#305;&#351;ar&#305;dan girilen ID ye ait hesap sahibinin Bakiyesini verilen de&#287;erle de&#287;i&#351;tiren procedure</p>
<p class="style1">create proc BakiyeDegis<br />
@id int,<br />
@yenibakiye money<br />
as<br />
update Hesap Set Bakiye=@yenibakiye where HesapID=@id</p>
<p class="style1">Exec BakiyeDegis 1,50000</p>
<p class="style1">--&Ouml;rnek : Verilen al&#305;c&#305; ve gonderici hesap numaras&#305;na g&ouml;re tarih alan&#305;n&#305; verilen yeni tarih ile de&#287;i&#351;tiren procedure.(ParaAktar)<br />
create proc TarihDegis<br />
@aliciid int,<br />
@gondid int,<br />
@yenitarih datetime<br />
as<br />
update ParaAktar set Tarih=@yenitarih where GondericiHesapID=@gondid and AliciHesapID=@aliciid</p>
<p class="style1">exec TarihDegis 1,4,'01.10.2010'</p>
<p class="style1">--&Ouml;rnek : Departman&#305; belirtilen &ccedil;al&#305;&#351;anlar&#305;n maa&#351;lar&#305;na belirtilen miktar kadar zam yapan procedure.<br />
create proc Zam<br />
@departmanid int,<br />
@zammiktari money<br />
as<br />
update Calisanlar set Maasi=Maasi+@zammiktari where Departmani=@departmanid</p>
<p class="style1">exec Zam 3,100</p>
<p class="style1">--&Ouml;rnek : Belirtilen toptanc&#305;ya ait &uuml;r&uuml;nleri g&ouml;steren procedure<br />
create proc UrunGoster<br />
@topid int<br />
as<br />
select * from Urunler where Toptanci=@topid</p>
<p class="style1">exec UrunGoster 3</p>
<p class="style1">--&Ouml;rnek : Urunler tablosuna sadece &uuml;r&uuml;n ad&#305;, fiyat&#305; ve miktar&#305; girilerek kay&#305;t eklenmek isteniyor. E&#287;er ayn&#305; adl&#305; &uuml;r&uuml;nden daha &ouml;nce kay&#305;t edilmi&#351;se sadece miktar&#305;n&#305; artt&#305;ran ve fiyat&#305; yeni fiyatla de&#287;i&#351;tiren, e&#287;er daha &ouml;nce ayn&#305; &uuml;r&uuml;n girilmemi&#351;se yeni kay&#305;t yapan procedure.</p>
<p class="style1">create proc YeniUrun<br />
@ad varchar(50),<br />
@fiyat money,<br />
@miktar int<br />
as<br />
if((select count(*) from Urunler where UrunAdi=@ad)&gt;0)<br />
update Urunler set Miktari=Miktari+@miktar, Fiyati=@fiyat where UrunAdi=@ad<br />
else<br />
insert into Urunler(UrunAdi,Miktari,Fiyati) values(@ad,@miktar,@fiyat)</p>
<p class="style1">Exec YeniUrun '&#304;stikbal Bazal&#305; Kanepe',500,5<br />
Exec YeniUrun '&#304;stikbal &Ccedil;al&#305;&#351;ma Masas&#305;',500,5</p>
<p class="style1">--De&#287;er Alan Prosed&uuml;rler<br />
--&Ccedil;a&#287;&#305;r&#305;ld&#305;klar&#305;nda bir de&#287;er(parametre) al&#305;rlar. Prosed&uuml;r isminin yan&#305;nda parantez a&ccedil;&#305;larak al&#305;nacak de&#287;er i&ccedil;in de&#287;i&#351;ken tan&#305;mlan&#305;r.</p>
<p class="style1">--&Ouml;rnek : D&#305;&#351;ar&#305;dan al&#305;nan 2 say&#305;y&#305; toplayan ve sonucu yazan prosed&uuml;r.</p>
<p class="style1">create proc Topla(@sayi1 int, @sayi2 int)<br />
as<br />
select @sayi1+@sayi2</p>
<p class="style1">--&Ccedil;al&#305;&#351;t&#305;r&#305;lmas&#305;<br />
Exec Topla 4,5</p>
<p class="style1">--2. yol</p>
<p class="style1">declare @s1 int<br />
select @s1=2<br />
declare @s2 int<br />
select @s2=5<br />
exec Topla @s1,@s2</p>
<p class="style1">--&Ouml;rnek : ID si verilen &ccedil;al&#305;&#351;an&#305;n t&uuml;m bilgilerini g&ouml;steren prosed&uuml;r.<br />
create proc BilgiGoster(@id int)<br />
as<br />
select * from Calisanlar where CalisanID=@id</p>
<p class="style1">--&Ccedil;al&#305;&#351;t&#305;r&#305;lmas&#305;<br />
Exec BilgiGoster 3</p>
<p class="style1">--&Ouml;rnek : Yetkilisi verilen m&uuml;&#351;terinin Telefon bilgisini g&ouml;steren prosed&uuml;r.<br />
create proc TelGoster(@yet varchar(15))<br />
as<br />
select SirketTelefonu from Musteriler where Yetkilisi=@yet</p>
<p class="style1">--&Ccedil;al&#305;&#351;&#305;t&#305;ryoruz<br />
exec TelGoster 'Leman &Ccedil;am'</p>
<p class="style1">--&Ouml;rnek : D&#305;&#351;ar&#305;dan g&ouml;nderilen departman id ye g&ouml;re, o departmanda ka&ccedil; ki&#351;inin &ccedil;al&#305;&#351;t&#305;&#287;&#305;n&#305; g&ouml;steren prosed&uuml;r.<br />
create proc KacKisi(@depid int)<br />
as<br />
select count(*) from Calisanlar where Departmani=@depid</p>
<p class="style1">exec KacKisi 3</p>
<p class="style1">--&Ouml;rnek : ID leri verilen iki &uuml;r&uuml;nden en pahal&#305;s&#305;n&#305; g&ouml;steren prosed&uuml;r.</p>
<p class="style1">create proc EnPahalisi(@id1 int, @id2 int)<br />
as<br />
if(select Fiyati from Urunler where UrunID=@id1)&gt;(select Fiyati from Urunler where UrunID=@id2)<br />
begin<br />
print @id1<br />
print 'id li &uuml;r&uuml;n daha pahal&#305;'<br />
end<br />
else<br />
begin<br />
print @id2<br />
print 'id li &uuml;r&uuml;n daha pahal&#305;'<br />
end</p>
<p class="style1">--&Ccedil;al&#305;&#351;t&#305;r&#305;yoruz<br />
Exec EnPahalisi 3,9</p>
<p class="style1">--Geriye De&#287;er D&ouml;nd&uuml;ren Procedure ler<br />
--Procedure den geriye bir de&#287;er d&ouml;nd&uuml;rmek i&ccedil;in RETURN kelimesi kullan&#305;l&#305;r. Burada sonuc procedure i&ccedil;inde yazd&#305;r&#305;lmaz, &ccedil;a&#287;&#305;r&#305;ld&#305;&#287;&#305; yere sonu&ccedil; gider ve orada yazd&#305;r&#305;l&#305;r.<br />
--&Ouml;rnek :<br />
--iki say&#305;n&#305;n toplam&#305;n&#305; geriye d&ouml;nd&uuml;ren prosed&uuml;r<br />
create proc DondurBakalim(@sayi1 int, @sayi2 int)<br />
as<br />
return @sayi1+@sayi2</p>
<p class="style1">declare @sonuc int<br />
exec @sonuc=DondurBakalim 2,3<br />
select @sonuc</p>
<p class="style1">--&Ouml;rnek : ID leri verilen iki &uuml;r&uuml;nden en pahal&#305;s&#305;n&#305;n id sini d&ouml;nd&uuml;ren prosed&uuml;r.</p>
<p class="style1">create proc EnPahali(@id1 int, @id2 int)<br />
as<br />
if(select Fiyati from Urunler where UrunID=@id1)&gt;(select Fiyati from Urunler where UrunID=@id2)<br />
return @id1<br />
else<br />
return @id2</p>
<p class="style1">declare @id int<br />
exec @id=EnPahali 3,9<br />
select @id</p>
<p class="style1">--UYGULAMA SORULARI:</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">declare @i1 int<br />
declare @i2 int<br />
select @i1=Fiyati from Urunler where UrunUD=@id1<br />
select @i2=Fiyati from Urunler where UrunUD=@id2<br />
if @i1&gt;@i2</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">--TRIGGER LAR (TET&#304;KLEY&#304;C&#304;LER)<br />
--Tablo &uuml;zerinde insert, update, delete i&#351;lemleri ger&ccedil;ekle&#351;mesi a&#351;amas&#305;nda ya da ger&ccedil;ekle&#351;tikten sonra otomatik olarak tetiklenen i&#351;lemlerdir.</p>
<p class="style1">--&Ouml;rnek : Departmanlar tablosuna yeni bir departman eklendi&#287;inde &Ccedil;al&#305;&#351;anlar&#305;n maa&#351;lar&#305;n&#305; %5 azaltan bir trigger yazal&#305;m.</p>
<p class="style1">--Trigger yaz&#305;l&#305;&#351;&#305; :</p>
<p class="style1">create trigger Trigger_adi <br />
on Tablo_adi<br />
after insert/delete/update<br />
as<br />
i&#351;lem</p>
<p class="style1">--Cevap :<br />
create trigger MaasDusur<br />
on Departmanlar<br />
after insert<br />
as<br />
Update Calisanlar set Maasi=Maasi-Maasi*0.10</p>
<p class="style1">insert into Departmanlar(DepartmanAdi) values('Giyim')</p>
<p class="style1">--&Ouml;rnek: &#350;irketTipleri tablosunda bir g&uuml;ncelleme oldu&#287;unda Musterilerin &#350;irketTipi alan&#305;n&#305; bo&#351;altan trigger.<br />
create trigger SirketTipiBosalt<br />
on SirketTipleri<br />
after update<br />
as<br />
update Musteriler set SirketTipi=null</p>
<p class="style1">update SirketTipleri set SirketTipi='Komandit' where SirketTipi='Limited'</p>
<p class="style1">--&Ouml;rnek : Sehirler tablosunda silme i&#351;lemi ger&ccedil;ekle&#351;ti&#287;inde M&uuml;&#351;terilerin &#351;ehir alan&#305;n&#305; 'Bilinmiyor' olarak de&#287;i&#351;tiren trigger.<br />
create trigger Silme<br />
on Sehirler<br />
after delete<br />
as<br />
update Musteriler set SirketSehri='Bilinmiyor' </p>
<p class="style1">delete from Sehirler where SehirID=2</p>
<p class="style1">--Siz bir tabloya kay&#305;t ekledi&#287;inizde eklenen kay&#305;t, &ouml;nce arka planda olu&#351;an inserted tablosuna eklenir. Kay&#305;t sildi&#287;inizde ise silinen kay&#305;t &ouml;nce arka plandaki deleted tablosuna eklenir, sonra silinir.<br />
create trigger DepartmanEkleme<br />
on Departmanlar<br />
after insert <br />
as <br />
select * from inserted</p>
<p class="style1">insert into Departmanlar(DepartmanAdi) values('Hobi ve oyun')</p>
<p class="style1">--&Ouml;rnek : Sipari&#351;lerden biri silindi&#287;inde, o sipari&#351;i alan &ccedil;al&#305;&#351;an&#305;n maa&#351;&#305;n&#305; %5 azaltan trigger.</p>
<p class="style1">create trigger SiparisIptali<br />
on Siparisler<br />
after delete<br />
as <br />
declare @id int<br />
select @id=CalisanID from deleted<br />
update Calisanlar set Maasi=Maasi-Maasi*0.05 where CalisanID=@id</p>
<p class="style1">--&Ouml;rnek : Satis isimli bir tablo olu&#351;turunuz(Alanlar&#305;: satis no,urunno,miktar) Satilan &uuml;r&uuml;n&uuml;n say&#305;s&#305;n&#305; yap&#305;lan sat&#305;&#351; miktar&#305; kadar azaltan trigger yaz&#305;n&#305;z.</p>
<p class="style1">create table Satis(<br />
SatisNo int primary key identity(1,1) not null,<br />
UrunNo int,<br />
Miktar int<br />
)</p>
<p class="style1">create trigger StokGuncelle<br />
on Satis<br />
for insert<br />
as<br />
declare @satisAdedi int, @urunid int<br />
select @satisAdedi=Miktar, @urunid=UrunNo from inserted<br />
update Urunler set Miktari=Miktari-@satisAdedi where UrunID=@urunid</p>
<p class="style1">--&Ouml;rnek : Bir &uuml;r&uuml;n&uuml;n sat&#305;&#351;&#305; iptal edildi&#287;inde(sat&#305;&#351; tablosundan kayd&#305; silindi&#287;inde) sat&#305;&#351; miktar&#305;n&#305; tekrar Urunler tablosundaki Miktara ekleyen trigger.<br />
create trigger SatisIptali<br />
on Satis<br />
for delete<br />
as<br />
declare @SatisAdedi int , @UrunID int<br />
select @SatisAdedi=Miktar, @UrunID=UrunNo<br />
from deleted<br />
update Urunler set Miktari=Miktari+@SatisAdedi where UrunID=@UrunID<br />
</p>
<p class="style1">--&Ouml;RNEK UYGULAMA(&Ouml;DEV)<br />
--Yapana s&ouml;zl&uuml; notu 100<br />
--Bir banka i&ccedil;in HESAPLAR tablosu olu&#351;turuluyor. Bu tabloda ki&#351;ilerin hesap numaralar&#305;, ad&#305; soyadlar&#305;, TC Numaralar&#305; ve Bakiye bilgileri bulunuyor.<br />
--Hesap sahiplerinin birbirlerine para havale etmeleri i&ccedil;in de PARAAKTAR tablosu olu&#351;turuluyor. Bu tabloda G&ouml;nderenin hesap numaras&#305;, al&#305;c&#305;n&#305;n hesap numaras&#305;, g&ouml;nderilen miktar ve tarih bilgileri tutuluyor.<br />
--Bir hesap sahibi di&#287;erine para aktaraca&#287;&#305; zaman(ParaAktar tablosuna kay&#305;t girildi&#287;inde) e&#287;er g&ouml;nderenin bakiyesi yetersiz ise 'Bakiye yetersiz' mesaj&#305;n&#305; veren, yeterli ise g&ouml;nderenin hesab&#305;ndaki bakiyeden g&ouml;nderilen para kadar&#305;n&#305; d&uuml;&#351;en ve al&#305;c&#305;n&#305;n bakiyesine g&ouml;nderilen miktar&#305; ekleyen trigger&#305; yaz&#305;n&#305;z.</p>
<p class="style1">create database banka<br />
use banka<br />
create table hesap<br />
(hesapID int primary key identity(1,1) not null,<br />
adi varchar(15) not null,<br />
Soyadi varchar(15) not null,<br />
Bakiye money)<br />
create table ParaAktar<br />
(GondericiHesapID int not null,<br />
AliciHesapID int not null,<br />
GonderilenMiktar money,<br />
Tarih datetime)<br />
</p>
<p class="style1">create trigger ParaAkt<br />
on ParaAktar<br />
for insert<br />
as<br />
declare @gondericihesapno int, @alicihesapno int, @gonderilenpara money<br />
select @gondericihesapno=GondericiHesapID, @alicihesapno=AliciHesapID, @gonderilenpara=GonderilenMiktar from inserted <br />
if((select Bakiye from Hesap where hesapID=@gondericihesapno)&lt;@gonderilenpara)<br />
print 'Yetersiz bakiye'<br />
else<br />
begin<br />
update hesap Set Bakiye=Bakiye+@gonderilenpara where hesapID=@alicihesapno<br />
update hesap set Bakiye=Bakiye-@gonderilenpara where hesapID=@gondericihesapno<br />
end<br />
</p>
<p class="style1">insert into ParaAktar(GondericiHesapID,AliciHesapID,GonderilenMiktar,Tarih) values(4,1,3000,'10.10.2010')<br />
</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
<p class="style1"></p>
<p class="style1">&nbsp;</p>
<p class="style1"></p>
<p class="style1">&nbsp; </p>
<p class="style1">&nbsp;</p>
<p class="style1">&nbsp;</p>
</body>
</html>

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol