SQL SELECT İfadesi

SQL Select Deyimini kullanarak verileri alma

SQL, kapsamlı bir veritabanı dilidir. Sequel veya basitçe SQL olarak telaffuz edilen SQL, işlemsel olmayan bir yaklaşımı takiben ilişkisel veritabanlarını sorgulamak için kullanılan bir bilgisayar programlama dilidir. SQL kullanarak bir veritabanından bilgi aldığınızda, buna veritabanını sorgulama adı verilir.

İlişkisel bir veritabanı, İlişkisel Veritabanı Yönetim Sistemi (RDBMS) kullanılarak uygulanır. Bir RDBMS, ilişkisel modelin anlaşılmasını ve uygulanmasını kolaylaştıran çok sayıda başka işlevle birlikte yukarıda bahsedilen DBMS yazılımının tüm temel işlevlerini gerçekleştirir. RDBMS kullanıcıları, özel bir veri işleme dili kullanarak verileri işler. Veritabanı yapıları, bir veri tanımlama dili kullanılarak tanımlanır. Sistem kullanıcılarının verileri saklamak ve almak için yürüttüğü komutlar, komutlar yazılarak bir RDBMS arayüzüne sahip bir terminalde girilebilir veya bir tür grafik arayüz kullanılarak girilebilir. DBMS daha sonra komutları işler.

SELECT İfadesinin Yetenekleri

Veri tabanından veri alımı, SQL'in uygun ve verimli kullanımı ile yapılır. İlişkisel teorideki üç kavram, SELECT ifadesinin kapasitesini kapsar: projeksiyon, seçim ve birleştirme.

  • Projeksiyon: Bir proje işlemi, bir tablodan yalnızca belirli sütunları (alanları) seçer. Sonuç tablosu, kullanılabilir sütunların bir alt kümesine sahiptir ve tek bir sütundan tüm kullanılabilir sütunlara kadar her şeyi içerebilir.

  • Seçim: Bir seçme işlemi, bir seçim koşulunu sağlayan bir tablodaki (ilişki) satırların (kayıtların) bir alt kümesini seçer. Tam sonuç kümesinden satır seçme yeteneğine Seçim denir. Koşullu filtreleme ve veri aşamalandırmayı içerir. Alt küme, satırlardan hiçbiri seçim koşulunu karşılamıyorsa, bir tablodaki tüm satırlara kadar satır içermeyebilir.

  • Birleştirme: Bir birleştirme işlemi, iki veya daha fazla tablodaki verileri bir veya daha fazla ortak sütun değerine göre birleştirir. Bir birleştirme işlemi, bir bilgi sistemi kullanıcısının tablolar arasında var olan ilişkileri işlemesini sağlar. Birleştirme işlemi çok güçlüdür çünkü sistem kullanıcılarının, bir veritabanı tasarlandığı sırada öngörülemeyen veri öğeleri arasındaki ilişkileri araştırmasına olanak tanır.

Yukarıdaki tablo yapılarını düşünün. EMPLOYEES tablosundan tek bir çalışanın adının, departman kimliğinin ve maaşının alınması Projeksiyondur. ÇALIŞANLAR tablosundan maaşı 5000'den az olan çalışan detaylarının alınması Seçimdir. ÇALIŞANLAR ve DEPARTMENTS'a katılarak çalışanın adı, departman adı alınmaktadır.

Temel SELECT ifadesi

Bir SELECT ifadesi için temel sözdizimi aşağıda sunulmuştur.

SELECT  [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name} 
    [{table_name [alias]  | view_name}]...  
