Merhaba arkadaşlar,
A’dan Z’ye Temel SLECT İfadeleri yazı dizimize devam ediyoruz.Bu makalede geçen kaldığımız yerden devam fakat devam etmeden önce hatırlamak isteyenler diğer makaleye http://www.asp.net.tr/Makale/900-A’dan-Z’ye-Temel-SLECT-Ifadeleri-2.aspx
Adresinden ulaşabilirler.
IN Operatörü bir kolonun birden fazla değer alabileceği durumlarda kullanılmaktadır. Karşılaştırma operatörü olan ‘OR’ ile aynı işlevi görmektedir. Örneğin
USE AdventureWorks
GO
SELECT * FROM Production.Product
WHERE ProductID in(320,321,322)
Yukarıdaki kullanımla aşağıdaki kullanım aynı işlevi görmektedir. Fakat örnekteki gibi sıralı bir kullanım varsa burada IN operatörü yerine between kullanmak daha iyi bir performans elde etmemizi sağlayacaktır.
USE AdventureWorks
GO
SELECT * FROM Production.Product
WHERE ProductID=320 or ProductID=321 or ProductID=322
IS NULL Operatörü where ile kullanıldığında operand olarak aldığı kolonun içeirğinin Null olup olmadığını kontrol eder. Örneğin tablomuzda null değer içeren satırları listelemek için is null ifadesi aşağıdaki gibi kullanabiliriz:
USE AdventureWorks
GO
SELECT * FROM Production.Product
WHERE Color is null
Bu sorgu ile Color kolonuna değer girilmemiş kayıtlar bize dönecektir.
NOT Operatörü adından da anlaşılacağı üzere koşullarımıza olumsuzluk katan bir ifadedir. Örneğin WHERE ProductID in(320,321)
ile ProductID Sutunun değerlerinin 320 veya 321 eşit olanları sorgularken bu ifadeye ekleyeceğimiz NOT operatorü ProductID değeri 320 ve 321 dışında kalan kayıtları listeleyecektir.
USE AdventureWorks
GO
SELECT * FROM Production.Product
WHERE ProductID Not in(320,321,322)
Aynı şekilde Not ifadesinin Is Null operatörü ile kullanıp Null olamayan satırları da listeleyebiliriz.
USE AdventureWorks
GO
SELECT * FROM Production.Product
WHERE Color is Not null
Yine aynı kullanım Between operatörü içinde geçerlidir.
USE AdventureWorks
GO
SELECT * FROM Production.Product
WHERE ProductID Not between 320 and 322
EXIST Operatörü parametre olarak aldığı SubQueryden değer dönüp dönmediği bilgisini bize verir. Örnek olarak
USE AdventureWorks;
GO
SELECT a.FirstName, a.LastName
FROM Person.Contact AS a
WHERE EXISTS
(SELECT *
FROM HumanResources.Employee AS b
WHERE a.ContactID = b.ContactI
AND a.LastName = 'Johnson');
Aynı ifadeyi IN Operatörü ile şu şekilde yazabiliriz:
USE AdventureWorks;
GO
SELECT a.FirstName, a.LastName
FROM Person.Contact AS a
WHERE a.ContactID in (Select b.ContactI FROM HumanResources.Employee AS b where a.LastName = 'Johnson')
Exist Operatörü de Not ifadesi ile olumsuzlaştırılabilir.
USE AdventureWorks;
GO
SELECT a.FirstName, a.LastName
FROM Person.Contact AS a
WHERE NOT EXISTS
(SELECT *
FROM HumanResources.Employee AS b
WHERE a.ContactID = b.ContactI
AND a.LastName = 'Johnson');
NOT: Exist Operatörünün çok kullanıldığı yerlerden biri de işlem yapılmadan önce bir nesnenin üzerinde var olup olmadığını kontrol etmektir. Örnek olarak
USE AdventureWorks;
GO
if EXISTS(Select * From sys.tables where object_id=object_id('dbo.Urunler'))
Drop table dbo.Urunler
Bu makalede temel operatorlere değindik bu yazının devamında order by deyiminden söz ettikten sonra daha performanslı ve anlaşılabilir Select ifadeleri yazmak için dikkat etmemiz gerek noktalara değineceğiz.
Kolay Gelsin