Google Mobile Ads

Monday, January 23, 2012

Retrieving Data Using the SQL SELECT Statement

Oracle Database SQL Expert 1Z0-047 sınavı, 1Z0-047 ve 1Z0-051 Arasındaki Farklar konulu yazıda da bahsedildiği gibi 20 konuyu içermektedir. 

Bu konuların ilki ile başlıyoruz yazı dizimize...

Retrieving Data Using the SQL SELECT Statement



SQL SELECT İfadelerinin Özellikleri
Veri tabanından veri seçmek için kullanılan SELECT ifadesi, aşağıdaki özelliklere sahiptir:

  • Projection(π): Bir tabloya ait sütunları seçebilmek(Dikey Seçim). 
  • Selection(σ):  Bir tabloya ait satırları seçebilmek(Yatay Seçim). (WHERE ifadesi ile)
  • Joining(ρ):  Farklı tablolarda saklanan verileri, tablolar arasında ilişki kurarak bir araya getirebilmek. 




Basit SELECT İfadesi
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM    table;
  • SELECT : gösterilecek kolonları belirtir.
  • FROM : bu kolonları içeren tabloyu belirtir.


SELECT                                bir veya daha fazla kolondan oluşan liste
*                                          tüm kolonları seçer.
DISTINCT                            yinelenen(duplicates) kayıtları engeller
column|expression          kolon veya ifadeyi seçer.
alias                                   seçilen sütunlara farklı başlıklar verir.
FROM                                     kolonları içeren tablo.


Bu arada keyword, clause ve statement ifadelerini de açıklamak gerekiyor.

Keyword (anahtar kelime) : Tek başına bir SQL elemanını ifade eder. Örneğin, SELECT ve FROM anahtar kelimelerdir.
Clause (cümlecik) : Bir SQL ifadesinin küçük bir parçasıdır. Örneğin, SELECT department_id, department_name bir cümleciktir.
Statement (ifade) : İki ve daha fazla cümlecikten oluşan yapılardır. Örneğin, SELECT * FROM departments bir SQL ifadesidir.

Tüm Kolonları Seçmek

SELECT *
FROM jobs;

jobs tablosu job_id, job_title, min_salary ve max_salary kolonlarından oluşan bir tablodur. Bu tabloya ait tüm kolonları ister SELECT anahtar kelimesinden sonra teker teker yazarak ya da * operatörü kullanarak görüntüleyebiliriz.

SELECT job_id, job_title, min_salary, max_salary
FROM jobs;

Belirli Kolonları Seçmek

SELECT ifadesini bir tablodan sadece istediğimiz belirli kolonları seçmek için de kullanabiliriz.

SELECT job_id, job_title
FROM jobs;

Çıktı olarak görünmesini istediğiniz sıraya göre kolonları seçmeniz gerekmektedir. Yukarıdaki örnekte ilk kolonda job_id, ikinci kolonda da job_title görüntülenecektir.

Aynı şekilde eğer sadece job_title ve max_salary görüntülenmek istenirse,

SELECT job_title, max_salary
FROM jobs;

şeklinde yazmamız gerekmektedir.

SQL İfadeleri Yazmak
  • SQL ifadeleri küçük-büyük  harfe duyarlı değildir. 
SELect   *
fROM     jobs;
  • SQL ifadeleri bir veya daha fazla satırdan oluşabilir.
SELECT   *
FROM     jobs;
WHERE    job_id=100;
  • Anahtar Kelimeler(SELECT, FROM gibi keywordler) kısaltılmış ya da satıra bölünmüş olamaz. Aşağıdaki örnek SELECT anahtar kelimesi SEL olarak yazılmış. Anahtar kelimeler üzerinden herhangi bir kısaltma yapılamaz. 
SEL   *            X
FROM     jobs;
  • Cümlecikler (clauses) genellikle ayrı satırlara yerleştirilir.
