﻿<?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>CTE Kullanımı &#8211; SQL Server Eğitimleri</title>
	<atom:link href="https://sqlserveregitimleri.com/etiket/cte-kullanimi/feed" rel="self" type="application/rss+xml" />
	<link>https://sqlserveregitimleri.com</link>
	<description>SQL Server ile ilgili her şey</description>
	<lastBuildDate>Sat, 25 Mar 2023 13:58:21 +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 CTE&#8217;leri Kullanmak</title>
		<link>https://sqlserveregitimleri.com/sql-serverda-cteleri-kullanmak</link>
		
		<dc:creator><![CDATA[Yavuz Selim Kart]]></dc:creator>
		<pubDate>Sat, 25 Mar 2023 13:58:21 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[CTE Kullanımı]]></category>
		<category><![CDATA[SQL Server CTE]]></category>
		<category><![CDATA[SQL Server'da CTE]]></category>
		<guid isPermaLink="false">https://sqlserveregitimleri.com/?p=15824</guid>

					<description><![CDATA[Herkese merhaba, Bu yazıda SQL Server’da CTE&#8217;leri kullanmak ile ilgili bilgi vermeye çalışacağım. SQL Server&#8217;da CTE (Common Table Expressions), geçici olarak bir SQL ifadesi içinde...]]></description>
										<content:encoded><![CDATA[<p>Herkese merhaba,</p>
<p>Bu yazıda SQL Server’da CTE&#8217;leri kullanmak ile ilgili bilgi vermeye çalışacağım.</p>
<p>SQL Server&#8217;da CTE (Common Table Expressions), geçici olarak bir SQL ifadesi içinde kullanılan ve sorguların daha okunaklı ve anlaşılır hale getirilmesine yardımcı olan bir yapıdır.</p>
<p>Tablo oluşturarak bir CTE örneği yapalım. Örneğimizde bir müzik şirketinin şarkı ve albüm verilerini içeren iki tablosu var: Songs ve Albums. Şimdi, CTE kullanarak, her albümdeki en popüler şarkıları bulalım.</p>
<p>Öncelikle, Songs ve Albums tablolarını oluşturalım:</p>
<pre class="line-numbers"><code class="language-sql">CREATE TABLE Songs (
	SongID INT
   ,SongName VARCHAR(50)
   ,AlbumID INT
   ,Plays INT
);

INSERT INTO Songs
	VALUES (1, 'Shape of You', 1, 10000000);
INSERT INTO Songs
	VALUES (2, 'Castle on the Hill', 1, 8000000);
INSERT INTO Songs
	VALUES (3, 'Galway Girl', 1, 5000000);
INSERT INTO Songs
	VALUES (4, 'Perfect', 2, 12000000);
INSERT INTO Songs
	VALUES (5, 'Happier', 2, 6000000);
INSERT INTO Songs
	VALUES (6, 'New Man', 2, 4000000);
INSERT INTO Songs
	VALUES (7, 'Sweet Child O'' Mine', 3, 9000000);
INSERT INTO Songs
	VALUES (8, 'November Rain', 3, 7000000);
INSERT INTO Songs
	VALUES (9, 'Paradise City', 3, 6000000);

CREATE TABLE Albums (
	AlbumID INT
   ,AlbumName VARCHAR(50)
   ,Artist VARCHAR(50)
);

INSERT INTO Albums
	VALUES (1, '÷', 'Ed Sheeran');
INSERT INTO Albums
	VALUES (2, 'Divide', 'Ed Sheeran');
INSERT INTO Albums
	VALUES (3, 'Appetite for Destruction', 'Guns N'' Roses');</code></pre>
<p>Şimdi, CTE kullanarak her albümdeki en popüler şarkıları bulalım:</p>
<pre class="line-numbers"><code class="language-sql">WITH CTE_AlbumPopularity
AS
(SELECT
		AlbumID
	   ,MAX(Plays) AS MaxPlays
	FROM Songs
	GROUP BY AlbumID)
SELECT
	a.AlbumName
   ,s.SongName
   ,s.Plays
FROM CTE_AlbumPopularity p
INNER JOIN Songs s
	ON p.AlbumID = s.AlbumID
		AND p.MaxPlays = s.Plays
INNER JOIN Albums a
	ON s.AlbumID = a.AlbumID;</code></pre>
<p>Yukarıdakş sorgu, her albümdeki en popüler şarkıları bulur ve şarkı adını, albüm adını ve dinlenme sayısını döndürür. Bu örnekte, CTE_AlbumPopularity adında bir CTE tanımlanmıştır. Bu CTE, Songs tablosundaki her albümün en yüksek dinlenme sayısını bulur ve her bir albüm için bir satır döndürür. Daha sonra, CTE_AlbumPopularity ile Songs tablosu içindeki AlbumID ve Plays alanlarını birleştirerek, her albümdeki en popüler şarkıyı bulan bir sorgu oluşturulmuştur.</p>
<p>CTE kullanmanın avantajları şunlardır:</p>
<ul>
<li>Daha okunaklı ve anlaşılır sorgular yazmanıza yardımcı olur.</li>
<li>Karmaşık sorguları daha kolay yönetmenizi sağlar.</li>
<li>Performansı artırabilir, çünkü CTE&#8217;ler, sorguları daha iyi optimize etmek için kullanılabilir.</li>
</ul>
<p>Ancak, CTE&#8217;lerin dezavantajı, büyük veri kümeleriyle çalışırken bellek kullanımının artmasıdır. Bu nedenle, büyük veri kümeleriyle çalışırken, CTE kullanmadan önce dikkatli bir şekilde düşünmelisiniz.</p>
<p>CTE (Common Table Expressions) yazarken aşağıdaki faktörleri göz önünde bulundurmak da önemlidir:</p>
<ol>
<li>CTE&#8217;nin amacını belirleyin: CTE&#8217;ler, sorgunuzu daha okunaklı ve anlaşılır hale getirmek veya karmaşık sorguları daha kolay yönetmek için kullanılır. CTE yazmadan önce, ne tür bir işlevi yerine getirmek istediğinizi belirleyin.</li>
<li>CTE&#8217;yi doğru şekilde tanımlayın: CTE&#8217;ler, WITH anahtar kelimesi ile başlar ve SELECT ifadesinden önce tanımlanır. CTE&#8217;yi tanımlarken, geçici bir tablo oluşturduğunuzu ve bu tablodan sorgunuzu çalıştıracağınızı unutmayın.</li>
<li>CTE&#8217;yi sorgunuzda doğru şekilde kullanın: CTE&#8217;yi sorgunuzda kullanırken, CTE&#8217;yi SELECT, INSERT, UPDATE veya DELETE ifadeleri ile birleştirebilirsiniz. CTE&#8217;yi sorgunuzda nasıl kullanacağınızı belirlerken, CTE&#8217;nin sonuç kümesinin nasıl kullanılacağına dikkat edin.</li>
<li>CTE&#8217;nin performansını değerlendirin: CTE&#8217;ler, sorgunuzu daha optimize etmek için kullanılabilir. Ancak, büyük veri kümeleriyle çalışırken, CTE kullanmadan önce performansı dikkatli bir şekilde değerlendirmelisiniz.</li>
<li>CTE&#8217;nin okunaklı olmasını sağlayın: CTE&#8217;ler, sorgunuzu daha okunaklı ve anlaşılır hale getirmek için kullanılır. Ancak, CTE&#8217;nin okunaklı olması için, CTE&#8217;yi olabildiğince açıklayıcı bir şekilde adlandırın ve tablo ve sütun isimlerini anlaşılır bir şekilde seçin.</li>
<li>CTE&#8217;nin yeniden kullanılabilirliğini düşünün: CTE&#8217;ler, yeniden kullanılabilir kod parçaları oluşturmak için kullanılabilir. CTE&#8217;yi yeniden kullanmak isterseniz, CTE&#8217;nin amacını belirleyin ve CTE&#8217;yi yazarken okunaklı ve anlaşılır bir şekilde adlandırın.</li>
</ol>
<p>CTE&#8217;leri yazarken, sorgunuzu daha okunaklı ve anlaşılır hale getirmek için kullanırken, performansı ve yeniden kullanılabilirliği de göz önünde bulundurmanız önemlidir.</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"> 159</span><span class='epvc-label'> Kez Okundu</span></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
