﻿<?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>Common Table Expression Kullanımı &#8211; SQL Server Eğitimleri</title>
	<atom:link href="https://sqlserveregitimleri.com/etiket/common-table-expression-kullanimi/feed" rel="self" type="application/rss+xml" />
	<link>https://sqlserveregitimleri.com</link>
	<description>SQL Server ile ilgili her şey</description>
	<lastBuildDate>Thu, 21 Oct 2021 06:30:29 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>SQL Server&#8217;da Common Table Expression (CTE) Kullanımı</title>
		<link>https://sqlserveregitimleri.com/sql-serverda-common-table-expression-cte-kullanimi</link>
		
		<dc:creator><![CDATA[Yavuz Selim Kart]]></dc:creator>
		<pubDate>Fri, 01 Oct 2021 08:54:39 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Common Table Expression]]></category>
		<category><![CDATA[Common Table Expression Kullanımı]]></category>
		<category><![CDATA[SQL Server’da Common Table Expression]]></category>
		<guid isPermaLink="false">https://sqlserveregitimleri.com/?p=10966</guid>

					<description><![CDATA[Herkese merhaba, Bu yazıda sizlere temel anlamda Common Table Expression yani CTE kullanımından bahsedeceğim. Common Table Expression Nedir? Bir sorgunun yürütülmesi anında elde edilmiş geçici...]]></description>
										<content:encoded><![CDATA[<p>Herkese merhaba,</p>
<p>Bu yazıda sizlere temel anlamda Common Table Expression yani CTE kullanımından bahsedeceğim.</p>
<p><strong>Common Table Expression Nedir?</strong></p>
<p>Bir sorgunun yürütülmesi anında elde edilmiş geçici sonuçları bir veya daha fazla kere kullanmaya olanak sağlayan ifadelerdir.</p>
<ul>
<li>Common Table Expression SQL Server&#8217; 2005 sürümü ile birlikte gelmiştir.</li>
<li>Common Table Expression bir Tablo veya View değildir.</li>
<li>Common Table Expression&#8217;lar geçici ve kalıcı tablolar gibi herhangi bir veri içermezler.</li>
<li>Common Table Expression&#8217;lar WITH sözcüğüyle tanımlanır.</li>
<li>Common Table Expression&#8217;ların çalışması dış sorguya bağlıdır. Dış sorgu sona erdiğinde Common Table Expression&#8217;ın ömrü de sona erer.</li>
<li>Common Table Expression&#8217;ın SELECT ifadesindeki sütunların her biri için ve ayrıca tablo ifadesi için de isim gerektirir.</li>
<li>Common Table Expression&#8217;larda sütunlara satır içi veya harici yolla takma adlar tanımlanabilir.</li>
<li>Common Table Expression&#8217;lar aynı sorguda bir tanımla birçok kez kullanılabilir.</li>
<li>Aynı WITH deyiminde birden çok Common Table Expression tanımlanabilir.</li>
<li>Common Table Expression&#8217;lar, ifadenin kendi içerisinde tanımlandığı tekrarlı işlemi destekler.</li>
<li>Common Table Expression&#8217;ların en önemli özelliği kendi kendini çağırabiliyor olması ve aynı sorgu içerisinden birden fazla çalıştırılabiliyor olmasıdır. Bu yüzden Recursive yani (Öz-yinelemeli) işlemlerde kullanılır.</li>
<li>Common Table Expression&#8217;lar TABLO ve VIEW yapılarından farklı olarak PRIMARY KEY, UNIQUE, NOT NULL, DEFAULT. gibi constraint’ler desteklenmez.</li>
<li>Common Table Expression&#8217;lar yalnızca SELECT değil INSERT, UPDATE ve DELETE yapılarında da kullanılabilir.</li>
<li>Common Table Expression’ların okunurluğu yüksektir.</li>
<li>Common Table Expression&#8217;ların kendi index&#8217;leri yoktur. İçeriğindeki tabloların index&#8217;lerini kullanırlar.</li>
<li>Common Table Expression&#8217;ların sonuçları depolanmaz.</li>
<li>Common Table Expression&#8217;ları VIEW, TEMP TABLO  ve TABLE-VALUED VARIABLES&#8217;a benzetebiliriz, fakat hiç bir şekilde alanların deklare edilmesi gerekmez.</li>
</ul>
<p><strong>Common Table Expression Nerelerde Kullanılır?</strong></p>
<ul>
<li>Common Table Expression&#8217;lar farklı tablolarda bulunan bilgi içeriklerinin birbiriyle karşılaştırılması gibi karmaşık işlerde kullanılabilir.</li>
<li>Common Table Expression&#8217;lar üretimde kullanılan ürün ağacında miktarların kümülatif hesaplanmasında kullanılabilir.</li>
<li>Karmaşık raporlama işlemlerinde kullanılabilirler.</li>
</ul>
<p><strong>Common Table Expression Örneği</strong></p>
<p>Burada basit bir Common Table Expression örneği yaparak sizlere anlatmaya çalışacağım. İşlemlerimi <strong>Northwind</strong> veri tabanı üzerinde yaptım. Siz de bu veri tabanı üzerinden deneyebilirsiniz.</p>
<pre class="line-numbers"><code class="language-sql">WITH CTEAdimizBuraya AS (
	SELECT * FROM dbo.Categories
) 
SELECT * FROM CTEAdimizBuraya</code></pre>
<p>Sorguyu çalıştırınca aşağıdaki sonucu göreceksiniz.</p>
<p><img fetchpriority="high" decoding="async" class="alignnone wp-image-10968 size-full" src="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-1.jpg" alt="SQL Server'da Common Table Expression (CTE) Kullanımı" width="700" height="440" srcset="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-1.jpg 700w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-1-315x198.jpg 315w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-1-477x300.jpg 477w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-1-215x135.jpg 215w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Yukarıda örnekte herhangi bir kolon ifadesi yazmadan en temel ve ham haliyle Common Table Expression ifadesini yazmak istedim.</p>
<p>Burada <strong>WITH</strong> ifadesinden sonra Common Table Expression&#8217;a bir ad veriyoruz ben burada <strong>CTEAdimizBuraya</strong> adında bir isim verdim sonra <strong>AS</strong> koyup parantezimi açtım, sorgumu yazdım.</p>
<p>En altta ise <strong>SELECT * FROM</strong> <strong>CTEAdimizBuraya</strong> kısmında da oluşturduğumuz Common Table Expression&#8217;ımızı çağırdık. İşlem bu kadar.</p>
<p>Peki, tablo&#8217;da kolon seçerek Common Table Expression&#8217;ı kullanmak isteseydik nasıl kullanacaktık? Aşağıdaki şekilde kullanacaktık.</p>
<pre class="line-numbers"><code class="language-sql">WITH CTEAdimizBuraya AS (
	SELECT CategoryName FROM dbo.Categories
) 
SELECT * FROM CTEAdimizBuraya</code></pre>
<p>Sorguyu çalıştırınca aşağıdaki sonucu göreceksiniz.</p>
<p><img decoding="async" class="alignnone wp-image-10969 size-full" src="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-2.jpg" alt="SQL Server'da Common Table Expression (CTE) Kullanımı" width="700" height="519" srcset="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-2.jpg 700w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-2-315x234.jpg 315w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-2-405x300.jpg 405w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-2-182x135.jpg 182w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Görüldüğü üzere tek bir kolon getirmiş olduk.</p>
<p>Aşağıdaki Common Table Expression örneğinde olduğu gibi kolon adı belirterek de kullanabilirsiniz ya da başkalarının yazdığı kodları incelerken de bu şekilde ifadeler görebilirsiniz.</p>
<pre class="line-numbers"><code class="language-markup">WITH CTEAdimizBuraya(KategoriAdi,Aciklama)
AS (SELECT CategoryName,Description
    FROM dbo.Categories)
SELECT *
FROM CTEAdimizBuraya;</code></pre>
<p>Sorguyu çalıştırınca aşağıdaki sonucu göreceksiniz.</p>
<p><img decoding="async" class="alignnone wp-image-10970 size-full" src="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-3.jpg" alt="SQL Server'da Common Table Expression (CTE) Kullanımı" width="700" height="564" srcset="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-3.jpg 700w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-3-315x254.jpg 315w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-3-372x300.jpg 372w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-3-168x135.jpg 168w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Yukarıda kodu çalıştırınca Türkçe kolon adlarının çıktığını görmüş olmalısınız.</p>
<p>Common Table Expression&#8217;a isim verip tanımladıktan sonra parantez açıp görünmesini istediğimiz kolonlara istediğimiz isimleri verip <strong> CTEAdimizBuraya(KategoriAdi,Aciklama) </strong>sonrasında bu kolonları sorgu içinde de belirtmelisiniz. Aksi durumda aşağıdaki hatayı verecektir.</p>
<pre class="line-numbers"><code class="language-sql">WITH CTEAdimizBuraya(KategoriAdi,Aciklama) --Hatalı Kullanım Örneği
AS (SELECT *
    FROM dbo.Categories)
SELECT *
FROM CTEAdimizBuraya;</code></pre>
<p>Sorguyu çalıştırınca aşağıdaki sonucu göreceksiniz.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-10971 size-full" src="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-4.jpg" alt="SQL Server'da Common Table Expression (CTE) Kullanımı" width="700" height="426" srcset="https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-4.jpg 700w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-4-315x192.jpg 315w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-4-493x300.jpg 493w, https://sqlserveregitimleri.com/wp-content/uploads/2021/10/sql-serverda-common-table-expression-cte-kullanimi-4-222x135.jpg 222w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>Hatayı <strong>SELECT * FROM dbo.Categories</strong> yazdığımız için aldık. <strong>SELECT CategoryName,Description FROM dbo.Categories</strong> şeklinde yazsaydık hata almayacaktık.</p>
<p>Common Table Expression ile ilgili en temel bilinmesi gereken şeylerin bunlar olduğunu düşünüyorum. İlerleyen zamanlarda daha detaylı örnekler yapacağım.</p>
<p>Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.</p>
<div class='epvc-post-count'><span class='epvc-eye'></span>  <span class="epvc-count"> 856</span><span class='epvc-label'> Kez Okundu</span></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SQL Server’da Common Table Expression Kullanımı</title>
		<link>https://sqlserveregitimleri.com/sql-serverda-common-table-expression-kullanimi</link>
		
		<dc:creator><![CDATA[Yavuz Selim Kart]]></dc:creator>
		<pubDate>Wed, 07 Mar 2018 16:03:20 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Common Table Expression Kullanımı]]></category>
		<category><![CDATA[SQL Server’da Common Table Expression]]></category>
		<category><![CDATA[SQL Server’da Common Table Expression Kullanımı]]></category>
		<guid isPermaLink="false">http://sqlserveregitimleri.com/?p=4829</guid>

					<description><![CDATA[Herkese merhaba, Bu yazıda SQL Server&#8217;da Common Table Expression kullanımından bahsedeceğim. Common Table Expression&#8217;a ortak tablo ifadeleri de denir. Sorguların yürütülmesi anında elde edilmiş olan geçici...]]></description>
										<content:encoded><![CDATA[<p>Herkese merhaba,</p>
<p>Bu yazıda SQL Server&#8217;da Common Table Expression kullanımından bahsedeceğim. Common Table Expression&#8217;a ortak tablo ifadeleri de denir. Sorguların yürütülmesi anında elde edilmiş olan geçici sonuçlardır. Bir veya daha fazla sefer kullanılabilirler.</p>
<p>CTE&#8217;nin özelliklerine değinirsek;</p>
<ul>
<li>Bir tablo ya da view değildir herhangi bir veri içermezler.</li>
<li>Kendi kendini çağırabilir ve aynı sorgu içerisinde birden fazla çalıştırılabilirler.</li>
<li>Daha çok recursive işlemlerde kullanılırlar.</li>
<li>Common Table Expression&#8217;larda table ve view yapılarından farklı olarak <i>primary key, unique, not null, default</i>. gibi constraint ifadeleri desteklenmez.</li>
<li>Common Table Expression&#8217;lar yalnızca SELECT işlemlerinde değil INSERT, UPDATE ve DELETE işlemlerinde de kullanılabilir.</li>
<li>Kendi indexleri yoktur. İçeriğindeki tabloların indexlerini kullanırlar.</li>
<li>Sadece çalıştığı sorgu bloğunda geçerlidir.</li>
<li>Farklı tablolarda bulunan bilgi içeriklerinin birbiriyle karşılaştırılması gibi karmaşık işlerde kullanılabilir.</li>
<li>Common Table Expression&#8217;ların okunurluğu yüksektir.</li>
</ul>
<p>Konu ile ilgili örneği Northwind veritabanını kullanarak yaptık. Örneği inceleyelim.</p>
<pre class="lang:default decode:true ">
WITH OnDolarUzerindekiUrunlerveKategorileri (ÜrünAd, KategoriAd, BirimFiyat) AS
(
   SELECT
      p.ProductName AS ÜrünAd,
      c.CategoryName AS KategoriAd,
      p.UnitPrice AS BirimFiyat
   FROM Products p
      INNER JOIN Categories c ON
         c.CategoryID = p.CategoryID
   WHERE p.UnitPrice &gt; 10.0
)

SELECT *
FROM OnDolarUzerindekiUrunlerveKategorileri
ORDER BY KategoriAd ASC, BirimFiyat ASC, ÜrünAd ASC
</pre>
<p>Burada With ile CTE yapımızı oluşturuyoruz. Sonrasında CTE&#8217;ye isim veriyoruz ve içteki sorguda çekmek istediğimiz alanları parantez içinde belirtiyoruz. Ben alias değerlerini yazdım. En altta ise verdiğimiz CTE ismini from ifadesinden sonra çağırıyoruz. CTE oluştururken kaç adet alanı parantez içinde belirttiyseniz o kadar alanı select ifadesinde çekebilirsiniz. Son olarak sorgu bütün halde çalışır. Sadece select sorgusunu çağırırsanız hata alacaksınız.</p>
<p>Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.</p>
<div class='epvc-post-count'><span class='epvc-eye'></span>  <span class="epvc-count"> 914</span><span class='epvc-label'> Kez Okundu</span></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
