Merhaba
arkadaşlar.Bu makalemde sizlere T-Sql olarak select ifadesini
anlatacağım.Öncelikle T-Sql nedir ondan bahsetmek istiyorum.Dünya üzerinde
standart hale getirilmiş Sql kullanımı vardır.Bu sql standartı bütün veri
tabanlarında kullanılmaktadır.Fakat bir çok veri tabanı sistemleri bu
standartın yetmediğini görüp kendilerine göre ekleme yapmışlardır.İşte
microsoft da bu standart sql e ek bir çok ekleme yaparak T-Sql i üretmiş ve
kullanmaktadır.Sql ile ilgili makalelerimde ağırlıklı olarak T-Sql i kullanacağım.
Bu kısa ön
bilgiden sonra gelelim asıl konumuza arkadaşlar.Öncelikle select ifadesi sql
standartlarında olan bir ifadedir.Fakat bazı yerlerde T-Sql e ait kullanımları
da mevcuttur.Peki nedir select ? Ne işe yarar ? Kelime anlamından da yola
çıkarsak eğer seçim yapmak için kullanılır genelde.Seçim yapmak nedir ? Veri
tabanınızda bir çok tablonuz ve bu tablolarınızda da bir sürü kayıtlar
mevcut.Bu kayıtları görebilmek , bu kayıtlar içinde filtreleme yaparak
istediğiniz koşuldaki kayıtları listelemek veya birden fazla tablonuzdaki
kayıtları birleştirerek ortak ve anlamlı listeleme raporlama yapmak gibi bir
çok işlem için select kullanılır.Yani kısaca ağırlıklı olarak kayıtları
istediğiniz şekilde düzenleyerek listeleyip görmeniz için select ifadesini kullanmanız
gerekmektedir.Hadi gelin örnekler üzerinden select ifadesini inceleyelim ...
Select
ifadesinin genel kullanımı : select [gösterilecek kolonların adı] from
[kayıtların olduğu tablo adı]
select CompanyName ,ContactName ,ContactTitle from Customers
Yukaridaki
kullanımda Customers tablosundaki 3 adet kolondaki kayıtlar
listelenmektedir.Fakat bu şekilde kullanılırsa gösterilen listede kolonların
başlığı kolonları adı olur.Fakat bunu bizim anlayacağımız hale getirmek
mümkündür.
select CompanyName as Firma,ContactName as Kişi,ContactTitle as Ünvan from Customers
select CompanyName Firma,ContactName Kişi,ContactTitle Ünvan from Customers
select CompanyName 'Firma',ContactName
'Kişi',ContactTitle 'Ünvan' from Customers
select CompanyName "Firma",ContactName "Kişi",ContactTitle
"Ünvan" from Customers
select CompanyName [Firma Adı],ContactName
[Kişi],ContactTitle [Ünvan] from Customers
Yukarıdaki 4
farklı kullanımda da kolonlara takma isim verme işlemi yapılır.Fakat
4.kullanımda önemli bir nokta var eğer vereceğiniz takma ad yani alias arasında
boşluk varsa ya [] içerisinde ya "" içerisinde yada '' içerisinde
yazılmak zorundadır.Microsoft [] içerisindeki kullanımı tavsiye etmektedir.
select FirstName + ' ' + LastName 'Ad Soyad' from Employees
Yukarıdaki
kullanıma literal kullanma denir.Yukarıdaki ifade Ad ve Soyadı kolonlarını
birleştirip içerisindeki verileri tek kolonda gösterir.
Kısaca giriş
yaptıktan sonra select ifadesinin kullanım amaçlarını anlatırken filtreleme
işleminden bahsetmiştim.Aşağıdaki örnek de filtreleme işlemi yapar.
select CompanyName,ContactName,ContactTitle,Country
from Customers
where Country='Germany'
Yukarıdaki
kullanımı incelediğimizde filtreleme için where ifadesinin kullanıldığını ve bu
ifadeden sonra da boolean bir ifade kullanıldığını yani bir koşul
belirtildiğini göreceğiz.Yukarıdaki örnekte ülkesi almanya olan müşterilerin
firma adı,iletişim adı , ünvanı ve ülkesi bilgilerini getiren bir sorgu vardır.
select CompanyName,ContactName,ContactTitle,Country
from Customers
where Country='Germany' or Country='Usa' and ContactTitle='Sales Manager'
Yukarıdaki
gibi birden çok koşula göre filtreleme işlemi yapılabilir.Fakat burada
bilinmesi gereken nokta C# taki gibi and operatörünün baskın olmasıdır. Bu
bilgiye göre yukarıdaki sorguya aşağıdaki gibi öncelik sırası belirtilmesi
gerekmektedir.
select CompanyName,ContactName,ContactTitle,Country
from Customers
where (Country='Germany' or Country='Usa') and ContactTitle='Sales Manager'
Bir başka
kullanıma göz atalım .
select CompanyName,ContactName,ContactTitle,Country
from Customers
where Country in ('Germany','Usa','Uk')
Şeklinde ki
kullanım aslında ,
select CompanyName,ContactName,ContactTitle,Country
from Customers
where Country='Germany' or Country='Usa' or Country='Uk'
Kullanımla
aynıdır.Yani ülkesi almanya , amerika veya ingiltere olanları getir
anlamındadır.
select CompanyName,ContactName,ContactTitle,Country
from Customers
where Country not in ('Germany','Usa','Uk')
Bu
kullanımda bir öncekinin tam tersi verileri geriye döndürür.Dikkat ederseniz
NOT ifadesi vardır.Not ifadesinden sonra belirtilenin tersi sonuç döner.
Peki
northwind veri tabanında Customers tablosundaki bulunan müşterilerin hangi
ülkeden olduğunu görmek istediğimizde tekrarlı olarak yani aynı ülkeden birden
fazla müşteri varsa o kadar aynı ülke göreceğiz.Faka bu yanlış bir sonuçtur.Bu
ülkelerin tekrarsız olarak listelenmesi gerekmektedir.Bu durumun çözümü de ;
select distinct Country from Customers
Yukarıdaki gibi DISTINCT ifadesiyle kolaylıkla çözülür.
Peki başka bir senaryo daha üretelim.Birim fiyatı 30(dahil) ve 50(dahil)
arasında olan ürünleri görmek istiyorsak eğer.
select
ProductName,UnitPrice from
Products
where UnitPrice>=30
and UnitPrice<=50
Şeklinde bir ifade yazmamız gerekir.Bu sorguyu daha kolay bir şekilde yazabiliriz.Bunun için where ifadesine between ifadesi eklememiz gerekir.
select
ProductName,UnitPrice from
Products
where UnitPrice between
30 and 50
Dikkat edilmesi gereken nokta girilen ilk değer ikinci değerden küçük olması gerekir.
Bir başka senaryo düşünerek başka filtreleme şekli görelim.Diyelim ki büyük bir firmanın veri tabanından sorumluyuz.Bir gün kampanya yapacaklarını söylediler ve kampanya da müşterilerimiz arasında isminin baş harfi T ile başlayanlara 50 Tl indirim çeki vereceğiz dediler.Dolayısıyla bizden baş harfi T ile başlayan müşterilerinin listesini istediler.Bunun için Like ifadesi ile filtreleme işlemi yapmamız yeterli olacaktır.
*** Like ifadesinin farklı kullanım şekillerini hep kampanya üzerinden anlatacağım.
select
companyName from Customers
where
CompanyName like 'T%'
Bir başka kampanyada ise T ile başlayıp S ile biten müşterilerimize 50 Tl hediye çeki verilecektir.Bunun için de ,
select companyName from Customers
where CompanyName like 'T%s'
Bir başka kampanyada ise baş harflerinde a,f,k ve h olan müşterilerimize 50 Tl hediye çeki verilecektir.Bunun için de ,
select companyName from Customers
where CompanyName like '[afhk]%'
Bir başka kampanyada ise baş harflerinde a,f,k ve h olan ve son harfi a ie s arasında olan müşterilerimize 50 Tl hediye çeki verilecektir.Bunun için de ,
select companyName from Customers
where CompanyName like '[afhk]%[a-s]'
Bir başka kampanyada ise baş harflerinde a,f,k ve h olan ve sondan 3. harfi a ie s arasında olan müşterilerimize 50 Tl hediye çeki verilecektir.Bunun için de ,
select companyName from Customers
where CompanyName like '[afhk]%[a-s]__'
Bir sonraki makalemde görüşmek dileğiyle arkadaşlar ...