Ana içeriğe geç
Kesit SQL
Temel · Temeller

AND, OR, NOT ve işlem önceliği

Birden fazla koşulu birleştirmek ve parantezin önemi.

Uygulamada aç, 8 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Koşulları birleştirmek

SELECT name, category, price
FROM products
WHERE category = 'Elektronik' AND price < 1000;

Öncelik tuzağı

SQL'de AND, OR'dan önce değerlendirilir (matematikte çarpmanın toplamadan önce gelmesi gibi). Şu sorgu ne döndürür?

-- Niyet: Kitap veya Kozmetik kategorisinde, 200 TL altı ürünler
SELECT name, category, price
FROM products
WHERE category = 'Kitap' OR category = 'Kozmetik' AND price < 200;

Bu sorgu “Kitap olan HER ürün” VEYA “200 TL altı Kozmetik ürünleri” döndürür, çünkü AND önce bağlanır. Doğrusu parantez kullanmak:

SELECT name, category, price
FROM products
WHERE (category = 'Kitap' OR category = 'Kozmetik') AND price < 200;
Altın kuralAND ve OR'u birlikte kullandığında her zaman parantez koy. Hem hatayı önler hem de okuyan kişiye niyetini gösterir.

Derinleş: doğruluk tablosu ve NOT

NOT, koşulun tamamını tersine çevirir. NOT (A AND B), NOT A OR NOT B ile aynıdır (De Morgan kuralı). Şu iki sorgu aynı sonucu verir:

SELECT COUNT(*) FROM lk_orders WHERE NOT (status = 'teslim' AND payment = 'kart');
SELECT COUNT(*) FROM lk_orders WHERE status <> 'teslim' OR payment <> 'kart';

Parantez yazmak hem hatayı önler hem de okuyan kişiye niyetini gösterir. Bir koşulu yazdıktan sonra küçük bir örnek satır üzerinde sesli dene: “Bu satır gelir mi?”

Alıştırmalara geç (8)