SELECT   *
FROM     jobs;
WHERE    job_id=100;
  • Girintiler(indents) kod okunabilirliğini artırmak için kullanılabilir.
  • Birden fazla SQL ifadesi çalıştırılırken noktalı virgül kullanılması gerekmektedir.
  • SQL*Plus'da çalışıyorsanız, her SQL ifadesini noktalı virgül (semicolon) ile sonlandırmalısınız. Fakat SQL Developer veya TOAD üzerinde SQL yazıyorsanız buna dikkat etmek zorunda değilsiniz.
  • Kod okunabilirliği açısından anahtar kelimeler büyük harflerle, diğer tablo ve kolon isimleri de küçük harflerle yazılmalıdır.

SELECT İfadelerinde, Aritmetik İfadeler ve NULL Değerler

Aritmetik İfadeler

Verinin görüntülenme şeklini değiştirmek ya da hesaplamalar yapmak için aritmetik ifadeleri kullanırız. Bir aritmetik ifade, kolon isimlerini, sabit sayısal değerleri ve aritmetik operatörleri içerebilir.

Operatör Açıklama
+ Toplama
- Çıkarma
* Çarpma
/ Bölme

Aritmetik Operatörler

SQL'de kullanılan aritmetik operatörler yukarıda listelenmiştir. Bu aritmetik operatörler FROM cümleciği hariç istenilen her yerde kullanılabilir.

Aritmetik Operatörlerin Kullanımı

SELECT last_name, salary, salary + salary * 5 / 100
FROM   employees;

Örneğin; employees tablosunda çalışanları listelerken, maaş bilgisinin yanısıra maaşının %5 fazlasıyla toplanmış halini görmek isteyebiliriz. Bunun için salary + salary * 5 / 100 ya da salary * 105 / 100 yazabiliriz.

Burada dikkat edilmesi gereken tek şey, operatör önceliğidir(operator precedence). İlk önce eğer varsa parantezler arasındaki işlemler gerçekleştirilir ve daha sonra çarpma, bölme işlemi uygulanır. En son olarakta toplama ve çıkarma işlemi gerçekleştirilir.

SELECT last_name, salary, (salary + 100) * 12
FROM   employees;

Yukarıdaki örnekte, ilk önce parantez içindeki toplama işlemi gerçekleştirildikten sonra çarpma işlemi yapılmaktadır.

Öncelik Kuralları
  • Çarpma ve bölme, toplama ve çıkarmadan önce gerçekleştirilir.
  • Aynı önceliğe sahip operatörler, soldan sağa işlenir.
  • Parantezler, varsayılan önceliği değiştirmek ya da ifadenin okunabilirliğini artırmak için kullanılabilir.
NULL Değer Tanımlama

NULL, kullanılmayan(unavailable), atanmamış (unassigned), bilinmeyen (unknown) veya uygulanamaz (inapplicable) bir değerdir. NULL, 0 ya da  bir boşluk ile aynı karakteristiğe sahip değildir. Halbuki 0 bir sayı, boşluk ise bir karakterdir.

NULL değer içeren aritmetik ifadeler sonuç olarak NULL verirler.

Örneğin; employees tablosunda commission_pct kolonu sayısal değerlerin yanısıra NULL değerler de içermektedir.

SELECT last_name,  salary*commission_pct
FROM   employees;

Böyle bir sorgunun sonucunda, eğer commission_pct değeri sayısal bir değerse, çarpım işlemi gerçekleştirilecek, aksi takdirde sonuç NULL olacaktır. eployees tablosuna ait last_name değerleri listelenirken, çarpım işleminin sonucu commission_pct değerine göre değişecek ve NULL veya sayısal bir değer görüntülenecektir.

Kolonlar İçin Takma Ad Tanımlama (Defining A Column Alias)

Bir sorgunun sonucunu görüntülerken, default olarak kolon adı kolon başlığı olarak kullanılmaktadır. Tek başına kolon isimleri açıklayıcı olmadıkları için, Takma Ad (Alias) kullanmak, kolon isimlerini daha anlamlı hale getirecektir. 

SELECT last_name AS "Last Name", first_name Name, salary AS "Salary"
FROM   employees;

Takma Ad, kolon adının hemen ardından belirtilmelidir.  AS anahtar kelimesinin kullanımı tercihe bağlıdır ve kolon adı ile takma ad arasında olmalıdır.

Takma ad, eğer boşluk veya özel karakterler içeriyorsa ya da büyük-küçük harf duyarlı bir içeriğe sahipse, çift tırnak (double quotation) içinde olmalıdır. Takma Adlar, çift tırnak kullanılmaz ise default olarak büyük harfle gösterilir. 


Birleştirme Operatörü (Concatenation Operator) ( ||  iki dikey çubuk)


Birleştirme operatörü, kolonları veya karakter dizelerini diğer kolonlara bağlamak için kullanılır. Karakterlerden oluşan bir sonuç kolonu yaratır.



SELECT last_name||job_id AS "Employees"
FROM employees;



Bir karakter dizesi ile bir NULL değeri birleştirdiğimizde, sadece karakter dizesi görüntülenir (last_name||NULL sadece last_name verisini gösterir.)


SELECT last_name || ', ' || first_name AS "Employees"
FROM employees;


Sorgulama aşamasında daha anlamlı sonuçlar elde etmek için Literal Karakter dizeleri kullanmak daha mantıklı olacaktır. Yukarıdaki örnekte last_name ile first_name kolonları birleştirilmekte ve araya virgül konulmaktadır. Bu işlem tablodaki her kayıt için tekrarlanmakta ve  bize 'Çakan, Ahmet' gibi çıktılar üretmektedir. Literal karakter dizeleri tek tırnak(single quotation marks) içinde olmalıdır (' ').


Yinelenen Satırları Engellemek (Aynı değerlere sahip yinelenen duplicate satırları engellemek)


SELECT ifadesinde, SELECT anahtar kelimesinden hemen sonra DISTINCT niteleyicisini kullarak yinelenmeyen unique satırlar elde edebiliriz.

SELECT DISTINCT department_id
FROM   employees;



Tablo Yapısını Görüntülemek


Bir tablonun yapısını görüntülemek için DESC[RIBE] komutu kullanılmaktadır. Bu komut sayesinde tabloya ait kolonları ve kolonların veri tiplerini görebiliriz.


DESC[RIBE] tablename;


DESCRIBE employees;




Veri Tipi                            Açıklama


NUMBER(p , s )                  Maksimum p sayıda rakama sahip, ondalık hanesinde de sağa  
                                         doğru s sayıda rakam bulundurabilen sayısal değer


VARCHAR2(s )                   Maksimum s sayıda karakter içeren, değişken-uzunluklu karakter 
                                         değeri


DATE                                 1 Ocak 4712 B.C. ile 31 Aralık A.D. 9999. arasındaki bir tarih ve 
                                         zaman değeri

CHAR(s )                            s sayıda karakter içeren, sabit-uzunluklu karakter değeri




Tablo yapısı gösterilirken kolon adları ile veri tiplerinin yanısıra  Null bilgisi de görüntülenmektedir. Null, kolonun Null değer alabileceğini belirtir. NOT NULL ise kolonun kesinlikle bir değer içermesi gerektiğini belirtir.


--------------------------------------------------------------------------------------------------------------------------------


Bu yazımızda sertifikasyona ait konuların ilki olan "Retrieving Data Using the SQL SELECT Statement" konusunu hızlı bir şekilde inceledik. Bir sonraki yazımızda "Restricting and Sorting Data" konusuna değineceğiz. 

No comments:

Post a Comment

LinkWithin

Related Posts Plugin for WordPress, Blogger...