12 Ocak 2017 Perşembe

MS SQL 2008

MS SQL 2008 bu veri türlerinin tanımlandığı ekran aşağıdaki gibidir.


Sorgulama İşlemleri



SQL'de sorgulama işlemleri, SELECT deyimi yardımıyla yerine getirilir. SELECT deyimi temel olarak üç farklı işlemi yerine getirmek için kullanılır:

Seçme İşlemi (Select): Bir tablodaki satırları seçme işlemidir. Bunun için çeşitli seçme kriterleri kullanılabilir.

Atma İşlemi (Projection): Bir tablodaki belirli kolonların seçilmesi işlemidir.

Birleştirme İşlemi (Join): Birden fazla tablonun belirlenen sütunları arasındaki ilişkilerin kullanılarak birleştirilmesi işlemidir.




SELECT deyimi en basit biçimde şu şekilde ifade edilmektedir;

SELECT [DISTINCT] * / <sütun>
FROM <Tablo_Adı/Tablolar>

Tanım içinde bazı SQL anahtar kelimelerine yer verilmektedir. Bu anahtar kelimeler, SQL 'in kendi özel kelimeleridir ve aynen bu şekilde ifade edilmelidir.

SELECT     ? SQL'in sorgulama deyimidir.
FROM        ? Hangi tablonun sorgulanacağını ifade eder.
DISTINCT ? Çift kayıtları önleyen anahtar kelimedir.


SELECT ifadesinden sonra sorgu sonucunda ekranda görüntülenmesi istenen sütun isimlerinin arasına virgül konarak yan yana yazılır. Eğer tabloda bulunan bütün alanlar listelenmek istenirse * işareti kullanılır.

Örneğin;
SELECT * FROM students
Bu sorgu çalıştırıldığında, öğrenciler tablosundaki bütün alanları göstermektedir.
SELECT studentName, studentSurname FROM students
Bu sorgu çalıştırıldığında, öğrenciler tablosunda yer alan öğrencilerin sadece Adı ve Soyadı bilgilerini göstermektedir.




FROM ifadesinden sonra listeleme işleminin hangi tablo üzerinde yapılacağı belirtilir. Birden fazla tablo kullanıldığında aralarına virgül işareti konur.

Örneğin;
SELECT * FROM students, departments
Bu sorgu çalıştırıldığında, öğrenciler ve bölümler tablosundaki bütün alanları göstermektedir.



SELECT * FROM students, departments sorgusunda her iki tablodan da belli alanlar görüntülenmek istenirse, SELECT ve FROM ifadeleri arasına tablo ismi belirtilerek yazılır.

Örneğin;
SELECT students.studentName,  
                     students.studentSurname,
                     departments.departmentName
    FROM students, departments




WHERE Deyimi


WHERE deyimi, tablo içerisinde istenen bir şarta uygun olan kayıtların listelenmesi amacıyla kullanılmaktadır.

İstenen şartlar WHERE ifadesinden sonra yazılmaktadır.

WHERE koşul ifadesine bağlı olarak listelenmesi istenen alanlarda yazılabilir.
Şart ifadesi içerisinde kullanılacak ifade rakam ise tırnak işareti kullanılmaz. Eğer alfabetik bir ifade ise aranacak ifade tek tırnaklar arasına yazılır.





Örnek:
SELECT * FROM Müşteriler WHERE MüşteriNo = 10
Müşteriler tablosunda Müşteri numarası 10 olan kişinin tüm bilgilerini listeler.

SELECT Adı, Soyadı
         FROM Müşteriler
               WHERE MüşteriNo =  10
Müşteriler tablosunda Müşteri numarası 10 olan kişinin sadece Adı ve Soyadı bilgilerini listelenir.


Aslında WHERE ifadesi, tablo içerisinde istenen bir şarta bağlı olarak kayıtların sınırlandırılmasını sağlamaktadır. Yani görüntülenecek kayıtların şarta uygun olan belli bir bölümü görüntülenmektedir.


SQL Operatörleri

Her programlama dilinde olduğu gibi SQL de de bazı operatörler bulunmaktadır. Bu operatörler, listeleme yapılırken istenilen koşulların yerine getirilmesine yardımcı olmaktadırlar. Bu operatörleri 4 ana başlık altında toplamak mümkündür.

Karşılaştırma operatörleri,
Mantıksal operatörler,
Aritmetiksel ifadeler,
Kümeleme operatörleri.





Karşılaştırma Operatörleri

