Kategoriler
ORACLE

Oracle Database 11g – SQL Temelleri I ||Restricting and Sorting Data

Diğer dersleri https://selimkaratas.com.tr/oracle-11g-r2-egitimi-ders-notlari adresinden bulabilirsiniz.

Restricting and Sorting Data

2.Veri Kısıtlama ve Sıralama

WHERE Clause

SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)];

Burada dikkat edilmesi gereken WHERE clause FROM clause’dan sonra gelmektedir. Koşullar kısmı ile ilgili detayları bu konu altında inceleyeceğiz.

SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE job_id= 'IT_PROG' ;

where clause

SELECT last_name, job_id, department_id
FROM employees
WHERE department_id = 60 ;
SELECT last_name
FROM employees
WHERE hire_date = '15-NOV-91' ;

Tarih ve karakter aramalarında tek tırnak kullanmak gereklidir. Numara için girmemize gerek yoktur.

Karşılaştırma Operatörleri

Comparison Operators

SELECT last_name, salary
FROM employees
WHERE salary >= 15000 ;

-- salary 15000 eşit ve büyük ise göster.

salary >= 15000

SELECT last_name
FROM employees
WHERE last_name BETWEEN 'Seo' AND 'Zlotkey';

--İsimler için de BETWEEN kullanılabilir. 'S' harfi ile 'Z'
--harfi arasında olan isimleri bulmaktadır. Büyük küçük 
--karaktere dikkat edilmelidir.

isimler için between

SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE salary IN (1500, 2500, 3500, 4500) ;

-- salary değeri 1500, 2500, 3500, 4500 olanları verir.

in fonksiyonu

SELECT first_name
FROM employees
WHERE first_name LIKE 'K%' ;

--K Harfi ile başlayan ve devamı olan isim sonuçlarını verir.

like karakter

SELECT last_name, hire_date
FROM employees
WHERE hire_date LIKE '%97';

-- yılı 1997 olanları gösterir.

like tarih

SELECT last_name
FROM employees
WHERE last_name LIKE '_a%' ;

-- ikinci karakteri a olanları gösterir. underscore _ o harften -- önce bir karakter olduğunu belirtir.

ikinci karakter like

SELECT employee_id, last_name, job_id
FROM employees WHERE job_id LIKE '%SA\_%' ESCAPE '\';

-- job_id'si 'SA ile başlayanları gösterir. Escape kaçış
--karakterini tanımlar \ kaçış karakteridir ve bu sayede özel
--karakter olmasına rağmen sonuç tablosunda istediğimiz
--job_id'ler yer alır.

escape

SELECT last_name, job_id, commission_pct
FROM employees
WHERE commission_pct IS NULL;

--null ifadeleri listeler.

is null

Mantıksal Operatörler

Defining Conditions Using the Logical OperatorsAND Operatörü

SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 9500
AND job_id LIKE '%REP%';

-- maaşı 9500'den büyük ve eşit ve job_id'si içerisinde REP
--yazanları listeledik

AND

OR Operatörü

SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 20000
OR job_id LIKE '%MAN%' ;

--Maaşı 20000'den büyük ve eşit ya da job_id'si içerisinde
-- MAN geçenleri listeledik

or operatörü

NOT Operatörü

SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;

-- not in ifadesi içindekiler hariç diğerlerini listeler

not in operatörü

Öncelik Kuralları

Rules of Precedence

SELECT last_name, job_id, salary
FROM employees
WHERE job_id = 'IT_PROG'
OR job_id = 'AD_PRES'
AND salary > 20000;

-- aşağıdaki örnekten tek farkı parantez kullanımıdır
-- maaş şartına bakmadan IT_PROG yazar ve maaş > 20000
-- ise  AD_PRES Job_id'lerini listeler.

öncelik kuralları

SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = 'IT_PROG'
OR job_id = 'AD_PRES')
AND salary > 20000;

-- burada ise parantezler sayesinde maaşı 20000 den büyük
--sorgusunu yaptıktan sonra job_id'leri yazar. o yüzden 1 adet --sonuç verir.

öncelik kuralları 2

ORDER BY Clause

  • ASC: Default gelir  ve küçükten büyüğe sıralar.
  • DESC:Büyükten küçüğe sıralar.

order by

SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date ;

-- tarihler küçükten büyüğe sıralanmıştır.

order by

SELECT employee_id, last_name, salary*12 "Yıllık Maaş"
FROM employees
ORDER BY "Yıllık Maaş";

--Order By Clause'unda alias kullanılabilir.

kolon numarası

SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY 3;

-- Kolon numarası kullanılarak sıralama yapılır. 
-- Hire_date'e göre sıralanmıştır.

ikili sıralama

SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;

-- Department_id'leri sıralandıktan sonra salary'ler kendi 
-- içinde sıralanır. ( DESC dediği için büyükten küçüğe)

Single-Ampersand (&) Kullanımı

Bizden değer almak için prompt açar.

SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num

-- tanımlı employee_id değerlerinden birini girdiğimizde
-- sonuç alabiliriz. bunu kolon adı, karakter, numara, tarih
-- gibi her şey üzerinde deneyebiliriz.

CropperCapture[65]

SELECT last_name, department_id, salary*12, job_id
FROM employees
WHERE job_id = '&job_title' ;

-- job_id için geçerli isimlerden birini girersek sonuç alırız

& it prog

SELECT employee_id, last_name, job_id,&column_name
FROM employees
WHERE &condition
ORDER BY &order_column ;

-- her biri için bize soracaktır.
-- mevcut kolon adı, şart ve order by koşulu girmemız gerekmektedir.

Double Ampersand Kullanımı (&&)

Aynı tek & gibi kullanılır tek farkı tekrar kullandığımızda eski sonucu aklında tutmasıdır.

double &&

SELECT employee_id, last_name, job_id, &&column_name
FROM employees
ORDER BY &column_name ;

-- ilk defa yaptığımızda prompt açılır ve department_id gireriz
-- aşağıdaki listeyi verir.
-- daha sonra tekrar sorgu yaptığımızda tekrar sormadan akılda tuttuğu
-- işlemi tekrar yapar.

&& kullanım

 

DEFINE komutu

DEFINE employee_num = 200
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num ;

define

şeklinde bir kullanımı vardır. bu şekilde çalıştırdığımız zaman prompt açılmadan direkt olarak aşağıdaki sonuç ile karşılaşırız. bunu UNDEFINE olarak tanımlama ile ortadan kaldırabiliriz. Aksi takdirde DEFINE kısmını silsek bile hafıza da o değer kalacak ve aynı sonucu verecektir.

UNDEFINE employee_num;
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num

şeklinde bir düzenleme yaparsak artık bize kolon adı soracaktır.  150 değerini girersek aşağıdaki sonucu verecektir.

undefine

 

Oracle dokümanlarında yer alan örnek uygulamaları ve çözümlerini yakın zamanda hazırlamayı düşünüyorum. Devamı gelecektir. Takipte kalın.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir