Ana içeriğe geç

SQL OR Operatörü: Örneklerle Rehber

SQL OR operatörü, birden çok koşulu birleştirerek verileri filtrelemenizi ve en az bir koşulun doğru olduğu satırları döndürmenizi sağlar. Tablolardaki kayıtları değiştirmek için OR’u INSERT, UPDATE ve DELETE ifadeleriyle nasıl kullanacağınızı öğrenin.
· 8 dk. oku

Yapay Zeka ile Keşfedin

SQL OR operatörü, sorgularda birden çok koşula göre verileri filtrelemek için kullanılan bir mantıksal operatördür. OR operatörü genellikle WHERE ifadesinde kullanılarak verilen koşulları sağlayan sonuçları döndürür. Bu işlevsellik, OR operatörünü esnek veri getirme için önemli bir araç haline getirir.

Bu derste, OR operatörünün SQL sorgularındaki farklı kullanım senaryolarını pratik örneklerle göstereceğim. Veri analisti olmayı hedefliyorsanız veya SQL’e yeni başlıyorsanız, SQL temellerini öğrenmek için DataCamp’in Introduction to SQL kursunu öneririm. SQL Basics Cheat Sheet de tabloları sorgulama, veri filtreleme ve birleştirme işlemlerinde yaygın operatör ve fonksiyonlara hızlıca bakmanıza yardımcı olur.

SQL OR Operatörü Nedir?

SQL OR operatörü tipik olarak WHERE ifadesiyle birlikte verileri filtrelemek için kullanılır. Bir sorguda kullanıldığında, OR operatörü belirtilen koşullardan en az birinin doğru olduğu satırları kapsayacak şekilde verileri filtreler.

Aşağıdaki sorgu, İK (HR) departmanındaki veya maaşı 60.000 $’ın üzerinde olan employees tablosundaki tüm kayıtları döndürür. Bir satır bu koşullardan birini ya da her ikisini sağlıyorsa, sorgu sonuçlarına dahil edilir.

-- Select rows where the department is either 'HR' OR salary greater than 60,000
SELECT *
FROM employees
WHERE department = 'HR'
OR salary > 60000;

SQL OR operatörü kullanılarak filtrelenmiş örnek tablo çıktısı

SQL OR operatörü kullanılarak filtrelenmiş örnek tablo çıktısı. Görsel: Yazar.

Koşullu veri filtrelemede kullanılan OR operatörü ve diğer operatörler hakkında daha fazla bilgi için DataCamp’in Intermediate SQL kursuna göz atın.

SQL OR Operatörünün Sözdizimi

OR operatörü kullanımı kolaydır ve SQL sorgularına rahatça dahil edilebilir. Aşağıda, SELECT ifadesinde kullanıldığında temel sözdizimi yer almaktadır.

SELECT column1, column2, ...
FROM table_name
WHERE condition1
OR condition2
OR condition3;

WHERE ifadesinde birden fazla OR koşulu kullanabileceğinizi unutmayın.

SELECT ifadesinde temel kullanım

OR operatörü, verilen koşullardan herhangi birini sağlayan kayıtları döndürmek için SELECT ifadesinde kullanılır. Bu, OR operatörünü, birden fazla karmaşık sorgu yazmadan kayıtları getirirken faydalı kılar.

Aşağıdaki örnekte OR operatörü, "New York" veya "Los Angeles" şehrindeki tüm çalışan kayıtlarını filtreler.

-- Select employeees from New York or Los Angeles city
SELECT first_name, last_name, city
FROM employees
WHERE city = 'New York'
OR city = 'Los Angeles';

SQL’de OR ile AND’i birleştirme

OR operatörü, bir SQL sorgusunda daha karmaşık koşullar oluşturmak için AND operatörüyle birleştirilebilir. Hem OR hem de AND operatörlerini kullanırken, işlemlerin sırasını kontrol etmek için parantezlerden yararlanırız.

Şu sorguyu ele alalım: BT (IT) departmanındaki ve "New York"ta yaşayan (tek bir koşul olarak) tüm çalışanları ya da 70.000 $’dan fazla kazananları seçmek istiyoruz. Parantezler, AND koşulunu OR operatörü uygulanmadan önce tek bir birim olarak değerlendirecek şekilde gruplar.

