﻿<?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 &#8211; SQL Server Eğitimleri</title>
	<atom:link href="https://sqlserveregitimleri.com/etiket/common-table-expression/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>
	</channel>
</rss>
