Operatörler veri üzerinde işlem yaparak bir sonuç dönderen işlemlerdir.Operatörler özel karakterlerle veya özel anahtar kelimelerle temsil edilir(*,Union,All,In,Between vs.).

  • Aritmetik Operatörler(Arithmetic Operators)
  • Birleştirme Operatörü(Character Operators)
  • Küme Operatörü(Set Operators)
  • Karşılaştırma Operatörleri(Comparison Operators)
  • Mantıksal Operatörler(Logical Operators)
  • Diger Operatörler(Other Operators)

Aritmetik Operatörler(Arithmetic Operators)

Aritmetik operatörler sayısal değerler üzerinde işlem yapmak için kullanılır.Aritmetik işlemlerde NULL ile işlem yapılır ise sonuç daima NULL çıkar.Tarih için de aritmetik operatörleri kullanabiliriz.

Operatör Açıklama Örnek
+ Pozitif sayıları göstermek için kullanılır SELECT +3 FROM DUAL;
Negatif sayıları göstermek için kullanılır SELECT -4 FROM DUAL;
/ Bölme işlemi için kullanılır(Sayısal ve Tarih tipindeki veriler için) SELECT SALARY / 10 FROM EMPLOYEES;
* Çarpma işlemi için kullanılır SELECT SALARY * 5 FROM EMPLOYEES;
+ Toplama işlemi için kullanılır(Sayısal ve Tarih tipindeki veriler için) SELECT SALARY + 200 FROM EMPLOYEES;
Çıkarma işlemi için kullanılır(Sayısal ve Tarih tipindeki veriler için) SELECT SALARY – 100 FROM EMPLOYEES;

Tablo 1-Örnekler HR kullanıcısında ki employees tablosunda ve SYS kullanıcısına ait dual tablosuna göre yapılmıştır

Birleştirme Operatörü(Character Operators)

Birleştirme operatörü 2 karakter dizesini birleştirmek için kullanılır ve bunun sonucundada tek bir karakter dizesi dönderir.

Operatör Açıklama Örnek
|| Karakter dizelerini birleştirir SELECT 'Mustafa'||'BektasTepe' FROM DUAL;SELECT 'Mustafa'||'Bektas'||'Tepe' FROM DUAL;SELECT first_name||last_name FROM EMPLOYEES;SELECT first_name||' '||last_name FROM EMPLOYEES;

Tablo 2-Örnekler HR kullanıcısında ki employees tablosunda ve SYS kullanıcısına ait dual tablosuna göre yapılmıştır

Küme Operatörü(Set Operators)

SET operatörleri iki ya da daha fazla sorgu bileşenini bir sonuca toplayan operatörlerdir. SET operatörleri içeren sorgulara bileşik sorgu (compound queries) denilmektedir.

    • UNION : İki sorguda yer alan tüm satırları verir fakat tekrar eden satırları bir kez verir.Kümelerde ki birleşim işleminin karşılığıdır.
Select * from employees where department_id=80
UNION
Select * from employees where salary =10000;
    • UNION ALL  :  İki sorguda yer alan tüm satırları verir,UNION’dan farkı tekrar eden verilerin de hepsini alır.
Select * from employees where department_id=80
UNION ALL
Select * from employees where salary =10000;
      • INTERSECT : İki sorguda yer alan aynı satırları döner,tekrar edilen satırlar bir kez döndürülür. Kümelerde ki kesişim işleminin karşılığıdır.
Select * from employees where department_id=80
INTERSECT
Select * from employees where salary =10000;
      • MINUS : Birinci sorguda olup da ikinci sorguda olmayan kayıtları döndürür. Kümelerde ki fark  işleminin karşılığıdır.
Select * from employees where department_id=80
MINUS
Select * from employees where salary =10000;

NOT :Küme işlemi yapılırken UNION ALL operatörü haricinde ki operatörler de ,Oracle her iki sorguda yer alan satırları önce sıralar daha sonra kümeleme işlemini yapar.Fakat UNION ALL  operatörü kullanıldığında sıralama yapılmaz bu yüzden performans açısından mümkün olduğunca UNION ALL kullanılmalıdır.