-- Select columns
SELECT first_name, last_name, department, city, salary
FROM employees
 -- Grouping IT department in New York
WHERE (department = 'IT' AND city = 'New York')
-- Employees with salary over 70,000
OR salary > 70000;

OR ile AND operatörünü birleştirerek filtrelenen tablonun örnek çıktısı.

OR ile AND operatörünü birleştirerek filtrelenen tablonun örnek çıktısı. Görsel: Yazar.

Yukarıdaki sorgu şu kayıtları değerlendirir ve döndürür:

  • BT departmanında çalışıp New York’ta yaşayan çalışanlar.

  • Veya departman ya da şehir fark etmeksizin 70.000 $’ın üzerinde kazanan herhangi bir çalışan.

OR operatörünü AND ile birleştirirken, koşulları doğru biçimde parantezle gruplamalısınız. Bu hatanın yapılması mantıksal hatalara yol açabilir ve istenmeyen sonuçlar döndürebilir.

Sorguda parantezler kullanılmazsa, AND koşulu OR koşulundan önce değerlendirilir. Bu nedenle parantezleri doğru kullanmak, koşulları açıkça gruplar ve amaçlanan değerlendirme sırasının izlenmesini sağlar.

SQL OR Operatörünün Uygulamalı Örnekleri

OR operatörü, kayıtları getirmek veya veritabanı verilerini değiştirmek için farklı SQL sorgularında kullanılabilir. Aşağıda OR operatörünün kullanım örnekleri yer almaktadır.

Birden çok koşulla veri filtreleme

OR operatörü, esas olarak iki veya daha fazla koşula göre kayıtları filtrelemek için kullanılır. Bu yöntem, veritabanı arama ölçütlerini genişletirken önemlidir. Aşağıdaki örnek, New York City’deki çalışanları veya 80.000 $’ın üzerinde kazananları gösteren kayıtları filtreleyip döndürecektir.

-- Select columns
SELECT first_name, last_name, department, city, salary
FROM employees
 -- Employees in New York City
WHERE city = 'New York'
-- Employees with salary over 80,000
OR salary > 80000;

INSERT ifadelerinde OR operatörünü kullanma

INSERT ifadelerinde OR operatörünü, belirtilen koşul sağlanıyorsa tabloya yeni kayıt eklemek için kullanabilirsiniz. Aşağıdaki örnekte, çalışan İK departmanındaysa veya 60.000 $’dan fazla kazanıyorsa, sorgu employees tablosuna yeni bir kayıt ekleyecektir. Aşağıdaki sorgu SQL Server, MySQL ve PostgreSQL veritabanları için uyumludur.

-- Insert a new record into the 'employees' table
INSERT INTO employees (employee_id, first_name, last_name, department, salary, city)
SELECT 49, 'Anna', 'Johnson', 'HR', 62000, 'New York'
 -- First condition: department is 'HR'
WHERE 'HR' = 'HR' 
 -- Second condition: salary is greater than $60,000
   OR 62000 > 60000;

Oracle veritabanında INSERT ifadesi farklıdır ve veritabanında bulunan özel tek satır, tek sütunlu dual tablosunu kullanan bir FROM ifadesi gerektirir. Özellikle SQL Server ile çalışacaksanız Introduction to SQL Server kursumuzu alın.  

-- Insert a new record into the 'employees' table
INSERT INTO employees (employee_id, first_name, last_name, department, salary, city)
SELECT 49, 'Anna', 'Johnson', 'HR', 62000, 'New York'
FROM dual
WHERE 'HR' = 'HR'  -- First condition: department is 'HR'
   OR 62000 > 60000;  -- Second condition: salary is greater than $60,000

UPDATE ifadesinde OR operatörünü kullanma

UPDATE ifadesi, SQL’de bir tablodaki mevcut kayıtları değiştirmek için kullanılır. Bu kayıtları, yalnızca koşulları karşılayanları değiştirmek üzere birden çok koşula göre güncellemek için UPDATE ifadesinde OR operatörünü kullanabilirsiniz.

