<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Turkcekaynak.net &#187; SQL</title>
	<atom:link href="http://turkcekaynak.net/category/programlama/sql/feed" rel="self" type="application/rss+xml" />
	<link>http://turkcekaynak.net</link>
	<description>Windows 7, Wordpress, Dmoz, Google, Msn, Programlama, Yazılım, İnternet</description>
	<lastBuildDate>Fri, 21 Oct 2011 20:29:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Sql trigger tutorial</title>
		<link>http://turkcekaynak.net/programlama/sql/sql-trigger-tutorial.html</link>
		<comments>http://turkcekaynak.net/programlama/sql/sql-trigger-tutorial.html#comments</comments>
		<pubDate>Fri, 11 Sep 2009 21:36:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[sql trigger example]]></category>
		<category><![CDATA[sql trigger insert]]></category>
		<category><![CDATA[sql trigger örnekleri]]></category>
		<category><![CDATA[sql trigger sample]]></category>
		<category><![CDATA[sql trigger update]]></category>

		<guid isPermaLink="false">http://turkcekaynak.net/?p=501</guid>
		<description><![CDATA[Trigger kelime anlamı olarak tetikleyici demektir. trigger, SQL’de bir sorgu çalıştırdığımızda, başka bir sorgunun çalışmasını sağlamak için yazılan koddur. Mesela bir tablodan kayıt sildiğimizde, başka bir tablodan onunla ilgili bir kaydın silinmesi için kullanabiliriz. Yada bir tabloya eklem yaptığımızda başka bir tabloya da onunla ilgili olan bilgileri eklemek iin kullanabiliriz. Üç farklı işlem için trigger [...]]]></description>
			<content:encoded><![CDATA[<p style="float: right;margin: 4px;"><script type="text/javascript"><!--
google_ad_client = "pub-7647590832779597";
/* 250x250, oluşturulma 09.04.2010 */
google_ad_slot = "6514548591";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p> <p>Trigger kelime anlamı olarak tetikleyici demektir. trigger, SQL’de bir sorgu çalıştırdığımızda, başka bir sorgunun çalışmasını sağlamak için yazılan koddur. Mesela bir tablodan kayıt sildiğimizde, başka bir tablodan onunla ilgili bir kaydın silinmesi için kullanabiliriz. Yada bir tabloya eklem yaptığımızda başka bir tabloya da onunla ilgili olan bilgileri eklemek iin kullanabiliriz. Üç farklı işlem için trigger vardır. Bunlar; insert, update, delete sorguları içindir. Örnek verdiğimiz zaman daha iyi anlayacaksınız.</p>
<p>1-<strong>İnsert için trigger:</strong> Bir tabloya kayıt eklediğimizde başka bir tabloda kendiliğinden bir işlemin gerçekleşmesi için yazılır. Aşağıda bunun için bir örnek vardır beraber inceleyelim. Bu trigger, satis isimli tabloya ekleme yaptığımızda, urunler isimli tablodan, satılan ürünün sayısını yapılan satış kadar azaltmak için kullanılmaktadır.</p>
<pre class="brush: sql; title: ; notranslate">create trigger stokGuncelle on satis --bu satırda trigger adını yazıyoruz ve tetiklemenin kaynağı olan tabloyu yazıyoruz.
for insert --buraya dikkat edin. trigger’ın hangi komut için yazıldığını gösterir.
as
begin
declare @satisAdedi int, @urunid int -- iki adet değişken belirliyoruz.
select @satisAdedi=satisadedi, @urunid=urunid from inserted --yaptığımız insert işleminde satisadedi ve urunid değerlerini alıp bunları daha önce belirlediğimiz değişkenlere atıyoruz
update urunler set stokadedi=stokadedi-@satisAdedi where urunid=@urunid --şimdi aldığımız değişkenleri başka bir tabloda değişiklik yapmak için kullanıyoruz.
end</pre>
<p>2- <strong>Update için trigger:</strong> Bir tabloda güncellemede yaptığımızda başka bir tabloda da güncelleme yapmak için kullanılır. Burada dikkat edilmesi gereken, update işleminin çalışma mantığıdır. Aslında direk olarak update diye birşey yoktur. Update aslında iki basamakta gerçekleşir. Birinci adımda güncelleme yapacağımız satır silinir, ikinci adımda ise o satır yeniden eklenir ama bu sefer güncel değerleri eklenir. Şimdi tirgger kodumuzu inceleyelim.</p>
<pre class="brush: sql; title: ; notranslate">create trigger duzelt on satisfor update-- update işlemi ile tetiklemenin başlatıldığını gösterir.
as
begin
declare @yenisatisadedi int, @satisadedi int, @urunid int
select @satisAdedi=satisadedi, @urunid=urunid from deleted --silme işleminde silinen satırdaki satisadedi ve urunid değerlerini alıyoruz.
select @yenisatisadedi=satisadedi , @urunid=urunid from inserted --ekleme işleminde eklene satisadedi ve urunid değerlerini alıyoruz.
if(@yenisatisadedi&lt;@satisadedi) --eğer eklenen satisadedi değeri silinen satisadedi değerinden küçük ise işlem yapar. yani güncelleme yaptığımız değer eski değerden az ise.
begin
update urunler set stokadedi=stokadedi-(@satisadedi-@yenisatisadedi)

where urunid=@urunid -- ürünlerdeki stokadedini güncelleme yaptığımızda satisadedi değerindeki değişim kadar azaltır.
end
else
begin
update urunler set stokadedi=stokadedi+(@yenisatisadedi-@satisadedi)
where urunid=@urunid-- ürünlerdeki stokadedini güncelleme yaptığımızda satisadedi değerindeki değişim kadar artırır.
end
end</pre>
<p>Bu kod ile, satış tablosunda bir satırı güncellediğimizde, ürünler tablosunda o ürünün stok adedi değiştiriliyor. Yukarıda update işleminin iki basamakta gerçekleştiğini söylemiştik. Kodda da görüldüğü gibi ilk olarak silme işleminde silinen değerleri alıyoruz. Daha sonra ekleme işleminde eklenen değerleri de yeni değerler olarak alıyoruz. Sonra bu değerleri karşılaştırarak değişim miktarına göre ürünlerdeki stok adedini de güncelliyoruz.</p>
<p>3- <strong>Delete için trigger:</strong> Bu trigger de bir tabloda silme işlemi gerçekleştiğine başka bir tabloda değişiklik yamak için kullanılır. Aşağıdaki kodda satış tablosundan bir satırı sildiğimizde ürünler tablosunda değişiklik yapılıyor. Mesela bir ürünün satışını yaptınız ve satış yaptığınız anda ürünün stok adedini azalttınız. Ama bir aksilik çıktı satışı iptal ettiniz bu durumda ürünü yeniden stoğa eklemeniz gerekmektedir. Aşağıdaki kod da bu işe yaramaktadır.</p>
<pre class="brush: sql; title: ; notranslate">create trigger iptalEt on satisfor delete
as
begin
declare @satisAdedi int, @urunid int
select @satisAdedi=satisadedi, @urunid=urunid from deleted -- silinen satisadedi ve urunid değerlerini alıyoruz.
update urunler set stokadedi=stokadedi+@satisAdedi --satış tablosundan silinen ürün miktarı kadar ürünü ürünler tablosunda ekliyoruz.
where urunid=@urunid
end</pre>
]]></content:encoded>
			<wfw:commentRss>http://turkcekaynak.net/programlama/sql/sql-trigger-tutorial.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sql&#8217;de tablo oluşturmak, veri girmek ve veri çekmek</title>
		<link>http://turkcekaynak.net/programlama/sql/tablo-olusturma-veri-girme-cekme.html</link>
		<comments>http://turkcekaynak.net/programlama/sql/tablo-olusturma-veri-girme-cekme.html#comments</comments>
		<pubDate>Wed, 01 Jul 2009 15:52:55 +0000</pubDate>
		<dc:creator>nouscomd</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[create table]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[insert into]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://turkcekaynak.net/?p=149</guid>
		<description><![CDATA[SQL ile “Araba Kiralama” ( Rent a car ) için bir database oluşturalim. Database yapısında 5 tane tablo(relation) olacak. Customer tablosu, araba kiralayan kullanıcıların bilgilerini tutacak. Branchs tablosu, birden fazla şubeden kiralama yapıldığı için bu şubelerin adlarını tutacak. Car tablosu, kiralanan araba bilgilerini(model, marka&#8230;vs) tutacak. Salesman tablosu, bu şubelerde çalışan müşteri temsilcilerinin bilgilerini tutacak. Rent_info [...]]]></description>
			<content:encoded><![CDATA[<p>SQL ile “Araba Kiralama” ( Rent a car ) için bir database oluşturalim. Database yapısında 5 tane tablo(relation) olacak.</p>
<p><em>Customer</em> tablosu, araba kiralayan kullanıcıların bilgilerini tutacak.</p>
<p><em>Branchs tablosu</em>, birden fazla şubeden kiralama yapıldığı için bu şubelerin adlarını tutacak.</p>
<p><em> </em></p>
<p><em>Car tablosu</em>, kiralanan araba bilgilerini(model, marka&#8230;vs) tutacak.</p>
<p><em> </em></p>
<p><em>Salesman</em> tablosu, bu şubelerde çalışan müşteri temsilcilerinin bilgilerini tutacak.</p>
<p><em> </em></p>
<p><em>Rent_info</em> tablosu, kiralama işleminlerinin kaydını tutacak. Kimin hangi arabayi nezaman ve kimden aldığının bilgileri yer alacak.</p>
<p>Öncelikle bu tabloları oluşturacak SQL cümleciklerini yazalim.</p>
<p>Customer tablosu için:</p>
<pre class="brush: sql; title: ; notranslate">CREATE TABLE customer(cus_id number(5) primary key,fname varchar2(20) NOT NULL,lname varchar2(20) NOT NULL,birth_date date);</pre>
<p>Branchs tablosu için:</p>
<pre class="brush: sql; title: ; notranslate">CREATE TABLE branchs(branch_id number(3) primary key,branch_name varchar2(20) NOT NULL);</pre>
<p>Car tablosu için:</p>
<pre class="brush: sql; title: ; notranslate">CREATE TABLE car(car_id number(5) primary key,car_model number(4) NOT NULL,car_name varchar2(20) NOT NULL,branch_id number(3) references branch(branch_id));  </pre>
<p>Salesman tablosu için:</p>
<pre class="brush: sql; title: ; notranslate">CREATE TABLE salesman(sales_id number(5) primary key, s_fname varchar2(20) NOT NULL, s_lname varchar2(20) NOT NULL, branch_id number(3) references branch(branch_id)); </pre>
<p>Rent_info tablosu için:</p>
<pre class="brush: sql; title: ; notranslate">CREATE TABLE rent_info(rent_id number(5) primary key, cus_id number(5) references customer(cus_id),  car_id number(5) references car(car_id), rent_date date, sales_id number(5) references salesman(sales_id ));</pre>
<p style="text-align: center;"><a class="highslide-image" onclick="return hs.expand(this);" href="http://img7.imageshack.us/img7/1603/25579752.jpg"><img class="aligncenter" title="Büyüt" src="http://img36.imageshack.us/img36/5238/16930105.jpg" alt="image" width="150" height="102" /></a></p>
<p style="text-align: center;"><span id="more-149"></span></p>
<p>Tabloları oluşturduk. Şimdi bu tablolar için veri girişleri yapacak SQL cümlelerini yazalım. Örnek olarak her tablo için birer tane sql cümlesi yazacağım.</p>
<p><!--more--></p>
<p><!--Devam--></p>
<pre class="brush: sql; title: ; notranslate">INSERT INTO customer VALUES (1 , 'Hakan','Kesen', TO_DATE ('12.05.1980', 'dd.mm.yyyy'));</pre>
<pre class="brush: sql; title: ; notranslate">INSERT INTO branchs VALUES(1,'Beşiktaş');</pre>
<pre class="brush: sql; title: ; notranslate">INSERT INTO car VALUES(1,2006,'BMW',1);</pre>
<pre class="brush: sql; title: ; notranslate">INSERT INTO salesman VALUES(11,'Ali','Arcak',1);</pre>
<pre class="brush: sql; title: ; notranslate">INSERT INTO rent_info VALUES(100, 1, 1,TO_DATE(' 11.12.2008', 'dd.mm.yyyy'), 11);</pre>
<p>Veri girişlerinde dikkat edilmesi gerek şey  tablolardaki bağlantıların mantıklı bir şekilde girilmesi. Örneğin, x arabası, y şubesinden satıldıysa o satışı yapan satış sorumlusu da o şubeden olması gerekir.</p>
<p>Şimdi de birden fazla tablodan veri çekmek için gerekli sql cümleciklerini yazalım.</p>
<p><!--more--></p>
<ol>
<li>2004 ve daha yeni model araba kiralayanların ad ve soyadlarını görünteliyiniz.
<p style="text-align: center;"><a class="highslide-image" onclick="return hs.expand(this);" href="http://img200.imageshack.us/img200/6089/select1.jpg"><img title="Click to enlarge" src="http://img15.imageshack.us/img15/6089/select1.jpg" alt="image" /></a></p>
<pre class="brush: sql; title: ; notranslate">SELECT fname,  lname,  car_model FROM customer, car, rent_info WHERE customer.cus_id=rent_info.cus_id AND rent_info.car_id=car.car_id AND car_model&gt;=2004;</pre>
</li>
<li><strong> </strong>Şişli şubesinden araba kiralayanlarin ad-soyadlari ile kiraladıkları araba bilgilerini gösteriniz.
<p style="text-align: center;"><a class="highslide-image" onclick="return hs.expand(this);" href="http://img135.imageshack.us/img135/4074/select2j.jpg"><img class="aligncenter" title="Büyüt" src="http://img20.imageshack.us/img20/2154/select2.jpg" alt="image" width="150" height="13" /></a></p>
<pre class="brush: sql; title: ; notranslate">SELECT fname, lname, car_model, car_name, branch_name FROM customer, car, rent_info, branchs WHERE customer.cus_id=rent_info.cus_id AND rent_info.car_id=car.car_id AND car.branch_id=branchs.branch_id AND branch_name='Şişli'; </pre>
</li>
<li>Derya Seven adlı müşteri temsilcisinden araba kiralayanlarin ad-soyadlarini gösteriniz.
<p style="text-align: center;"><a class="highslide-image" onclick="return hs.expand(this);" href="http://img148.imageshack.us/img148/4387/select3.jpg"><img class="aligncenter" title="Büyüt" src="http://img197.imageshack.us/img197/4387/select3.jpg" alt="image" width="150" height="13" /></a></p>
<pre class="brush: sql; title: ; notranslate">SELECT fname, lname FROM customer, rent_info, salesman WHERE customer.cus_id=rent_info.cus_id AND salesman.sales_id=rent_info.sales_id AND s_fname='Derya' AND s_lname='Seven'; </pre>
</li>
<li>28.08.2008 tarihinden önce kiralanan araba ve şube isimlerinin görüntüleyiniz.(Tarihleriyle beraber sıralı bir biçimde)
<p style="text-align: center;"><a class="highslide-image" onclick="return hs.expand(this);" href="http://img141.imageshack.us/img141/5359/select4.jpg"><img class="aligncenter" title="Büyüt" src="http://img5.imageshack.us/img5/5359/select4.jpg" alt="image" width="150" height="24" /></a></p>
<pre class="brush: sql; title: ; notranslate"> SELECT branch_name, rent_date, car_name FROM car, rent_info, branchs WHERE rent_info.car_id=car.car_id AND car.branch_id=branchs.branch_id AND rent_date&lt;=To_date ('28.08.2008', 'dd.mm.yyyy') order by rent_date;</pre>
</li>
<li><strong> </strong>31 yaşından büyük müşterilerin(araba kiralayan) ad-soyadini gösteriniz.(Doğum tarihleriyle birlikte)
<p style="text-align: center;"><a class="highslide-image" onclick="return hs.expand(this);" href="http://img219.imageshack.us/img219/4812/select5.jpg"><img class="aligncenter" title="Büyüt" src="http://img4.imageshack.us/img4/4812/select5.jpg" alt="image" width="150" height="15" /></a></p>
<pre class="brush: sql; title: ; notranslate">SELECT fname, lname, birth_date FROM customer WHERE birth_date &lt;=To_date('1978', 'yyyy ');</pre>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://turkcekaynak.net/programlama/sql/tablo-olusturma-veri-girme-cekme.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