Karşılaştırma Operatörleri(Comparison Operators)

Karşılastma operatöreri iki değeri ya da ifadeyi karşılaştırmak için kullanılır.Karşılaştırma işlemi True,False ya da Null döndürür.

      • =  : Eşitligi test eder
Select first_name,salary from employees where salary=10000;
      • !=, ^=, <> : Eşitsizligi test eder
Select first_name,salary from employees where salary!=10000;

 

Select first_name,salary from employees where salary^=10000;

 

Select first_name,salary from employees where salary<>10000;
      • > : Degerin ya da ifadenin büyük olup olmadığını kontrol eder.Büyük ise True sonucunu döndürür.
Select first_name,salary from employees where salary>10000;
      • <  : Degerin ya da ifadenin küçük olup olmadığını kontrol eder.Küçük ise True sonucunu döndürür.
Select first_name,salary from employees where salary<10000;
      • >=  : Degerin ya da ifadenin büyük ve ya eşit olup olmadığını kontrol eder.Büyük veya eşir ise True sonucunu döndürür.
Select first_name,salary from employees where salary>=10000;
      • <=  : Degerin ya da ifadenin küçük ve ya eşit olup olmadığını kontrol eder.Küçük veya eşir ise True sonucunu döndürür.
Select first_name,salary from employees where salary<=10000;
      • IN/NOT IN : Listede değerlerin olup olmadığı test eder.Olan değerleri döndürür,eger listede hiçbiri yoksa hata döndürmez.
Select * from employees where first_name IN ('Eleni','Jennifer');

 

Select * from employees where first_name IN ('Eleni','Jennifer','Mustafa');

 

Select * from employees where first_name NOT IN ('Eleni','Jennifer');

 

Select * from employees
where first_name NOT IN ('Eleni','Jennifer','Mustafa');
      • ANY/ SOME : Bir listede ki ya da altsorguda ki(subquery) karşılaştırmalar için kullanılırlar.ANY  veya SOME operatörü kullanmadan önce mutlaka =,!=,<,>,<=,>= operatörleri kullanılmalıdır.
Select *  from employees where first_name = SOME ('Eleni','Jennifer');

 

Select * from employees
where first_name = SOME ('Eleni','Jennifer' ,'Mustafa');

 

Select *  from employees where salary 
      • ALL : Bir listede ki ya da altsorguda ki(subquery) tüm değerler ile karşılaştırmalar için kullanılırlar.ALL  operatörü kullanmadan önce mutlaka =,!=,<,>,<=,>= operatöri kullanılmalıdır.
Select *  from employees where salary 
      • BETWEEN x and y : İki değer arasında ki değerleri kontrol eder
Select *  from employees where salary BETWEEN 5000 and 10000;
      • EXISTS : Altsorgular ile birlikte kullanılır.Altsorgu en az bir kayıt dönerse True değeri döner.
Select * from employees
where EXISTS (Select first_name from employees where first_name IS NOT NULL);
      • LIKE :Belirli karakter kalıbına göre karşılaştırma işlemi yapar.Oracle ‘da % ve  _ karakterleri karakter kalıbı oluşturmak için kullanılırlar._ tek karakter anlamına gelir, % ise ne olursa olsun anlamına gelir.Örneklerle anlatacak olursak ;
        • Aşagıda ki SQL kodu ile employees tablosunda ki first_name sütununda içinde M harfi geçen satırları bulunmasını istiyoruz.
Select first_name from employees where first_name like '%M%' ;
        • Aşagıda ki SQL kodu ile employees tablosunda ki first_name sütununda birinci harfi M olan satırları bulunmasını istiyoruz.
Select first_name from employees where first_name like 'M%' ;
        • Aşagıda ki SQL kodu ile employees tablosunda ki first_name sütununda son harfi M olan kayıtları bulunmasını istiyoruz.
Select first_name from employees where first_name like '%m' ;
        • Aşagıda ki SQL kodu ile employees tablosunda ki first_name sütununda ikinci harfi m olan kayıtları bulunmasını istiyoruz.