Aşağıdaki örnekte, çalışan Finans departmanındaysa veya Chicago’da yaşıyorsa, çalışanın maaşını güncellemek için OR operatörünü kullanıyoruz.

-- Update the salary for the employee
UPDATE employees
-- Increase salary by 10%
SET salary = salary * 1.1  
-- First condition: department is 'Finance'
WHERE department = 'Finance' 
 -- Second condition: employees in Chicago City
OR city = 'Chicago';

DELETE ifadesinde OR operatörünü kullanma

Benzer şekilde, SQL’deki DELETE ifadesi bir tablodaki mevcut kayıtları kaldırmak için kullanılır. Bir tablodan belirli koşullara göre kayıtları kaldırmak için DELETE ifadesiyle OR operatörünü kullanabilirsiniz.

Aşağıdaki sorgu, çalışan Chicago’dan ise veya 60.000 $ kazanıyorsa employees tablosundan kayıtları kaldıracaktır.

-- Delete records from the 'employees' table
DELETE FROM employees
-- First condition: employees from Chicago
WHERE city = 'Chicago'
-- Second condition: employees earning 60000
OR salary = 60000;

SQL OR Sorgularının Performansla İlgili Hususları

Büyük veri kümeleriyle çalışırken, OR operatörüyle performans sorunları yaşayabilirsiniz. Bu durum, büyük veri kümelerinden kayıtlar filtrelenirken işlemlerin yavaşlamasına neden olabilir. Aşağıda yaygın performans sorunları ve bunları azaltma yöntemleri yer alır.

Tam tablo taramaları

OR operatörü büyük veri kümelerinde kullanıldığında, özellikle uygun indeksleme yoksa, tam tablo taramaları yapar. Bu sorun, sorgunun tabloyu satır satır değerlendirmesi nedeniyle sorgu yürütme süresini yavaşlatabilir. Bu sorunu önlemek için gerekli sütunları dizinlemeli, böylece veritabanı motoru sütunları daha kolay ve hızlı şekilde bulup tarayabilmelidir.

Karmaşık koşul değerlendirmesi

OR operatörüyle bir tabloda birden çok koşul değerlendirildiğinde, özellikle uygun şekilde indekslenmemişse sorgu belirgin biçimde yavaşlayabilir. Karmaşık OR koşulları kullanıldığında, alt sorgular gibi daha küçük parçalara yeniden yapılandırmak sorgu performansını iyileştirmeye yardımcı olabilir.

Gereksiz koşullar

Gereksiz OR koşullarını eklemek, operatör tüm koşulları değerlendirmek zorunda olduğundan sorgu performansını yavaşlatabilir. Yalnızca gerekli ve doğru olma olasılığı yüksek OR koşullarını kullanmak, sorguyu basitleştirir ve performansı iyileştirir.

OR operatörüne alternatifler

OR operatörüyle performans sorunları yaşadığınızda, birden çok koşula göre veri filtrelemek için aşağıdaki alternatifleri değerlendirebilirsiniz.

UNION operatörünü kullanma

UNION operatörü, özellikle farklı indeksleme gerektiğinde, iki veya daha fazla SELECT ifadesinin sonuçlarını birleştirmek için kullanılır. Aşağıdaki sorguda, UNION operatörü, New York city içindeki BT department çalışanlarının kayıtlarını filtrelemek ve döndürmek üzere işlemleri birleştirir. UNION konusuna aşina değilseniz, SQL’de UNION ve UNION ALL eğitimimizi okuyun. 

-- Use UNION instead of OR for better performance
SELECT first_name, last_name, department, city
FROM employees
-- First condition
WHERE department = 'IT'  
UNION
SELECT first_name, last_name, department, city
FROM employees
-- Second condition
WHERE city = 'New York'; 

CASE ifadelerini kullanma

