WHERE komutu veritabanından belirli şartlara göre sorgu yapmamızı sağlar. Böylelikle veritabanından çekeceğimiz verileri dilediğimizce filtreleyebiliriz.
Sorgu sözdizimi;
SELECT (sutunAdi) FROM (tabloAdi) WHERE (şartlar) şeklindedir.
WHERE komutunu kullanırken karşılaştırma ve mantıksal operatörlerinden yardım alabiliriz. Karşılaştırma ve Mantıksal operatörler aşağıda verilmiştir;
Karşılaştırma Operatörleri :
Mantıksal Operatörler :
Örneğin “ogrenci” tablosundan sadece Giresun’lu olan öğrencilerin adını çekelim;
1 |
SELECT adiSoyadi FROM ogrenci WHERE sehir="Giresun"; |
Yukarıdaki kod ile “ogrenci” tablosundaki “sehir” sütununda “Giresun” kayıtlı olan öğrencilerin karşılaştırma operatörü olan eşittir operatörü ile sadece isimlerini çektik.
Sorgumuzun çıktısı aşağıdaki gibi olacak;
Şimdi dilerseniz birde mantıksal operatör olan AND operatörü ile Giresun’lu olan VE “id” değeri 10’dan küçük olan öğrencilerin tüm bilgilerini çekelim.
Sorgumuz aşağıdaki gibi olacak;
1 |
SELECT * FROM ogrenci WHERE sehir="Giresun" AND id<10; |
Yukarıdaki kodda “Giresun” değerini tırnak içerisinde yazmamızın sebebi, veri türünün VARCHAR (karakter) olmasıdır. “10” değerini tırnaksız olarak direkt yazmamızın sebebi ise veri türünün INT (INTEGER) olmasıdır.
Sorgumuzun çıktısı aşağıdaki gibi olacak;
Ayrıca şartları arama komutu LIKE, arasında komutu BETWEEN ve içinde komutu olan IN komutu ile sorgularımızı genişletebiliriz.
Like komutu veriler içinde benzer kelimeleri aramak için kullanılır. LIKE komutu, şart komutu olan WHERE komutu ile birlikte kullanılır. LIKE ile arama yaparken bir takım arama karakterleri kullanılır. Bu karakterler yüzde “%” ve alt çizgi “_” karakterleridir.
İsterseniz şimdi LIKE komutunun nasıl kullanıldığına bakalım;
Yüzde (%) karakteri herhangi bir karakter grubu ya da cümlenin yerini tutar. Alt çizgi (_) karakteri ise yalnızca bir karakterin yerini tutar. Örneğin belli bir sütunda “M” harfi ile başlayan kayıtları çekmek istediğimizde “M%” ifadesini kullanırız. Bu da demk olur ki baş harfi “M” harfi ile başlasın ancak devamı herhangi birşey olabilir.
Baş harfi M ile başlayan tabloları bulmak için “M%” şeklinde bir LIKE şartı kullanılır.
Sorgu cümlemizin yapısı;
SELECT => (Çekilecek Alanlar) + (FROM) => (Tablo Adı) + (WHERE) => (sorgu yapılacak alan) + (LIKE) => (Aranacak kelime)
Kodalarımız ise aşağıdaki gibi olacak;
1 |
SELECT * FROM ogrenci WHERE adiSoyadi LIKE "M%"; |
Yukarıdaki sorgu “ogrenci” tablosunda “adiSoyadi” sütununda baş harfi “M” ile başlayan satırları çeker.
Sorgu sonucu aşağıdaki gibidir;
Peki içerisinde herhangi bir karakter grubu geçen satırları nasıl arayacağız? O halde aranacak karakter grubunun başına ve sonuna “%” karakteri ekleyeceğiz.
Örneğin içerisinde “AR” karakter grubu geçen satırları çekelim ve çıktımıza bakalım;
1 |
SELECT * FROM ogrenci WHERE adiSoyadi LIKE "%AR%"; |
Çıktımız;
Şimdi alt tire (_) kullanarak aramamızı karakter bazında gerçekleştirelim. Örnek olarak “ogrenci” tablosundan, “adiSoyadi” sütunundan isminin ikinci karakteri “a” olan isimleri çekelim;
1 |
SELECT * FROM ogrenci WHERE adiSoyadi LIKE "_a%"; |
Çıktımız aşağıdaki gibi olacak;
Bir sütundaki iki değer arasındaki verileri çekmek için kullanılır. Genellikle tarih aralıklarını ve e-ticaret sitelerinde fiyar aralıklarını sorgulamak için kullanılır. Örneğin biz öğrenci tablomuzda “id” değeri 7 ile 15 arasındaki öğrenci verilerini çekelim.
Sorgumuz aşağıdaki gibi olacak;
1 |
SELECT * FROM ogrenci WHERE id BETWEEN 7 AND 15; |
Sorgumuzun çıktısı ise aşağıdaki gibidir;
IN komutu içinde belirtilen kelimeleri barındıran satırları getirir.
Sözdizimi;
SELECT (alanAdi) FROM (tabloAdi) WHERE (sorgulanacakAlanAdi) IN (sorgulanacakIcerikler)
Örnek olarak öğrenci tablosundan “sehir” alanında İstanbul ve İzmir kayıtlı olan öğrencilerin isimlerini ve şehirlerini çekelim.
Kodlarımız aşağıdaki gibi olacaktır;
1 |
SELECT adiSoyadi,sehir FROM ogrenci WHERE sehir IN ("İstanbul", "İzmir"); |
Çıktımız ise aşağıdaki gibi olacak;