6. Where komutu

1. WHERE KOMUTU 
Hatırlayacağınız üzere sql’de select komutuyla tablodan veri çekiyorduk. İstersek tüm tabloyu istersek de belirli kolonları ekrana getirebiliyorduk. Bu sorguları daha spesifik hale getirebiliriz örneğin sadece belli bir satırı ekrana getirmek isteyebiliriz veya bir tablonun içindeki belli ortak özelliklere sahip kayıtları ekrana getirmek isteyebiliriz. Yani kayıt sorgulamamızı belli koşullara bağlı yapabiliriz. Hemen bir senaryoyla bunu örneklendirelim.

Örn : Çalışanlar tablomuzdan 7 numaralı çalışanımızın kaydını ekrana getirmek istiyoruz.

    select * from Calisanlar where EmployeeID = 7
 

Örn : 30 yaşından küçük çalışanları ekrana getirmek istiyoruz .

    select * from Calisanlar where CalisanYas < 30


Örn :Ismi Ahmet olan çalışanları ekrana getirmek istiyoruz .

    select * from Calisanlar where Isım  = " Ahmet "

2. WHERE KOMUTUNU BOOLEAN IFADELERLE KULLANMAK

Diğer yazılım dillerinden de aşina olduğunuzu düşündüğüm boolean ifadeleri SQL’de de koşullu sorgular içerisinde kullanabilirsiniz. Bu ifadeler hepinizin bildiği üzere OR , AND ve NOT dır. Örneklere geçmeden önce OR ve AND’ın çalışma mantıgından biraz bahsetmek istiyorum.Sorgularda or veya and kullandığınız zaman bu sorgunun bir sonuç döndürebilmesi için koşul ifadesinin TRUE sonuç dönmesi gerekir yani koşulun sağlanması gerekir ancak bu true sonuç dönmesinin belli koşulları vardır ki siz bunlara matematik dersinin mantık konusundan aşina olmalısınız. Ben yinede bunlardan kısaca bahsetmek istiyorum.

Or ifadesinin doğruluk tablosu                             And ifadesinin doğruluk tablosu
True or True  = True                                                     True and True   =  True
True or False = True                                                     True and False = False
False or True = True                                                     False and True  = False
False or False = False                                                  False and False = False

yukarıdaki doğruluk tablolarını hepimiz eğitim hayatımızın bir bölümünde duymuşuzdur. Sql’de de aynı mantık geçerli  örneğin elimizde  ( yas > 30 or yas >50 ) gibi bir koşul var. Bunun doğrulanabilmesi için

eğer herhangi bir kaydın yaşı ;
30’dan büyükse ama 50’den büyük değilse  :  True or False = True   kayıt ekrana gelir.
30’dan  büyükse ve 50’den de büyükse           : True or True = True kayıt ekrana gelir
30 yaşından küçük ise                                             : False or False = False kayıt ekrana gelmez

Örn : select * from Kategoriler where KategoriID = 3 or KategoriID  = 5   ifadesi bize kategoriIDsi 3 olan kayitlari da 5 olan kayitlari da ekrana getirir. Çünkü koşullardan herhangi birinin doğruluğu koşulu TRUE yapmaya yeterlidir. Ancak
select * from Kategoriler where KategoriID = 3 and KategoriID = 5 ifadesi ekrana hiçbir kayıt döndürmez çünkü tüm koşul yapısının true olabilmesi için iki koşulunda aynı anda sağlanması yani TRUE olması lazımdır. Bir kaydın iki IDsi olamayacağından ekrana kayıt gelmeyecektir.

Örn : KategoriIdsi 1 , 4 ve 5 olan kayıtları ekrana getir.

select * from Kategoriler where KategoriID = 1 or KategoriID = 4 or KategoriID = 7

veya

select * from Kategoriler  where  KategoriID IN (1,4,7)

3. TABLODAN ARALIK SORGULAMA

 select * from Calisanlar where CalisanID > 3 and CategoryID < 7
 select * from Calisanlar where CalisanID between 3 and 7  (uçları da dahil eder)

4. TABLODAN TARIH SORGULAMA

  select * from Orders where YEAR(OrderDate) = 1998
  select * from Orders where MONTH(OrderDate) = 03
  select * from Orders where DAY(OrderDate) = 01
  select * from Orders where YEAR(OrderDate) = 1998 and  MONTH(OrderDate) = 03 and  DAY(OrderDate) = 01

*dogum günü bulma*

    DAY(BirthDate) = month(getdate()) and   MONTH(BirthDate)=MONTH( getdate() )   and   Year(BirthDate)=YEAR( getdate() )