CASE ifadesi, sorguya mantıksal koşullar eklemek istiyorsanız OR operatörüne önemli bir alternatiftir. CASE ifadesi, en uygun yürütmeye göre sorgu performansını iyileştirir. Aşağıdaki sorgu, birden çok koşula göre departmanları kategorize etmek için CASE ifadesini kullanır.

-- Select first name, last name, and a derived category based on conditions
SELECT first_name, last_name,  
-- Use CASE to determine the category based on department or city
CASE  
-- If department is 'IT', categorize as 'Tech' If city is 'New York', categorize as 'NYC'
  WHEN department = 'IT' THEN 'Tech'  
  WHEN city = 'New York' THEN 'NYC'  -- 
  ELSE 'Other'
END AS category
FROM employees; 

Veri işleme için UNION operatörü ve CASE ifadesi hakkında daha fazla bilgi edinmek üzere SQL Fundamentals beceri yolumuza göz atın.

Sonuç

OR operatörü, esnek ve karmaşık sorgular oluşturmaya yönelik çok yönlü bir SQL operatörüdür. OR operatörü, birden çok koşula göre tablo kayıtlarını filtrelemenize olanak tanır. Gördüğümüz gibi, INSERT, UPDATE ve DELETE gibi diğer ifadelerle birlikte kullanıldığında, OR operatörü tablolardaki kayıtları değiştirmeye de olanak sağlar. Bir veri analisti olarak, OR operatörünün performansla ilgili sorunlarını ve UNION operatörü ile CASE WHEN ifadeleri gibi alternatif yöntemleri anlamak önemlidir. 

Farklı veri kümeleriyle kayıtları filtrelemek için OR operatörünü kullanmayı pratik etmenizi öneririm; böylece işlevselliğine daha rahat hâkim olabilirsiniz. SQL becerilerinizi ilerletmek için, yetkin bir analist olmak üzere Associate Data Analyst in SQL kariyer yolumuzu değerlendirin. Ayrıca Reporting in SQL kursu, panolar kullanarak verileri analiz etmeyi ve sunmayı öğrenmenize yardımcı olacaktır. Son olarak, veri analizi için SQL becerilerinizi ve yetkinliğinizi göstermek üzere DataCamp’in SQL Associate Certification sertifikasını almanızı tavsiye ederim.

Allan Ouko

Yazar

Allan Ouko

Veri analitiği, iş zekâsı ve veri bilimi alanlarında pratik deneyime sahip Veri Bilimi Teknik Yazarı. SQL, Python, Power BI, Databricks ve veri mühendisliği üzerine, gerçek dünya analitik çalışmalarına dayanan, uygulamaya dönük ve sektöre odaklı içerikler yazıyorum. Yazılarım teknik derinlikle iş etkisi arasındaki köprüyü kurarak profesyonellerin veriyi güvenle karara dönüştürmelerine yardımcı olur.

Sık Sorulan SQL Soruları

SQL'de OR ve AND operatörleri arasındaki fark nedir?

OR operatörü, belirtilen koşullardan herhangi biri doğruysa sonuç döndürür; AND operatörü ise belirtilen koşulların tamamı doğruysa sonuç döndürür.

OR operatörü tek bir sorguda AND ile birlikte kullanılabilir mi?

Kayıtları birden çok koşula göre filtrelemek için OR ve AND operatörlerini birlikte kullanabilirsiniz. Ancak koşulları gruplamak ve sorgu yürütme sırasını belirtmek için parantez kullanmalısınız.

SQL'de OR operatörüyle filtrelenecek koşul sayısında bir sınırlama var mı?

OR operatörüyle filtrelenecek koşul sayısının bir sınırı yoktur; ancak çok fazla koşul performansı olumsuz etkileyebilir.

OR operatörü tablolardaki verileri değiştirmek için kullanılabilir mi?

Tablodaki belirli kayıtları değiştirmek için OR operatörünü INSERT, UPDATE ve DELETE ifadeleriyle birlikte kullanabilirsiniz.

OR operatörünün SQL'deki alternatifleri nelerdir?

Birden çok koşula göre kayıtları filtrelemek için OR operatörüne alternatif olarak UNION operatörü ve CASE WHEN ifadeleri kullanılabilir.

Konular

İlgili