Son Haberler
Anasayfa / Yazılım / SQL / Select ve Where Kullanımı

Select ve Where Kullanımı

SQL’de verilerimizi SELECT ile listeleyebiliyoruz. Peki verileri listeleme aşamasında bu verilerde belirli bir filtreleme yapabilir miyiz, yani istediğimiz şartlara göre listeleme yapabilmemiz mevcut mu? Elbetteki mevcut, bunun için T-SQL’de Where deyimini kullanırız. Herhangi bir sorguda verileri süzmek için Where deyimi Select deyimi ile birlikte kullanılır. Select deyiminin ardından seçeceğimiz alanları belirleriz daha sonra FROM deyimi ile hangi tablodan verileri çekeceğimizi belirtiriz ve bunun ardından WHERE deyimini eklediğimizde şartımızı belirtmiş oluruz.Kalıp olarak kullanımı şu şekilde :

SELECT column1, column2
FROM schema.table
WHERE column = value;

Şimdi kullanıma dair bir kaç örnek göstermek istiyorum. Adventureworks veritabanı üzerinde işlem yapıyorum.

1)

SELECT CustomerID, SalesOrderID,SalesPersonID FROM Sales.SalesOrderHeader
WHERE CustomerID=12000

141201

Sales.SalesOrderHeader tablosundan CustomerID değeri 12000 olan verilerin CustomerID, SalesOrderID ve SalesPersonID alanlarını listeledik.

2)

SELECT CustomerID, SalesOrderID, SalesPersonID FROM Sales.SalesOrderHeader
WHERE SalesOrderID=43665

141202

Sales.SalesOrderHeader tablosundan SalesOrderID değeri 43665 olan verilerin CustomerID, SalesOrderID ve SalesPersonID alanlarını listeledik.

3)

SELECT CustomerID,SalesOrderID,OrderDate FROM Sales.SalesOrderHeader
WHERE OrderDate = '2005-08-01'

141203

Sales.SalesOrderHeader tablosundan OrderDate değeri 2005-08-01 olan verilerin CustomerID, SalesOrderID ve SalesPersonID alanlarını listeledik.

4)

SELECT BusinessEntityID, LoginID, JobTitle, MaritalStatus, Gender
FROM HumanResources.Employee WHERE JobTitle='Tool Designer'

141204

HumanResources.Employee tablosundan JobTitle değeri Tool Designer olan verilerin BusinessEntityID, LoginID, JobTitle, MaritalStatus, Gender alanlarını listeledik.

Görüldüğü gibi Where kullanımı bu şekilde. Peki biz hep eşitlik durumunu aradık, bu WHERE kullanımında başka şartlar öne sürebilir miyiz? gibi bir soru aklınıza geliyor, duyar gibiyim 🙂

WHERE deyimi için sadece eşitlik ifadesi değil diğer karşılaştırmaları da kullanabilirsiniz, bunlar :

< küçüktür > büyüktür
= eşittir
<= küçük eşittir >= büyük eşittir
!= eşit değildir
<> eşit değildir
!< belirtilen ifadeden daha küçük değildir !> belirtilen ifadeden daha büyük değildir

Kullanımlarını örneklersek;

SELECT CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate 
FROM Sales.SalesOrderHeader WHERE OrderDate > '2005-07-31'

141205

Sales.SalesOrderHeader tablosundan OrderDate alanının değerinin 2005-07-31 tarihinden daha büyük olanların (daha yeni olanlar oluyor yani) listelenmesini sağladık, bunlarında listelenecek alanlarını CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate olarak belirledik.

SELECT CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate 
FROM Sales.SalesOrderHeader WHERE OrderDate < '2005-07-31'

141206

Bu seferde tam tersini yaptık. Sales.SalesOrderHeader tablosundan OrderDate alanının değerinin 2005-07-31 tarihinden daha küçük olanların (daha eski olanlar oluyor yani) listelenmesini sağladık, bunlarında listelenecek alanlarını CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate olarak belirledik.

Bundan sonrakilerin sonuçlarını resmetmiyorum. Sadece örneğimde sorgumu yazacağım ve açıklamasını yapacağım.

SELECT CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate 
FROM Sales.SalesOrderHeader WHERE OrderDate <= '2005-07-31'

Sales.SalesOrderHeader tablosundan OrderDate alanının değerinin 2005-07-31 tarihinden daha küçük ve eşit olanların (daha eski olanlar ve aynı olanlar oluyor yani) listelenmesini sağladık, bunlarında listelenecek alanlarını CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate olarak belirledik.

SELECT CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate 
FROM Sales.SalesOrderHeader WHERE OrderDate >= '2005-07-31'