[WHERE  condition]
[GROUP BY  condition_list]
[HAVING  condition]
[ORDER BY  {column_name | column_#  [ ASC | DESC ] } ...

SELECT yan tümcesi zorunludur ve ilişkisel proje işlemini gerçekleştirir.

FROM yan tümcesi de zorunludur. Bir sonuç tablosunda görüntülenen sütun verilerinin alınacağı bir veya daha fazla tabloyu ve / veya görünümü tanımlar.

WHERE yan tümcesi isteğe bağlıdır ve ilişkisel seçme işlemini gerçekleştirir. Hangi satırların seçileceğini belirtir.

GROUP BY yan tümcesi isteğe bağlıdır. Verileri, SELECT yan tümcesinde listelenen bir veya daha fazla sütun adına göre gruplar halinde düzenler.

İsteğe bağlı HAVING yan tümcesi, bir sonuç tablosuna hangi grupların dahil edileceğine ilişkin koşulları belirler. Gruplar GROUP BY yan tümcesi ile belirtilir.

ORDER BY yan tümcesi isteğe bağlıdır. Sorgu sonuçlarını artan veya azalan sırada bir veya daha fazla sütuna göre sıralar.

SELECT deyimindeki aritmetik ifadeler ve NULL değerler

Bir ifadeyi SELECT deyimine gömmek için sütun adları, operatörler ve sabit değerler kullanılarak bir aritmetik ifade oluşturulabilir. Bir sütuna uygulanabilen operatör, sütunun veri türüne bağlıdır. Örneğin, aritmetik operatörler karakter değişmez değerlerine uymayacaktır. Örneğin,

SELECT employee_id, sal * 12 ANNUAL_SAL
FROM employees;

Yukarıdaki sorgu, her çalışanın yıllık maaşını hesaplamak için aritmetik ifadeyi (sal * 12) içerir.

Aritmetik operatörler

Operatörler, farklı bir sonuç elde etmek için sütunlara (işlenenler olarak bilinir) göre hareket ederler. Bir ifadede birden fazla operatör olması durumunda, değerlendirme sırası operatör önceliğine göre belirlenir. İşte temel öncelik kuralları -

  • Çarpma ve bölme, Toplama ve Çıkarmadan önce gerçekleşir.

  • Aynı önceliğe sahip operatörler soldan sağa doğru değerlendirilir.

  • Operatörlerin varsayılan davranışını geçersiz kılmak için parantezleri kullanın.

Aşağıdaki tablo, bu gibi durumlarda operatörlerin önceliğini göstermektedir. Öncelik Seviyesi Operatör Sembolü İşlemi

Description   Operator	Precedence	   
Addition	+	Lowest	   
Subtraction	-	Lowest	   
Multiplication	*	Medium	   
Division	/	Medium	   
Brackets	( )	Highest

Aşağıdaki sorguları inceleyin (a), (b) ve (c)

  • SQL> SELECT 2*35 FROM DUAL;
  • SQL> SELECT salary + 1500 FROM employees;
  • SQL> SELECT first_name, salary, salary + (commission_pct* salary) FROM employees;

Sorgu (a) iki sayıyı çarpar, (b) ise tüm çalışanların maaşlarına 1500 ABD Doları eklemeyi gösterir. Sorgu (c), komisyon bileşeninin çalışanın maaşına eklenmesini gösterir. Önceliğe göre, ilk komisyon maaş üzerinden hesaplanacak ve ardından maaşa eklenecektir.

Sütun Diğer Adları

Görüntüleme sırasında bir sütunu veya ifadeyi yeniden adlandırmak için bir takma ad kullanılır. Bir sütunun veya bir ifadenin diğer adı, bir sorgunun çıktısında başlık olarak görünür. SELECT sorgusunda uzun ifadelere anlamlı bir başlık sağlamada kullanışlıdır. Varsayılan olarak, diğer ad sorgu çıktısında boşluksuz olarak büyük harfle görüntülenir. Bu davranışı geçersiz kılmak için, takma addaki büyük / küçük harf ve boşlukları korumak için takma ad çift tırnak içine alınmalıdır.

SELECT price * 2 as DOUBLE_PRICE, price * 10 "Double Price"
FROM products;

DOUBLE_PRICE	Double Price
------------	------------
39.9			39.9
60			60
51.98			51.98

Birleştirme operatörleri

Birleştirme operatörü, bir SELECT sorgusunda iki dize değerini veya ifadeyi birleştirmek için kullanılabilir. Çift dikey çubuk sembolü, dize birleştirme operatörü olarak kullanılır. Yalnızca yeni bir karakter ifadesiyle sonuçlanan karakter ve dize sütun değerleri için geçerlidir. Misal

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM dual;

Yukarıdaki sorgu, iki karakter değişmez değerinin birleşimini gösterir.

Değişmezler

SELECT yan tümcesinde veritabanında depolanmayan herhangi bir sabit kodlanmış değer, Literal olarak bilinir. Sayı, karakter veya tarih değeri olabilir. Karakter ve tarih değerleri tırnak içine alınmalıdır. Aşağıdaki SQL sorgularını göz önünde bulundurun. SQL sorgularında farklı veri türlerinin değişmez değerlerini kullanma örnekleri.

Aşağıdaki sorgu, bunları birleştirmek için iki karakter değişmezi kullanır.

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM DUAL

Aşağıdaki sorgu, çalışanın maaşını güzel bir şekilde yazdırmak için karakter değişmezlerini kullanır.

SQL> SELECT first_name ||'earns'|| salary||' as of '|||sysdate
FROM employees

Teklif Operatörü

Alıntı operatörü, kendi tırnak işareti sınırlayıcınızı belirtmek için kullanılır. Verilere bağlı olarak uygun bir sınırlayıcı seçebilirsiniz.

SELECT 	department_name|| ' Department' ||q'['s Manager Id: ]'|| manager_id
FROM departments;

BOŞ

Bir sütunun belirli bir değeri yoksa, NULL olarak kabul edilir. NULL değeri bilinmeyen veya kullanılamaz olduğunu gösterir. Sayısal değerler için sıfır değildir, karakter değerleri için boşluk değildir.

NULL değerine sahip sütunlar bir SELECT sorgusunda seçilebilir ve bir aritmetik ifadenin parçası olabilir. NULL değerleri kullanan herhangi bir aritmetik ifade NULL ile sonuçlanır. Bu nedenle, NULL değerine sahip sütunlar, NVL veya NULLIF gibi Oracle tarafından sağlanan işlevler kullanılarak alternatif değerleri belirtilerek farklı şekilde ele alınmalıdır.

SQL> SELECT NULL + 1000 NUM 
FROM DUAL;

NUM
--------

DISTINCT Anahtar Kelime

Verilerin yinelenen sonuçlara sahip olması bekleniyorsa, yinelemeleri ortadan kaldırmak ve sorgu çıktısında yalnızca benzersiz sonuçları görüntülemek için DISTINCT anahtar sözcüğünü kullanın. Yalnızca seçilen sütunlar çoğaltma için doğrulanır ve satırlar mantıksal olarak sorgu çıktısından çıkarılır. Dikkat edilmesi gereken, DISTINCT anahtar sözcüğü SELECT yan tümcesinden hemen sonra görünmelidir.

Aşağıdaki basit sorgu, EMPLOYEES tablosundaki benzersiz departman kimliklerini görüntülemek için DISTINCT kullanımını göstermektedir.

SQL> SELECT DISTINCT DEPARTMENT_ID 
FROM employees;

DEPARTMENT_ID
---------------
10
20
30
40

DESCRIBE komutu

Bir tablonun yapısal meta verileri, DESCRIBE komutu kullanılarak onu içeren sütunların listesi için veri tabanının sorgulanmasıyla elde edilebilir. Kullanılan sütun adlarını, bunların null özelliklerini ve veri tiplerini listeler.

Syntax:

DESC[RIBE] [SCHEMA].object name

Örneğin,

DESC EMPLOYEE

EMPLOYEE tablo yapısını, yani sütunları, veri türlerini, duyarlığı ve null yapılabilir özelliği gösterecektir.