Karşılaştırma operatörleri, verilen iki ifadenin birbirleri ile kıyaslanmasını sağlamaktadır. Bu ifadeleri şöyle sıralayabiliriz.
X > Y , X ifadesi Y ifadesinden büyüktür.
X < Y , X ifadesi Y ifadesinden küçüktür.
X = Y , X ifadesi Y ifadesine eşittir.
X => Y , X ifadesi Y ifadesine eşit ve büyüktür olabilir.
X <= Y , X ifadesi Y ifadesine eşit ve küçüktür olabilir.
X <> Y , X ifadesi Y ifadesine eşit değildir.



Karşılaştırma operatörlerine, «Siparişler» tablosunu kullanarak bir örnek verelim. Nakliye ücreti 20 TL den büyük olan siparişler hangileridir? Bu sorgunun SQL cümlesi aşağıdaki gibi olacaktır:
SELECT *
         FROM Siparişler
               WHERE NakliyeÜcreti > 20


Mantıksal Operatörler

Mantıksal operatörler, bütün dillerde olduğu gibi iki yada daha fazla şartın kıyaslanması amacıyla kullanılmaktadır. Bu operatörler şu ifadelerden oluşmaktadır.
AND (ve)
OR (yada)
NOT (değil)

Önemli Nokta!
SQL’de bu operatörlerin hepsi WHERE deyiminden sonra kullanılmaktadır.





AND operatörüne örnek verecek olursak; siparişler tablosunda, nakliye ücreti 10 TL den küçük ve Ankara’ ya gönderilen siparişler hangileridir?

SELECT  * 
     FROM Siparişler
           WHERE (NakliyeÜcreti <10) AND (Gönderilenİl='Ankara')


OR operatörüne örnek verecek olursak; siparişler tablosunda, nakliye ücreti 10 TL den küçük yada Ankara’ ya gönderilen siparişler hangileridir?

SELECT  * 
     FROM Siparişler
           WHERE (NakliyeÜcreti <10) OR (Gönderilenİl='Ankara')


NOT operatörüne örnek verecek olursak; siparişler tablosunda, nakliye ücreti 10 TL den küçük olmayan siparişler hangileridir?

SELECT  * 
     FROM Siparişler
           WHERE NOT (NakliyeÜcreti <10)




Aritmetiksel İfadeler



Aritmetiksel ifadeler, tablo içerisindeki herhangi bir sütun üzerinde işlem yapmayı sağlamaktadır.

Bu operatörler;
Toplama (+),
Çıkarma (-),
Çarpma (*),
Bölme (/).
işlemlerinden oluşmaktadır.







Aritmetiksel işlevler yapılırken işlem sırası önemlidir. İşlem sırası şu şeklidedir:
*  /  +  -

Örneğin bir hücre ile işlem yapılırken şu şeklide kullanılmaktadır:
NakliyeÜcreti * 12




Örneğin, “Siparişler” tablosunda nakliye ücretlerinin sabit olduğunu düşünelim. Bu satırların her biri için yıllık nakliye ücreti ne olur?
SELECT NakliyeÜcreti * 12
         FROM Siparişler





Aritmetiksel ifadeler kullanılırken parantezlerin kullanımı son derece önemlidir. Parantezlerin, işlem öncelikleri göz önüne alınarak doğru yerde kullanılması gerekmektedir. Aksi durumda yanlış işlem sonuçları ortaya çıkabilmektedir.

Örneğin; ücretin 10 TL olduğunu varsayarsak;
12*(ücret+500) = 12*510=6120
12*ücret+500 = 120+500 = 620

Burada işlem önceliği çarpmanın olduğundan sonuç farklı olacaktır.





Kümeleme Operatörleri


Kümeleme operatörleri, tablo içerisindeki verileri çeşitli kriterlere göre gruplamayı sağlayan operatörlerdir. Bu operatörler;
BETWEEN
IN
LIKE

Bu komutlar yine WHERE komutundan sonra kullanılmaktadır.


BETWEEN komutu belli bir aralıktaki kayıtların sorgulanmasında kullanılmaktadır. Bu komutta alt ve üst sınır tanımlamaları yapılmaktadır. Genel kullanımı şöyledir.

BETWEEN Alt_Sınır AND Üst_Sınır

Örnek: Nakliye ücreti 10 ve 20 TL arasındaki siparişlerin detayları nelerdir?

SELECT *
         FROM Siparişler 
              WHERE  NakliyeÜcreti BETWEEN 10 AND 20



IN komutu, kayıtların tablodaki değerlerle karşılaştırılması söz konusu olduğunda kullanılmaktadır.

Örneğin; Ankara, İzmir ve İstanbul’a gönderilen siparişler hangileridir? sorgusunu yazalım.

SELECT SiparişNo, Gönderilenİl
         FROM Siparişler
              WHERE Gönderilenİl IN ('Ankara', 'İzmir', 'İstanbul')


