Bu bölümde, sorgularınıza işlevsellik ve okunabilirlik katacak geliştirmelerin yanı sıra SELECT ifadesinin yapısını ve biçimini göreceğiz.

SELECT İfadeleri Yazma

SELECT ve FROM ifadeleri bu bölümün ana konusu olacaktır. Mantıksal sorgu işlemlerinin sırasını öğrenmiştik, böylelikle SELECT ifadelerini doğru şekilde nasıl oluşturacağımızı anlamış olduk.

FROM, WHERE, GROUP BY ve HAVING deyimlerinin, SELECT ifadesinden önce çalıştırılıyor. Bu nedenle SELECT ifadesinde yazılan ögeler, özellikle de hesaplanan sütunlar ve takma adlar, diğer ifadelerde görünmeyecektir.

Bir Tablo veya View’dan Sütun Çekme

SELECT ifadesi, sorgunun sonuç kümesi olarak dönmesini istediğiniz kaynak tablo veya view’larda bulunan sütunları belirtir. Sonuç kümesine, kaynak tablodaki sütunlara ek olarak diğer türden şeyleri de hesaplama biçiminde ekleyebilirsiniz.

FROM ifadesiyle sütunların kaynağı olan tablo veya view belirtilir. Tablo ve view isimlerini girerken hataları önlemek için schema ve nesne ismini SCHEMA.NESNE biçiminde yazmak en iyisi olacaktır (örneğin Sales.Customer).

Tablo veya view ismi, boşluk veya diğer özel karakterler gibi düzensiz karakterler içeriyorsa ismi sınırlandırmanız veya çevrelemeniz gerekmektedir. T-SQL, ANSI standardı olan çift tırnak “Sales Order Details” ve SQL Server’a özgü olan köşeli parantez [Sales Order Details] kullanımını desteklemektedir.

Yazdığınız tüm expression’ları noktalı virgül (;) karakteriyle sonlandırmanız iyi olacaktır. Böyle yapmak tabii ki isteğe bağlı, fakat gelecek sürümlerde kullanılması gerekecektir. Bazı CTE (Common Table Expressions) ve bazı Service Broker ifadeleri gibi noktalı virgül gerektiği zaman eksik bir noktalı virgül olduğunda döndürülen hata iletileri genellikle şifrelidir. Bu nedenle tüm ifadeleri noktalı virgülle sonlandırmayı alışkanlık hâline getirmeli ve benimsemelisiniz.

Sütunları Görüntüleme

Bir sorguda sütunları görüntülemek için virgülle ayrılmış bir sütun listesi oluşturmanız gerekmektedir. Listedeki sütunların sırası, kaynak tabloda hangi sırayla tanımlandığından bağımsız olarak çıktıdaki görüntüsünü belirler. Böylelikle sorgularınız, sütun eklenmesi veya sütunların yeniden sıralandırılması gibi tablonun yapısında yapılabilecek bir değişikliğe bağışıklık kazanmış olur.

T-SQL’de, tüm sütunları teker teker yazmak yerine yıldız karakteri (*) kullanarak tüm sütunlar çekilebilir. Yıldız işareti hızlıca bir test için uygun olsa da tabloda yapılan değişiklikler, sorgunun tablodaki mevcut sırasındaki tüm mevcut sütunları almasına neden olacağından üretimde aşamasında kullanmaktan kaçının. Kaçınmamanız durumunda, belirli bir sırada döndürüldüğü bilinen bir sütunu kullanan raporlarda veya uygulamalarda hatalar veya diğer aksaklıklar ortaya çıkabilir. Ayrıca gereksiz verileri döndürmek sorgularınızı yavaşlatır ve kaynak tablo çok sayıda satır içeriyorsa performans sorunları ortaya çıkacaktır.

SELECT ifadesinde sütun listesi yazarak istediğiniz sonuçları her zaman çekersiniz. Bir sütun düşürülürse, sorunu tanımlamanıza ve sorgunuzu düzeltmenize yardımcı olacak düzgün yazılmış bir hata alırsınız.

SELECT İfadesinde Hesaplamalar Yapma

Bir SELECT ifadesinde kaynak tabloda bulunan sütunları çekmeye ek olarak bir takım hesaplama ve manipülasyonlar gerçekleştirebilirsiniz. Hesaplama ve manipülasyonlarla kaynak sütun verisini değiştirebilir, bu bölüm ve daha sonraki bölümlerde öğreneceğiniz yerleşik T-SQL fonksiyonlarını kullanabilirsiniz.

Hesaplama çıktıları, sonuç kümesinin her satırı için tekrarlanır ve yeni bir sütunda görüntülenir. SELECT ifadesindeki hesaplanan değerler skaler olmalı ve yalnızca tek bir değer döndürmeleri gerekmektedir. İlerleyen bölümlerde tek bir çıktı veren yerleşik fonksiyonları inceleyeceğiz.

Hesaplanan ifadeler aynı satırdaki diğer sütunlarda, yerleşik fonksiyonlarda veya bu ikisinin birleşiminde de çalışabilir:

SELECT unitprice, qty, (unitprice * qty)
FROM Sales.OrderDetails; 

Sonuçlar aşağıdaki gibi gözükecektir:

unitprice qty
----------- ---------- -----------------------
14.00 12 168.00
9.80 10 98.00
34.80 5 174.00
18.60 9 167.40 

Hesaplamaları içeren sütunun sonuçlarla birlikte döndürülen bir adı yoktur. Sütuna takma ad vermek için, daha sonraki bölümlerde öğreneceğiniz takma adı (alias) kullanırız.

SELECT listesindeki bir sütunda yerleşik bir T-SQL işlevi kullanmak için, sütunun adını girdi olarak fonksiyona verin:

SELECT empid, lastname, hiredate, YEAR(hiredate)
FROM HR.Employees;

Dönen sonuçlar:

empid lastname hiredate
---------- ------------ -------------------------- ---------
1 Davis 2002-05-01 00:00:00.000 2002
2 Funk 2002-08-14 00:00:00.000 2002
3 Lew 2002-04-01 00:00:00.000 2002

Yapılan hesaplamalar her satır için tekrar hesaplanmayacaktır. SQL Server, bir fonksiyonun sonucunu sorgu yürütme sırasında bir kez hesaplayıp her satır için değeri tekrar tekrar kullanabilir. Buna sonraki bölümlerde değineceğiz.

Kaynak : SELECT (Transact-SQL)