SQL Operatörleri: Sorgulara Güç ve Koşul Katmak
- Hüseyin Erdem ÜNAL
- 5 Ağu
- 4 dakikada okunur
Merhaba! SQL komutlarının gücünü artırmanın ve veri tabanından tam olarak istediğimiz verileri çekmenin yollarını keşfetmeye devam ediyoruz. Bugün, SQL operatörlerinin dünyasına adım atacak ve bu küçük ama etkili sembollerin ve anahtar kelimelerin sorgularımızı nasıl dönüştürdüğünü göreceğiz. Operatörler, tıpkı bir cümlenin virgülleri veya ünlemleri gibi, sorgularımızın anlamını ve amacını belirler.
Operatör Nedir?
Basitçe ifade etmek gerekirse, bir operatör, SQL sorgularınızda işlem yapmak için kullanılan bir sembol veya anahtar kelimedir. Bu işlemler; iki değeri karşılaştırmak, matematiksel hesaplamalar yapmak veya birden fazla koşulu birleştirmek gibi görevleri kapsar. Operatörler en sık WHERE komutu ile birlikte kullanılarak, veri tabanından sadece belirli kriterleri karşılayan satırları seçmenizi sağlar.
Operatör Türleri Nelerdir?
SQL operatörleri, gerçekleştirdikleri işlevlere göre farklı türlere ayrılır. İşte en yaygın kullanılan operatör türleri:
1. Aritmetik Operatörler
Sayısal veriler üzerinde temel matematiksel işlemleri gerçekleştirir.
Operatör | Anlamı | Örnek |
+ | Toplama | Price + 10 |
- | Çıkarma | Price - 5 |
* | Çarpma | Price * 1.20 |
/ | Bölme | Price / 2 |
% | Kalan | id % 2 |
Örneğin: w3school'un Products tablosundaki her ürünün %20 zamlı halini görmek için:
SELECT ProductName AS UrunAdi, Price AS Fiyat, Price * 1.20 AS YeniFiyat FROM Products;

Örnek'te AS anahtar sözcüğü dikkatinizi çekmiş olabilir. Açılımı 'ALIAS(Takma Ad)' olan bu anahtar sözcük, sorgu sonucunda görüntülenen tablonun sütun isimlerinin yerini aldığını görüyoruz. Alias kullanımına dair ileride ayrı bir parantez açacağız.
2. Karşılaştırma Operatörleri
İki ifadeyi karşılaştırır ve koşulun doğru veya yanlış olduğunu döndürür.
Operatör | Anlamı | Örnek |
= | Eşittir | Country = 'Türkiye' |
> | Büyüktür | Price > 50 |
< | Küçüktür | Stock < 10 |
>= | Büyük veya eşittir | Price >= 100 |
<= | Küçük veya eşittir | OrderDate <= '2025-01-01' |
<> | Eşit değildir | Country <> 'USA' |
Örneğin: Fiyatı 20'den fazla olan ürünleri listelemek için:
SELECT ProductName, Price
FROM Products
WHERE Price > 20;

3. Mantıksal Operatörler
Birden fazla koşulu birleştirmek veya mevcut koşulu tersine çevirmek için kullanılır.
Operatör | Anlamı | Örnek |
AND | Tüm koşullar doğruysa doğru döndürür. | Country = 'Germany' AND City = 'Berlin' |
OR | En az bir koşul doğruysa doğru döndürür. | City = 'London' OR City = 'Paris' |
NOT | Bir koşulun sonucunu tersine çevirir. | NOT Country = 'Mexico' |
Örneğin: Fiyatı 20'den fazla ve CategoryID'si 1 olan ürünleri bulmak için:
SELECT ProductName, Price, CategoryID
FROM Products
WHERE Price > 20 AND CategoryID = 1;

4. Özel Operatörler
Daha spesifik koşullar için tasarlanmışlardır.
IN: Belirtilen değer listesinden herhangi birine eşit olan kayıtları bulur. Örnek: WHERE Country IN ('Germany', 'France', 'UK');
BETWEEN: Belirli bir aralıktaki değerleri bulur. Örnek: WHERE Price BETWEEN 10 AND 50;
LIKE: Belirli bir desenle eşleşen metinleri bulur. % (sıfır veya daha fazla karakter) ve _ (tek karakter) joker karakterleri kullanılır. Örnek: WHERE CustomerName LIKE 'A%';
IS NULL: Bir sütunun değerinin boş (NULL) olup olmadığını kontrol eder. Örnek: WHERE Address IS NULL;
Örneğin: Ücreti 5 ile 20 arasında, kategori id'si 1, 3, 5 olan ve ürün adı adı boş olmayan kayıtları görüntüleyelim.
SELECT * FROM Products
WHERE Price BETWEEN 5 AND 20
AND ProductName IS NOT NULL
AND CategoryID IN (1, 3, 5);

