Bu eğiticide, sonuç kümesindeki satırları filtrelemek için SELECT deyimindeki MySQL WHERE yan tümcesini nasıl kullanacağınızı öğreneceksiniz.
MySQL WHERE sorgusu
WHERE yan tümcesi, bir sorgu tarafından döndürülen satırlar için bir arama koşulu belirtmenize olanak tanır. Aşağıda, WHERE yan tümcesinin söz dizimi gösterilmektedir:
1 2 3 4 5 6 7 8 | SELECT sütunlar FROM tablo_adi WHERE arama_koşulu; |
arama_koşulu VE, VEYA ve NOT mantıksal operatörünü kullanan bir veya daha fazla ifadenin birleşimidir.
MySQL’de BOOLEAN DOĞRU, YANLIŞ veya BİLİNMEYEN olarak değerlendirilen bir ifadedir.
SELECT ifadesi, sonuç kümesindeki arama_koşulunu sağlayan herhangi bir satırı içerecektir.
SELECT ifadesinin yanı sıra, hangi satırların güncelleneceğini veya silineceğini belirtmek için UPDATE veya DELETE ifadesindeki WHERE yan tümcesini kullanabilirsiniz.
Bir WHERE yan tümcesi ile bir SELECT ifadesi yürütürken, MySQL, FROM yan tümcesinden sonra ve SELECT ve ORDER BY yan tümcelerinden önce WHERE yan tümcesini değerlendirir:

MySQL WHERE Örnekleri
Örneklerimizi sample database veritabanında bulunan employee tablosunu kullanarak gerçekleştireceğiz.

1) MySQL WHERE yan tümcesini eşitlik operatörü ile kullanma
Aşağıdaki sorgu, iş unvanları (jobTitle) Satış Temsilcisi (Sales Rep) olan tüm çalışanları bulmak için WHERE yan tümcesini kullanır:
1 2 3 4 5 6 7 8 9 10 | SELECT lastname, firstname, jobtitle FROM employees WHERE jobtitle = 'Sales Rep'; |
Ekran Çıktısı:

Bu örnekte, SELECT ifadesi çalışanlar tablosunun tüm satırlarını inceler ve yalnızca jobTitle sütunundaki değerleri Sales Rep olan satırları seçer.
2) AND operatörüyle MySQL WHERE yan tümcesini kullanma
Aşağıdaki örnek, iş unvanları (“jobTitle“) Satış Temsilcisi (“Sales Rep“) ve “officeCode”alanı “1″ olan çalışanları bulmak için WHERE yan tümcesini kullanır:
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT lastname, firstname, jobtitle, officeCode FROM employees WHERE jobtitle = 'Sales Rep' AND officeCode = 1; |
Ekran Çıktısı:

Bu örnekte, WHERE yan tümcesindeki ifade, iki koşulu birleştirmek için AND operatörünü kullanır:
2) OR operatörüyle MySQL WHERE yan tümcesini kullanma
Aşağıdaki örnek, iş unvanları (“jobTitle“) Satış Temsilcisi (“Sales Rep“) veya “officeCode”alanı “1″ olan çalışanları bulmak için WHERE yan tümcesini kullanır:
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT lastname, firstname, jobtitle, officeCode FROM employees WHERE jobtitle = 'Sales Rep' OR officeCode = 1; |
Ekran Çıktısı:

OR (veya) operatörü, ifadelerden biri TRUE (Doğru) olarak değerlendirilirse TRUE olarak değerlendirilmektedir. Yani şartlardan birinin DOĞRU olması yeterli olacaktır.
jobtitle = ‘Sales Rep’ OR officeCode = 1
Bu nedenle sorgu, Satış Temsilcisi iş unvanına sahip olan veya ofis kodu 1’e sahip olan tüm çalışanları döndürür.
4) BETWEEN operatör örneği ile MySQL WHERE yan tümcesini kullanma
BETWEEN operatörü belirlenen değer aralığında ise TRUE değerini döndürür:
Aşağıdaki sorgu, ofis kodu 1’den 3’e kadar olan ofislerde bulunan çalışanları bulur:
1 2 3 4 5 6 7 8 9 10 11 | SELECT firstName, lastName, officeCode FROM employees WHERE officeCode BETWEEN 1 AND 3 ORDER BY officeCode; |