Sales.SalesOrderHeader tablosundan OrderDate alanının değerinin 2005-07-31 tarihinden daha büyük ve eşit olanların (daha yeni olanlar ve aynı olanlar oluyor yani) listelenmesini sağladık, bunlarında listelenecek alanlarını CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate olarak belirledik.

SELECT CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate 
FROM Sales.SalesOrderHeader WHERE OrderDate <> '2005-07-31'

Sales.SalesOrderHeader tablosundan OrderDate alanının değerinin 2005-07-31’e eşit olmayanlarının listelenmesini sağladık, bunlarında listelenecek alanlarını CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate olarak belirledik.

SELECT CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate 
FROM Sales.SalesOrderHeader WHERE OrderDate != '2005-07-31'

Üstteki sorgu ile aynı sonuçlar döner, aslında tamamen aynı fakat eşit değildir simgemiz farklı. Sales.SalesOrderHeader tablosundan OrderDate alanının değerinin 2005-07-31’e eşit olmayanlarının listelenmesini sağladık, bunlarında listelenecek alanlarını CustomerID, SalesOrderID, SalesPersonID, OrderDate, DueDate olarak belirledik.

Hep bir karakter dizisi ile karşılaştırma yaptık. Şimdi birde sayısal bir değerle karşılaştırma yapalım.

SELECT SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty
FROM Sales.SalesOrderDetail WHERE OrderQty > 5

Sales.SalesOrderDetail tablosundan OrderQty alanının değerinin 5’ten büyük olanları için SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty alanlarının listelenmesini istedik.

SELECT SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty
FROM Sales.SalesOrderDetail WHERE OrderQty < 5

Sales.SalesOrderDetail tablosundan OrderQty alanının değerinin 5’ten küçük olanları için SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty alanlarının listelenmesini istedik.

SELECT SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty
FROM Sales.SalesOrderDetail WHERE OrderQty <= 5

Sales.SalesOrderDetail tablosundan OrderQty alanının değerinin 5’ten küçük ve eşit olanları için SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty alanlarının listelenmesini istedik.

SELECT SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty
FROM Sales.SalesOrderDetail WHERE OrderQty >= 5

Sales.SalesOrderDetail tablosundan OrderQty alanının değerinin 5’ten büyük ve eşit olanları için SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty alanlarının listelenmesini istedik.

SELECT SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty
FROM Sales.SalesOrderDetail WHERE OrderQty != 5

Sales.SalesOrderDetail tablosundan OrderQty alanının değerini 5’e eşit olmayanlar için SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty alanlarının listelenmesini istedik.

SELECT SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty
FROM Sales.SalesOrderDetail WHERE OrderQty <> 5

Sales.SalesOrderDetail tablosundan OrderQty alanının değerini 5’e eşit olmayanlar için SalesORderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty alanlarının listelenmesini istedik.

String örnekleri yapalım :

SELECT BusinessEntityID, PersonType, Title, FirstName, MiddleName, LastName  
FROM Person.Person WHERE FirstName <> 'Humberto';

Person.Person tablosundan FirstName kolonu Humberto olmayan verilerin BusinessEntityID, PersonType, Title, FirstName, MiddleName, LastName listelenmesini sağladık.

SELECT BusinessEntityID, PersonType, Title, FirstName, MiddleName, LastName  
FROM Person.Person WHERE FirstName != 'Humberto';

Person.Person tablosundan FirstName kolonu Humberto olmayan verilerin BusinessEntityID, PersonType, Title, FirstName, MiddleName, LastName listelenmesini sağladık.

SELECT BusinessEntityID, PersonType, Title, FirstName, MiddleName, LastName  
FROM Person.Person WHERE FirstName = 'Humberto';

Person.Person tablosundan FirstName kolonu Humberto olan verilerin BusinessEntityID, PersonType, Title, FirstName, MiddleName, LastName listelenmesini sağladık.

SELECT BusinessEntityID, PersonType, NameStyle, FirstName, MiddleName,LastName 
FROM Person.Person WHERE FirstName > 'K';

Person.Person tablosundan FirstName kolonunda yer alan ismin K harfinden büyük olanların yani L,M,N diye sonrasında devam eden isimlerin BusinessEntityID, PersonType, NameStyle, FirstName, MiddleName,LastName alanları ile listelenmesini sağladık.

SELECT BusinessEntityID, PersonType, NameStyle, FirstName, MiddleName,LastName 
FROM Person.Person WHERE FirstName < 'K';

Bu sorguda sadece K harfi baz alınır. Yani K’dan büyük olanlar listelenecektir. Bu şu demek K yanına bir harf aldığında o yine K’dan büyüktür. Bu gibi durumlara dikkat etmek gerek 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir