- 4 Mar 2009
- 2,217
- 1
WHERE koşul yapısında birden fazla koşul belirteceksek AND, OR ve NOT bağlaçlarından uygun olanı kullanırız.
AND bağlacı, iki koşula da uyan sonuçları listelememizi sağlar.
OR bağlacı iki durumdan birine uyan kayıtları listeler:
NOT ifadesi bir bağlaçtan ziyade bir koşulun tersinin gerçekleştiğinde geçerli olacağını söylemektir. Yani eğer var olan bir koşulun önüne NOT eklersek, o koşul gerçekleşmiyorsa doğru olarak kabul edilecektir. Örneğin:
Görüldüğü üzere LIKE teriminin önüne gelen NOT yardımıyla isim sütunundaki değerde A harfi bulunmayanları listelettik.
Koşul alanında kullanacağımız parantez, tıpkı matematikteki gibi öncelikle dikkate alınacaktır. Parantez dışındaki kısımsa parantez ile karşılaştırılır. Örneğin tablomuza göre Adı Ali ya da Sevim olup yaşı 30 dan az olanları listeleteceğimiz bir sorgu yapacak olsaydık:
IN ve BETWEEN Kullanımı
Aşağıdaki örnekte görülen bir sorguyu:
Bu şekilde uzun yazmak yerine IN(...) kullanabiliriz:
Kullanırken parantez içine virgüllerle ayrılarak değerler yazılır. Eğer parantez içinde belirtilen değerleri içermeyenleri seçeceksek id NOT IN() kullanabiliriz.
BETWEEN (arasında) ise belli sayı aralıklarındaki verileri vermemizi sağlar, lafın gelişi:
Yukarıdaki sorgu aşağıdaki ile ifade edilebilir:
Aynı şekilde NOT eklenerek ilgili aralıktaki sayıların seçilmediği sorgular yapılabilir:
Yukarıdaki sorgu da 60-100 arasında olmayan sayıları seçecektir.
IS NULL ve IS NOT NULL
Bir sütun hiçbir değer içermeyebilir. Bir sütun eğer null (tanımsız) değer alabiliyorsa bunu WHERE koşul kısmında koşul olarak sorgulatabiliriz. Örneğin:
Ya da tanımsız değer değilse koşulunu NOT getirerek yapabiliriz:
AND bağlacı, iki koşula da uyan sonuçları listelememizi sağlar.
Kod:
SELECT isim, yas, email FROM tablom
WHERE isim = "Ali" AND yas = "39";
+-------+-----+----------------+
| isim | yas | email |
+-------+-----+----------------|
| Ali | 39 | [email protected] |
+-------+-----+----------------+
OR bağlacı iki durumdan birine uyan kayıtları listeler:
Kod:
SELECT isim, yas, email FROM tablom
WHERE isim = "Ali" OR isim = "Sevim";
+-------+-----+----------------+
| isim | yas | email |
+-------+-----+----------------|
| Ali | 39 | [email protected] |
| Sevim | 24 | [email protected] |
+-------+-----+----------------+
NOT ifadesi bir bağlaçtan ziyade bir koşulun tersinin gerçekleştiğinde geçerli olacağını söylemektir. Yani eğer var olan bir koşulun önüne NOT eklersek, o koşul gerçekleşmiyorsa doğru olarak kabul edilecektir. Örneğin:
Kod:
SELECT isim, yas, email FROM tablom
WHERE isim NOT LIKE "%a%";
+-------+-----+----------------+
| isim | yas | email |
+-------+-----+----------------|
| Sevim | 24 | [email protected] |
| Gözde | 28 | [email protected] |
+-------+-----+----------------+
Görüldüğü üzere LIKE teriminin önüne gelen NOT yardımıyla isim sütunundaki değerde A harfi bulunmayanları listelettik.
Koşul alanında kullanacağımız parantez, tıpkı matematikteki gibi öncelikle dikkate alınacaktır. Parantez dışındaki kısımsa parantez ile karşılaştırılır. Örneğin tablomuza göre Adı Ali ya da Sevim olup yaşı 30 dan az olanları listeleteceğimiz bir sorgu yapacak olsaydık:
Kod:
SELECT isim, yas, email FROM tablom
WHERE ( isim = "Ali" OR isim = "Sevim" ) AND yas < 30;
+-------+-----+----------------+
| isim | yas | email |
+-------+-----+----------------|
| Sevim | 24 | [email protected] |
+-------+-----+----------------+
IN ve BETWEEN Kullanımı
Aşağıdaki örnekte görülen bir sorguyu:
Kod:
SELECT * FROM uyeler WHERE id = 3 OR id = 6 OR id = 7;
Kod:
SELECT * FROM uyeler WHERE id IN(3, 6, 7);
Kod:
SELECT * FROM uyeler WHERE id NOT IN(3, 6, 7);
Kod:
SELECT * FROM uyeler WHERE id >= 60 AND id <= 100;
Kod:
SELECT * FROM uyeler WHERE id BETWEEN 60 AND 100;
Kod:
SELECT * FROM uyeler WHERE id NOT BETWEEN 60 AND 100;
IS NULL ve IS NOT NULL
Bir sütun hiçbir değer içermeyebilir. Bir sütun eğer null (tanımsız) değer alabiliyorsa bunu WHERE koşul kısmında koşul olarak sorgulatabiliriz. Örneğin:
Kod:
SELECT * FROM uyeler WHERE email IS NULL;
Kod:
SELECT * FROM uyeler WHERE email IS NOT NULL;