5) LIKE operatör örneği ile MySQL WHERE yan tümcesini kullanma
Bir değer belirtilen bir kalıpla eşleşirse, LIKE işleci TRUE olarak değerlendirilir.
Bir kalıp oluşturmak için%ve_joker karakterlerini kullanırsınız. %joker karakteri, sıfır veya daha fazla karakterden oluşan herhangi bir dizeyle eşleşirken_joker karakteri herhangi bir tek karakterle eşleşir.
Aşağıdaki sorgu, soyadları ‘son’ dizesiyle biten çalışanları bulur:
1 2 3 4 5 6 7 8 9 10 | SELECT firstName, lastName FROM employees WHERE lastName LIKE '%son' ORDER BY firstName; |
Ekran Çıktısı:

6) IN operatörü örneği ile MySQL WHERE yan tümcesini kullanma
Bir değer, listedeki herhangi bir değerle eşleşirse, IN operatörü TRUE değerini döndürür.
value IN (value1, value2,…)
Aşağıdaki örnek, ofis kodu 1,2,3 olan çalışanları bulmak için IN operatörüyle WHERE yan tümcesini kullanır.
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT firstName, lastName, officeCode FROM employees WHERE officeCode IN (1 , 2, 3) ORDER BY officeCode; |
Ekran Çıktısı:

7) MySQL WHERE yan tümcesini IS NULL operatörüyle kullanma
Bir değerin NULL olup olmadığını kontrol etmek için eşittir operatörünü (=) değil IS NULL operatörünü kullanırsınız. IS NULL operatörü, bir değer BOŞ ise TRUE değerini döndürür.
Not: Veritabanı ve programlamada NULL, bir değerin eksik veya bilinmeyen olduğunu gösteren bir işaretçidir. Ve NULL, 0 sayısına veya boş bir dizeye eşdeğer değildir.
Aşağıdaki ifade, ReportTo sütunundaki değerlerin NULL olduğu satırları almak için IS NULL operatörüyle WHERE yan tümcesini kullanır:
1 2 3 4 5 6 7 8 9 10 | SELECT lastName, firstName, reportsTo FROM employees WHERE reportsTo IS NULL; |

8) MySQL WHERE yan tümcesini karşılaştırma operatörleriyle kullanma
Aşağıdaki tablo, WHERE yan tümcesindeki ifadeyi oluşturmak için kullanabileceğiniz karşılaştırma operatörlerini gösterir.
| Operator | Açıklama |
|---|---|
| = | Eşittir. Hemen hemen her veri türüyle kullanabilirsiniz. |
| <> or != | Eşit Değil. |
| < | Küçüktür. Genellikle sayısal ve tarih/saat veri türleri ile kullanırsınız. |
| > | Büyüktür. |
| <= | Küçük veya eşittir |
| >= | Büyük veya eşittir |
Aşağıdaki sorgu, Satış Temsilcisi olmayan tüm çalışanları bulmak için eşit değildir ( <>) operatörünü kullanır:
1 2 3 4 5 6 7 8 9 10 | SELECT lastname, firstname, jobtitle FROM employees WHERE jobtitle <> 'Sales Rep'; |

Aşağıdaki sorgu, ofis kodu 5’ten büyük olan çalışanları bulur:
1 2 3 4 5 6 7 8 9 10 | SELECT lastname, firstname, officeCode FROM employees WHERE officecode > 5; |

Aşağıdaki sorgu, ofis kodu 4’e eşit veya daha küçük olan çalışanları döndürür( <=4):
1 2 3 4 5 6 7 8 9 10 | SELECT lastname, firstname, officeCode FROM employees WHERE officecode <= 4; |