LIKE komutu, WHERE komutu ile birlikte kullanılan ve sözcüğün tamamı ile değil de sadece belli bir bölümü ile arama yapmayı sağlayan bir komuttur.

Örneğin, siparişlerin gönderildiği kişilerden adları N ile başlayan kişiler kimlerdir? sorgusunu yapalım.

SELECT GönderilenAd 
         FROM Siparişler
               WHERE GönderilenAd LIKE 'N%'

Burada %, N harfinden sonra gelen hiç bir harfin öneminin olmadığını ifade eder.


Örneğin, siparişlerin gönderildiği kişilerden adlarının içinde N harfi  bulunan kişiler kimlerdir? sorgusunu yapalım.

SELECT GönderilenAd 
         FROM Siparişler
               WHERE GönderilenAd LIKE ‘%N%'



LIKE deyimi ile birlikte kullanılan karakterlerden bir diğeri  _ işaretidir. Bu işaret bir harf veya rakamın yerini tutar.

Örneğin, siparişlerin gönderildiği kişilerden adlarının içinde sondan ikinci harfi N olan kişiler kimlerdir? sorgusunu yapalım.

SELECT GönderilenAd 
         FROM Siparişler
               WHERE GönderilenAd LIKE ‘%N_'


ORDER BY İfadesi

ORDER BY komutu, önceden belirlenmiş olan sütuna göre sıralama işlemlerini gerçekleştirmektedir.

Sıralama işleminde sıralama yapılacak olan sütun, rakamsal ifadelerden oluşuyorsa sıralama küçük rakamdan büyüğe yada büyük rakamdan küçüğe doğru sıralanabilmektedir.

Eğer sütun alfabetik değerlerden oluşuyorsa sıralama işlemi A’dan Z’ ye doğru yada Z’ den A’ ya doğru yapılabilmektedir.

ORDER BY komutu ile istenilen sıralama biçiminin yapılabilmesi için ardından bir komut almaktadır. Bu komutlar;

ASC: Sütundaki verileri küçükten büyüğe yada A’ dan Z’ ye doğru sıralama işlemini gerçekleştirir.

DESC: Sütundaki verileri büyükten küçüğe yada Z’ den A’ ya doğru sıralama işlemini gerçekleştirmektedir.

Eğer ORDER BY komutundan sonra herhangi bir ifade seçilmez ise, varsayılan ifade olarak küçükten büyüğe doğru sıralama işlemi yapılmaktadır. Yani varsayılan arama tipi ASC’ dir.


Örnek: Bahçe İşleri veritabanında siparişler tablosunda, nakliye ücreti 10 TL ile 25 TL arasında olan siparişlerin siparişno, nakliyeci ve gönderilen kişi bilgilerini büyükten küçüğe doğru sıralayan SQL sorgusu şöyle olacaktır.

SELECT SiparişNo, Nakliyeci, GönderilenAd, NakliyeÜcreti
         FROM Siparişler
                WHERE NakliyeÜcreti BETWEEN 10 AND 25
                        ORDER BY NakliyeÜcreti DESC



Sorgu çalıştırıldıktan sonra yandaki ekran karşınıza çıkacaktır.









Şimdi aynı sorguyu küçükten büyüğe doğru yapalım.
SELECT SiparişNo, Nakliyeci, GönderilenAd, NakliyeÜcreti
         FROM Siparişler
                WHERE NakliyeÜcreti BETWEEN 10 AND 25
                        ORDER BY NakliyeÜcreti

veya

SELECT SiparişNo, Nakliyeci, GönderilenAd, NakliyeÜcreti
         FROM Siparişler
                WHERE NakliyeÜcreti BETWEEN 10 AND 25
                        ORDER BY NakliyeÜcreti ASC




ORDER BY içerisinde birden fazla ifade ile sıralama yaptırmak  mümkündür.
Bahçe İşleri veritabanında siparişler tablosunda, nakliye ücreti 10 TL ile 25 TL arasında olan siparişlerin siparişno, nakliyeci, gönderilen kişi ve sipariş tarihi bilgilerini göstererek, önce nakliye ücretini büyükten küçüğe sonra da sipariş tarihini küçükten büyüğe doğru sıralayan SQL sorgusu şöyle olacaktır.

SELECT SiparişNo, Nakliyeci, GönderilenAd, NakliyeÜcreti, SiparişTarihi
          FROM Siparişler
                WHERE NakliyeÜcreti BETWEEN 10 AND 25
                        ORDER BY NakliyeÜcreti DESC, SiparişTarihi ASC



Sorgu çalıştırıldıktan sonra yandaki ekran karşınıza çıkacaktır.