Select first_name from employees where first_name like '_m%' ;
        • Aşagıda ki SQL kodu ile employees tablosunda ki first_name sütununda üçüncü harfi m olan kayıtları bulunmasını istiyoruz.
Select first_name from employees where first_name like '_ _m%' ;
        • Aşagıda ki SQL kodu ile employees tablosunda ki first_name sütununda sondan bir önce ki harfi a olan kayıtları bulunmasını istiyoruz.
Select first_name from employees where first_name like '%a_' ;
        • Aşagıda ki SQL kodu ile employees tablosunda ki first_name sütununda içinde aya söz diziminin geçtigi kayıtları bulunmasını istiyoruz.
Select first_name from employees where first_name like '%aya%' ;

NOT :% veya _ karakterlerini aramamız gerektiğin de iseESCAPE ifadesini kullanırız.ESCAPE’in belirtildiği karakterden sonra gelen % ve _ karakterleri kalıp oluşturma karakteri olarak değerlendirilmez.

        • Aşagıda ki SQL kodu ile employees tablosunda ki job_id sütununda içinde T_ karakterlerinin geçtigi kayıtları bulunmasını istiyoruz.
Select job_id from employees where job_id like '%T_%' ESCAPE 'T';

NOT :Like operatörü NOT operatörü ile birleştirilerek kalıba uymayanlar da listelinebilirtir.

        • Aşagıda ki SQL kodu ile employees tablosunda ki first_name sütununda birinci harfi M olmayan  satırları bulunmasını istiyoruz.
Select first_name from employees where first_name NOT like 'M%' ;
      • IS NULL/ IS NOT NULL : Null değerlerin var olup olmadığını test eder.
Select * from employees where department_id IS NULL;

 

Select * from employees where department _id IS NOT NULL;

Mantıksal Operatörler(Logical Operators)

Mantıksal operatörler iki karşılaştırma işleminin sonucunu birleştirmek için kullanılır.

      • AND :Her iki taraf da True ise True,diğer durumlarda True değerini verir.Null değerler Null sonucunu verir.
        • Employees tablosunda first_name sütunun içinde a harfi geçen ve salary’isi 10000 olan kayıtları getirmek için aşağıda ki sql kodunu kullanırız.
Select * from employees where first_name like '%a%' AND salary=10000;
      • OR :Her iki taraf da False ise False,diğer durumlarda True değerini verir. Null değerler Null sonucunu verir.
        • Employees tablosunda first_name sütunun içinde a harfi geçen veya salary’isi 10000 olan bütün kayıtları getirmek için aşağıda ki sql kodunu kullanırız.
Select * from employees where first_name like '%a%' OR salary=10000;
      • NOT :Sonuç değerini tersine çevirir.Sonuç True ise False,False ise True sonucunu verir. Null değerler Null sonucunu verir.
        • Employees tablosunda first_name sütunun içinde a harfi geçen ve salary’isi 10000 olan kayıtların dışında ki kayıtları getirmek için aşağıda ki sql kodunu kullanırız.
Select * from employees where NOT (first_name like '%a%' and salary=10000);

Diger Operatörler(Other Operators)

Operatör Açıklama Örnek
(+) Outer join kullanıldığı zaman eşleniği olmayan kayıtlarında gelmesi için kullanırız bu operatörü. Select * from employees e,departments d where e.department_id=d.department_id(+);
PRIOR Connect by ile birlikte çalıştırılan sorgularda “prior” anahtarıda kullanılırsa parent-child  ilişkili dataları tekrarları ile beraber getirir.Bu ifade çalıştırıldığında dikkat edilmesi gereken şey hiyerarşik yapının tekrarından kaynaklı olan fazla kayıt dönmesi problemidir. SELECT first_name,employee_id id,department_id FROM employees CONNECT BY PRIOR employee_id = department_id;

NOT  : Örneklerimde Oracleda ki DUAL table ‘ ı ve HR user ‘ ı kullanıyorum.
Yararlı olması Dilegiyle…
Yazar : Mustafa Bektaş Tepe
Java && Oracle

Loading