LIKE Operatörü ile Metinlerde Desen Araması
LIKE operatörü, bir sütundaki metin değerlerinin belirli bir desene uyup uymadığını kontrol etmek için kullanılır. Bu operatörün en büyük gücü, yanında kullanılan joker karakterlerdir. İki temel joker karakter vardır:
% (yüzde işareti): Sıfır veya daha fazla karakteri temsil eder.
_ (alt çizgi): Tam olarak tek bir karakteri temsil eder.
Gelin, LIKE operatörünün bu joker karakterlerle nasıl kullanıldığına dair senaryo bazlı örnekler oluşturalım.
Senaryo: Customers Tablosunda Müşteri İsimlerini Bulma
Customers tablosunda, CustomerName (Müşteri Adı) sütunu üzerinde arama yaptığımızı varsayalım.
1. Belirli Bir Harfle Başlayan İsimleri Bulma
Adı "A" harfiyle başlayan ya da soyadı "H" ile biten tüm müşterileri bulalım;
SELECT CustomerName
FROM Customers
WHERE CustomerName LIKE 'A%'
OR CustomerName LIKE '%H';

2. İkinci Harfi Belirli Bir Harf Olan İsimleri Bulma
Adının ikinci harfi "r" olan müşterileri bulmak için:
SELECT CustomerName
FROM Customers
WHERE CustomerName LIKE '_r%';

3. Belirli Bir Harf Dizilimi ve Uzunluk Koşulunu Birleştirme
Adı "L" ile başlayan ve toplamda 4 harfli olan müşterileri bulmak için:
SELECT CustomerName
FROM Customers
WHERE CustomerName LIKE 'L___ %';

Sütunda isim ve soy isim birlikte tutulduğu için, kriterimizin ardından boşluk ve % karakterlerini kullandık ki herhangi bir soyadı da dahil edip adı L ile başlayan 4 harfli ismi olan müşterileri bulabilelim.
Operatörlerin Öncelik Sırası
Sorgularda birden fazla operatör kullanıldığında, hangi işlemin önce yapılacağı önemlidir. SQL'de, tıpkı matematikteki işlem sırası gibi bir öncelik sırası vardır. Öncelik sırası, sorgunun doğru çalışması için kritik öneme sahiptir. İşte genel öncelik sırası (en yüksekten en düşüğe):
Parantezler (): Parantez içindeki ifadeler her zaman ilk olarak değerlendirilir.
Aritmetik Operatörler: *, /, %
Aritmetik Operatörler: +, -
Karşılaştırma Operatörleri: =, >, <, >=, <=, <>
Özel Operatörler: BETWEEN, LIKE, IN, IS NULL vb.
Mantıksal Operatörler: NOT
Mantıksal Operatörler: AND
Mantıksal Operatörler: OR
Örnek: WHERE (Price > 10 OR CategoryID = 1) AND Price < 20;
Bu sorguda parantez, OR işleminin AND'den önce gerçekleşmesini sağlar. Eğer parantez olmasaydı, öncelik sırasına göre önce AND koşulu değerlendirilecekti ve bu da sorgunun mantığını değiştirebilirdi. Bu nedenle, karmaşık koşullarda parantez kullanmak, sorgunuzun beklediğiniz gibi çalışmasını garanti altına almanın en güvenli yoludur.
Özetle
SQL operatörleri, veri tabanıyla olan iletişiminizde size hassas kontrol gücü verir. Hangi verinin çekileceğinden, hangi verinin güncelleneceğine kadar her adımda bu operatörler sorguların temelini oluşturur. Bu bilgileri kullanarak, artık çok daha spesifik ve anlamlı sorgular yazmaya hazırız.
Bir sonraki yazımızda, birden fazla tabloyu birleştirerek daha kapsamlı veri setleri oluşturmamızı sağlayan JOIN komutunu inceleyeceğiz. Takipte kalın ve SQL yolculuğumuza devam edelim!
Yorumlar