0% found this document useful (0 votes)
10 views24 pages

Unite 6

Uploaded by

winxclupeda
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views24 pages

Unite 6

Uploaded by

winxclupeda
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

SORGU OLUŞTURMAK VE

ÇEŞİTLERİNİ KULLANMAK-1

Dr. Öğr. Üyesi


• Tabloyu güncellemek
VERİ TABANI
İÇİNDEKİLER

• Select deyiminin yazım


kuralları YÖNETİM SİSTEMLERİ
• Sütunların sınırlandırılması Dr. Öğr. Üyesi Sinan KUL
• Satırların sınırlandırılması
• Sıralama işlemleri

• Bu üniteyi çalıştıktan sonra;


• Bir tabloya sorgu ile sütun ekleyip
güncelleyebilecek,
• Basit bir select cümlesinin yazımını
HEDEFLER

ve bir tablodaki verilerin select


deyimi kullanılarak listelenmesini
kavrayabilecek,
• Tablodan istenilen sütunların ve
satırların görüntülenmesini
sağlayabilecek,
• Karşılaştırmada kullanılan bazı
operatörleri ve fonksiyonları
öğrenebilecek,
• Null değerler üzerinde sorgulama
ÜNİTE

6
yapabilecek,
• Tablodaki verilerin sıralanarak
listelenmesi hakkında bilgi sahibi

© Bu ünitenin tüm yayın hakları Atatürk Üniversitesi Açıköğretim Fakültesi’ne aittir. Yazılı izin alınmadan
ünitenin tümünün veya bir kısmının elektronik, mekanik ya da fotokopi yoluyla basımı, yayımı, çoğaltımı ve
dağıtımı yapılamaz.
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Sütun Ekle

Tabloyu Güncellemek
SORGU OLUŞTURMAK VE ÇEŞİTLERİNİ
Sütun Güncelle

Select Deyimi

Like
KULLANMAK - 1

Sütunların Sınırlandırılması

In

Between

Satırların Sınırlandırılması

Is null

Sıralama

Isnull()

Coalesce()

Atatürk Üniversitesi Açıköğretim Fakültesi 2


113
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

GİRİŞ
Önceki ünitede SQL dilinin genel yapısından bahsedilmişti, T-SQL sorguları ile
veri tabanının ve tabloların nasıl oluşturulacağı ve mevcut tabloların nasıl ortadan
kaldırılacağı gösterilmişti.
Bu ünitede ise tablodaki sütun özelliklerinin değiştirilmesi ve tabloya yeni
sütun eklenmesi için gerekli TSQL kodları gösterilecektir. Bu üniteyle birlikte ayrıca
en sık kullanılan SQL deyimi olan “Select” deyiminin yazım kuralları gösterilerek SQL
ile sorgu oluşturmanın eğlenceli dünyasına giriş yapılacaktır.
“Select” deyimi kullanılarak tablolardan satır ve sütunlar halinde verilerin
çekilerek nasıl esnek bir biçimde görüntülenebileceği öğretilecektir. Bu bağlamda
tablodaki bazı sütunların istenen sırada görüntülenebileceği sütunların
sınırlandırılması konu başlığında incelenirken tablodaki belirli koşula veya koşullara
uyan bazı kayıtların filtrelenmesi ise satırların sınırlandırılması konu başlığında
incelenecektir. Satırların sınırlandırılmasında kullanılan koşullar, ilgili sütunlar ve
değerlerin karşılaştırılmasını sağlayan operatörler ile oluşturulurken birden fazla
koşul ise mantıksal operatörler ile birbirine bağlanmaktadır. Dolayısıyla bu ünitede
karşılaştırma operatörleri ve mantıksal operatörler (And, Or ve Not) tanıtıldıktan
sonra kullanımlarına örnekler verilecektir.
SQL’de diğer dillerde pek karşılığı bulunmayan karşılaştırma operatörleri ise
ayrı alt başlıklar ile incelenecektir. Metinsel ifadeler içinde joker karakterler
kullanarak arama yapılmasını sağlayan “like” operatörü, aralık sorgulamada
kullanılan “between” operatörü, liste içinden arama yapmayı sağlayan “in”
Operatörü ve herhangi bir hücreye değer girilip girilmediğini kontrol eden “is null”
operatörü bu kapsamda incelenecektir. Null değerlerle çalışmayı kolaylaştıran Isnull
ve Coalesce fonksiyonları ise kapsamın biraz dışında olmasına rağmen konuyla
irtibatlı olması dolayısıyla üniteye dâhil edildi.
Bu ünitede son olarak verilerin belirli alanlara göre artan veya azalan olarak
sıralanması ve sıralama sonrası en üstte kalan birkaç kaydın görüntülenebilmesi
için sorgu kodlarının nasıl yazılacağı gösterilecektir.
Kısacası veri tabanındaki tablolardan değer okurken aranan değerin
koordinatını tam olarak verebilmek ve verileri sıralı olarak listelemeyi öğrenmek
için bu üniteyi dikkatlice okumanız gerekmektedir. Yeri gelmişken belirtmekte
fayda görüyorum, SQL sorguları yazabilmek için SQL yazım kurallarını bilmek yetmez,
sorgu yazabilme mantığının geliştirilebilmesi için bol uygulama yapılması
gerekmektedir.

TABLOYU GÜNCELLEMEK
Tablo oluşturulduktan sonra tablonun yapısında (şemasında) değişiklik
yapılabilmektedir. Böylelikle tabloya yeni sütunlar eklenebildiği gibi tablodaki
mevcut sütunların isimleri, veri türleri ve kısıtları (constraint)
güncellenebilmektedir. Bu bağlamda tablo yapısının güncellenebilmesi için SQL’de
kullanılan komut “Alter Table” komutudur. Herhangi bir tabloya sütun eklemek için

Atatürk Üniversitesi Açıköğretim Fakültesi 3


114
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

mesela “Alter Table” (tabloyu değiştir) deyimi ile birlikte “Add” (ekle) deyimi
kullanılmaktadır (Adar, 2012).

Sütun Eklemek
Herhangi bir tabloya sütun eklemek için “Alter Table” (tabloyu değiştir)
deyimi ile birlikte “Add” (ekle) deyimi kullanılmaktadır. “Alter Table” deyiminden
sonra yapısı güncellenecek tablo adı yazılır; “Add” deyiminden sonra ise eklenecek
sütun adı ve veri türü belirtilir (Adar, 2012). Cümlenin sonunda ayrıca zorunlu
olmamakla birlikte ilgili sütunun “Null” geçilebileceği veya geçilemeyeceğini
belirten bir ifade yani bir kısıt (contraint) bulunabilir. Bu ifade “Null” ise sütun
“Null” değer içerebilir demektir. “Not Null” ise ilgili sütunun “Null”
geçilemeyeceğini ve mutlaka değer girilmesi gerekliliğini belirtmektedir. Bu
ifadenin kullanılmadığı durumda ise kısıtlamanın bulunmadığı yani ilgili sütunun
“Null” geçilebileceği anlaşılır.
Söz Dizimi:
ALTER TABLE Tablo_Adı ADD Alan_Adı [Alan_Türü] [NULL|NOT NULL]
Örnek olarak “Birey” tablosuna bir alan ekleyelim:
Veri tabanı
nesnesinin özellikleri
değiştirilirken “Alter”
deyimi kullanılır. •ALTER TABLE Birey ADD DogumYeri VARCHAR(50) NULL
Örnek

Yukarıdaki SQL kodu ile “Birey” tablosuna “DogumYeri” adında ve “varchar”


türünde ve 50 karakter uzunluğunda bir sütun eklenmektedir ve “null” (boş) değer
içerebileceği belirtilmektedir. “Birey” tablo şemasının son hâli aşağıdaki gibidir:

Şekil 6.1. Birey Tablosunun “Dogumyeri” Alanı Eklenmiş Hali

Şimdi de bir tabloya bir SQL cümlesi ile birden fazla sütun eklenmesini
görelim. Örnek olması için “Birey” tablosuna “Varchar” türünde ve 50 karakter
uzunluğunda “DoğumYeri” alanı ve “Date” türünde doğum tarihi sütunlarını
ekleyelim.

Atatürk Üniversitesi Açıköğretim Fakültesi 4


115
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

•ALTER TABLE Birey ADD ( DogumYeri VARCHAR(50) NULL,

Örnek
•DogumTarihi DATE )

Null olup olmayacağı


belirtilmezse, null
Yukarıdaki SQL kodunda da görüleceği üzere “Add” deyiminden sonra
kabul eder.
virgüller ile ayrılmış kolon tanımlamaları parantezler içine alınmaktadır. Örnekte
ayrıca “DogumTarihi” sütunu tanımlanırken “Null” olup olmayacağı belirtilmediği
halde Şekil [Link] de görüleceği üzere varsayılan olarak “Null” değer içerebilir
olarak yorumlanmıştır.

Şekil 6.2. Birey Tablosunun “Dogumyeri” Ve “Dogumtarihi” Alanları Eklenmiş Hâli

Sütun Güncellemek
Veri tabanı tablosu oluşturulduktan sonra tablodaki sütunların veri tiplerinin
ve/veya kısıtların daha sonra güncellenmesi gerekebilmektedir. Tablodaki
herhangi bir sütunun veri tipi ve constraint özellikleri değiştirilirken “Alter Column”
deyimi kullanılmaktadır. Alter Column deyiminden sonra özelliği değiştirilecek olan
sütun adı belirtilir ve sonrasında yeni veri türü ve “Null” olup olmama durumu
belirtilir.
Söz Dizimi:
ALTER TABLE Tablo_Adı ALTER COLUMN Alan_Adı [Alan_Türü] [NULL|NOT
NULL]
Örnek olarak “Birey” tablosundaki “TcNo” alanının veri tipini varchar (11)
olarak değiştirelim ve “Null” değer içermeyeceğini belirtelim.

Tablonun sütunları
değiştirilirken “Alter •ALTER TABLE Birey ALTER COLUMN TcNo VARCHAR(11) NOT
Örnek

Column” deyimi NULL


kullanılır.

Atatürk Üniversitesi Açıköğretim Fakültesi 5


116
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Birey tablosunun son hali Şekil [Link] gibi olmaktadır.

Şekil 6.3. Birey Tablosunun Son Hâli

SELECT DEYİMİNİN YAZIM KURALLARI


“Select” deyimi, veri tabanında bulunan veri kaynaklarından (tablo ve
görünüm gibi) verileri sorgulayarak seçmek ve listelemek için kullanılmaktadır.
“Select” deyimi ile ilgili tablodaki veriler sadece okunmaktadır; veriler üzerinde
herhangi bir değişiklik ( ekleme ve silme gibi ) yapılmamaktadır.
En basit kullanımıyla “Select” deyimi şu şekilde yazılabilmektedir:
Söz Dizimi:
SELECT Select_Listesi FROM Tablo_Listesi
Select deyiminden hemen sonra kullanılan select listesi ile görüntülenmek
istenen sütun adları yazılırken “From” ifadesinden sonra kullanılan tablo listesinde
verilerin bulunduğu tablo adları yer almaktadır. Birden fazla sütun ve tablo adı
birlikte kullanıldığında ise sütun adları ve tablo adları arasına virgül konulmaktadır.
Bütün sütun
adları yerine Tabloda yer alan bütün sütun adlarının listelenmesi istenirse sütun adlarını
sadece “*” tek tek yazmak yerine, “*” karakteri kullanılabilir. Bu kullanım ile tablo isimlerinin
karakteri
yazılış sırasına ve sütun adlarının tablolardaki yer alış sırasına göre listelendiğini
kullanılır.
belirtmek gerekir. Ayrıca ilgili tablodaki satırlar tablodaki kaydediliş sırasına göre
listelenmektedir. Örnek olarak “Birey” tablosundaki kayıtları listeleyelim.
Örnek

•SELECT * FROM Birey

Sorgu cümlesi çalıştırıldığında “Results” (sonuçlar) sekmesinde “Birey”


tablosundaki kayıtlar listelenmektedir (Şekil 6.4). Ekranın sağ alt köşesinde sorgu
ile kaç satır döndüğü bilgisi, onun hemen solunda sorgu süresi (mili saniye
cinsinden) görüntülenmektedir.

Atatürk Üniversitesi Açıköğretim Fakültesi 6


117
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Şekil 6.4. Birey Tablosundaki Kayıtların Listelenmesi

SÜTUNLARIN SINIRLANDIRILMASI
Tablodaki kayıtlar listelenirken sadece belirli sütun adlarının
görüntülenebilmesi için “Select” ifadesinden sonra ilgili sütun adlarının yazılması
gerektiğini söylemiştik. Örnek olarak “Birey” tablosunda yer alan bireylerin
adlarını listeleyelim. Bunun için “Select” deyiminden sonra ve “From” deyiminden
önce sadece “Adi” yazılmalıdır.

•SELECT Adi FROM Birey


Örnek

Şekil [Link] de görüleceği üzere “Results” sekmesinde sadece “Adi” sütunu


görüntülenmektedir.

Sütun adları
yazıldığı sırada Şekil 6.5. Birey Adlarının Listelenmesi
listelenmektedir.
Şimdi de “Birey” tablosundaki kayıtları listelerken TC kimlik numarası, adı,
soyadı, baba adı ve anne adı alanları ile sorguyu sınırlayalım. “Select” deyiminden
sonra ilgili sütun adlarının aralarına virgül konarak kullanılmaktadır.

Atatürk Üniversitesi Açıköğretim Fakültesi 7


118
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

•SELECT TcNo, Adi, Soyadi, BabaAdi, AnneAdi FROM Birey

Örnek

Şekil 6.6. Birey Tablosundan Bazı Bilgilerin Listelenmesi

Select ifadesindeki sütun isimlerinin yazıldığı sırada ve kayıtların tablodaki


fiziksel konumlarına göre listelendiğini görebilirsiniz.

SATIRLARIN SINIRLANDIRILMASI
SQL sorgu sonuçlarının sınırlandırılarak ilgili bazı kayıtların listelenmesi için
özel bir koşul belirtilebilmektedir. Böylece sadece koşula uyan kayıtlar
listelenecektir. Bu bağlamda, satırları filtreleyen koşulları belirtmek için “WHERE”
operatöründen faydalanılmaktadır (Gözüdeli, 2010).
Söz Dizimi:
SELECT Select_Listesi FROM Tablo_Listesi WHERE Koşullar

Veriler satır
bazında
filtrelenirken
•SELECT * FROM Birey WHERE Adi ='Ayşe'
Örnek

“Where” deyimi
kullanılır.

Atatürk Üniversitesi Açıköğretim Fakültesi 8


119
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Şekil 6.7. Adı “Ayşe” Olanların Listelenmesi (2 Kayıt)

Şekil [Link] örnek ile adı “Ayşe” olanlar listelendi. Sütun adı ile değer
arasında “=” (eşittir) operatörünün kullanıldığını gördünüz. Şimdi de soyadı “AKIN”
olmayan bireyleri listeleyelim:

•SELECT * FROM Birey WHERE Soyadi !='AKIN'


Örnek

Şekil 6.8. Soyadı “AKIN” Olmayanların Listelenmesi. (41 Kayıt)

Şekil [Link] eşit olmama durumunu ifade etmek için sütun adı ile değer
arasında “!=” operatörü kullanıldı. Koşul tanımında kullanılan diğer tüm
karşılaştırma operatörleri aşağıdaki tabloda (Tablo 6.1) sunulmuştur. Tabloda eşit
olmama durumu için iki farklı operatör kullanılmaktadır. Uygulamada bunlar
arasında bir fark yoktur. Benzer bir biçimde “>=” (büyük eşit) operatörü, “!<”
(küçük değil) operatörüyle eşdeğer; “<=” (küçük eşit) operatörü ise “!>” (büyük
değil) operatörüyle eşdeğer kullanıma sahiptir.

Atatürk Üniversitesi Açıköğretim Fakültesi 9


120
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Tablo 6.1. Karşılaştırma operatörleri


Operatör Anlamı
= Eşit
!= Eşit değil
<> Eşit değil
> Büyük
!> Büyük değil
< Küçük
!< Küçük değil
>= Büyük eşit
<= Küçük eşit
LIKE Karakter türde karşılaştırma yapar

Operatörler performansları bakımından kıyaslandığında en performanslı


kullanıma sahip olan operatör “=” (eşittir) operatörüdür. Kullanıldığı sorguyu en
yavaş sonuçlandıran operatör ise “!=”, “<>” (eşit değil) operatörleridir.
Karşılaştırma operatörlerinin performanslarıyla ilgili değinilecek son husus bu
operatörlerin sayısal değerlerle daha hızlı çalışmasıdır.

Satırları sınırlandırırken birden fazla koşul ifadesi kullanılacaksa bunlar


arasına ya “And” (ve) veya “Or” (veya) operatörünün kullanılması beklenmektedir.
“And” operatörü kullanıldığında iki koşulun aynı anda doğru olması durumu
aranırken, “Or” operatöründe koşullardan sadece birinin doğru olması sonucun
doğru olması için yeterlidir.

•SELECT * FROM Birey WHERE Soyadi !='AKIN' AND Adi=AnneAdi


Örnek

“Like” operatörü
karakter türündeki
değerler için Şekil 6.9. Soyadı “AKIN” Olmayan Ve Adı Annesinin Adı İle Aynı Olanların Listelenmesi.
kullanılır.
Şekil [Link] örnekte iki şart ifadesi “AND” (ve) operatörüyle birleştirildi.
Sayısal veya tarihsel
veriler için Böylece “birey” tablosundaki kayıtlar içinde soyadı “AKIN” olmayan ve adı
kullanılamaz. annesinin adına eşit olan kayıtlar listlenmektedir. “Birey” tablosunda bu koşullara
uyan bir kayıt bulunmaktadır.

Atatürk Üniversitesi Açıköğretim Fakültesi 10


121
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Like Operatörü
Karşılaştırma operatörlerinden biri olan “Like” operatörü, diğer
operatörlerden farklı olarak sadece karakter türdeki değerler içinde arama
yapmak için geliştirilmiştir. Özellikle aranan karakter ifadenin ne olduğu tam olarak
bilinmediği durumlarda “=” ifadesi yerine “Like” operatörü kullanmak
gerekmektedir.
Tablo 6.2. Joker Karakterleri
Joker Karakter Anlamı
% Birden fazla harf ya da rakamın yerini tutar.
_ Bir tek harf veya rakamın yerini tutar.
[Harf] Herhangi bir harf yerine gelebilecek harfleri belirtir.
[^Harf] Herhangi bir harf yerine gelemeyecek harfleri
belirtir.
[A-Z] A ile Z arasındaki harfleri belirtir.

Örnek olarak ismi “K” harfi ile başlayan bireyleri listeleyelim:

•SELECT * FROM Birey WHERE Adi LIKE 'K%'


Örnek

% karakteri birden
fazla karakterin
yerini tutar.

•SELECT * FROM Birey WHERE Adi NOT LIKE '_e%'


Örnek

“_” karakteri sadece


bir karakterin yerini
tutar.

Şekil 6.10. İsmi “K” Harfi İle Başlayan Bireyler (3 Kayıt)


Şekil 6.10’da da görüldüğü gibi ismi “K” ile başlayanları ifade etmek için tek
tırnaklar arasında “K” harfinden sonra “%” karakteri kullanılmıştır. Yüzde karakteri
çok sayıda harfi veya rakamı temsil edebildiği gibi boşluğu da temsil
edebilmektedir. Yani ilgili konumda herhangi bir karakter bulunmaya da bilir.
Atatürk Üniversitesi Açıköğretim Fakültesi 11
122
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Verilen değer ile eşleşmeme durumunu kontrol etmek için de “Like”


operatörüyle birlikte “Not” operatöründen de faydalanılmaktadır. Örnek olarak
adının ikinci harfi “e” olmayan bireyleri listeleyelim:

[ ] köşeli
parantezleri
arasındaki
karakter
listesinden Şekil 6.11. İsminin ikinci harfi “e” olmayan bireyler (35 kayıt)
herhangi birinin
gelebileceğini Şekil [Link] örnekte de birinci harfi temsil için “_” (alttire) karakteri
belirtir.
kullanıldı. Alttirenin, yüzde karakterinden ilk farkı, tek karakteri temsil etmesidir.
İkinci farkı ise boşluk yerine kullanılmamasıdır. Yani alttire kullanılan konumda
kesinlikle bir karakterin (harf, sayı vs.) bulunması beklenmektedir.
Şimdi de adının baş harfi “a” veya “b” olan bireyleri listeleyelim. Bunun için
köşeli parantezler arasında “a” ve “b” harflerinin birlikte kullanıldığına dikkat edin.
Örnek

•SELECT * FROM Birey WHERE Adi LIKE '[ab]%'

[ ] köşeli parantezleri
arasında gelen iki
karakter arasındaki
karakterlerden
herhangi birinin
gelebileceğini
belirtmek için – tire Şekil 6.12. Adının Baş Harfi “A” Veya “B” Olan Bireyler (7 Kayıt)
kullanılır.
Şimdi de adının üçüncü harfi “k”, “l”, “m” veya “n” olan bireyleri listeleyelim.
Bunun için de köşeli parantezler içerisinde “k-n” kullanıldığına dikkat edin (şekil
6.13). Aralığın ilk harfi ile son harfi arasında “-” (tire) kullanıldı. Adının ilk iki harfini
Atatürk Üniversitesi Açıköğretim Fakültesi 12
123
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

temsil için iki adet “_” (alt tire ) kullanıldı. Metin içindeki % karakteri ise ismin
3’ten fazla uzunlukta olabilmesi durumunu ifade etmektedir.

Şekil 6.13. Adının Üçüncü Harfi “K”, “L”, “M” Veya “N” Olan Bireyler (13 Kayıt)

Şimdi de çift isimli olan yani adı içinde boşluk karakteri bulunan bireyleri
listeleyelim. Bunun için yüzde karakterleri arasında boşluk karakteri kullanıldı (Şekil
6.14).

•SELECT * FROM Birey WHERE Adi LIKE'% %'


Örnek

Şekil 6.14. Adı İçinde Boşluk Karakteri Bulunan Bireyler (1 Kayıt)

Between Operatörü
“Between” operatörü, bir aralık içinde yer alan kayıtları sorgulamak için
kullanılır. Koşulun “true” (doğru) olabilmesi için kıyaslanan değerin, “Between”
operatöründen sonra gelen birinci değerden büyük, ikinci değerden küçük veya bu
değerlere eşit olması gerekmektedir.
Söz Dizimi:
Between
operatöründen Sütun_Adı BETWEEN Alt_Sınır AND Üst_Sınır
sonra önce küçük
değer
kullanılmaktadır.

Atatürk Üniversitesi Açıköğretim Fakültesi 13


124
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

•SELECT * FROM Birey WHERE ID BETWEEN 2 AND 4

Örnek

Şekil 6.15. ID Değeri 2 İle 4 Arasında Olan Bireyler (3 Kayıt)

Şekil [Link] “Between” operatörüne örnek verilirken “Birey” tablosundaki Id


alanı 2 ve 4 arasında olan kayıtlar listelenmektedir.
“Between … and …” operatörünün eşleniği “And” operatörü ile yukarıdaki
örnek sorgu aşağıdaki gibi de yazılabilir:
SELECT * FROM Birey WHERE ID >= 2 AND ID <= 4

In Operatörü
In operatörü, bir sütunun birden fazla değer ile aynı anda karşılaştırılabilmesi
için kullanılmaktadır. Yani bir küme içinde arama yapılmaktadır. Karşılaştırmada
kullanılan değerler parantez içinde virgüllerle ayrılmaktadır. “In”, operatörü “Not”
operatörü ile kullanıldığında ise sütun değerinin liste içindeki herhangi bir değere
eşit olmama durumu sorgulanmaktadır (Elbahadır, 2012).
Söz Dizimi:
“In” operatörü
liste içinde arama Sütun_Adı [NOT] IN (Parametre_Listesi)
yapmak için
kullanılır.
Örnek

•SELECT * FROM Birey WHERE ID IN (6,9)

Atatürk Üniversitesi Açıköğretim Fakültesi 14


125
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Şekil 6.16 ID Değeri 6 Olanların Ve ID Değeri 9 Olanların Listelenmesi (2 Kayıt)

Şekil [Link] örnekte “Birey” tablosunda Id’si 6 veya 9 olan kayıtlar


listelenmektedir. Aynı sorgu “Or” operatörü marifetiyle aşağıdaki gibi de yazılabilir:
SELECT * FROM Birey WHERE ID =6 OR ID=9
Aşağıdaki örnekte ise “Not” operatörünün “In” operatörüyle kullanımı
gösterilmektedir. “Adi” alanı “Hidayet” ve “Taha” olmayan bireyler
listelenmektedir.

•SELECT * FROM Birey WHERE Adi NOT IN ('Hidayet','Taha')


Örnek

Şekil6.17. Adı “Hidayet” Ve “Taha” Olmayan Kayıtların Listelenmesi (41 Kayıt)

Is Null Operatörü
Bu operatör, herhangi bir alana veri girilip girilmediğinin kontrolünü
sağlamak maksadıyla kullanılmaktadır. Veri girilmemiş olan alanın değeri bildiğiniz
gibi “Null”dur. Kısacası “is null” operatörüyle “Null” olan değer veya hücre tespit
edilebilmektedir. “Null” olmayan hücrenin tespit edilebilmesi için de “Is Not Null”
“Null” değerler
kullanılmaktadır.
için karşılaştırma
operatörü Söz Dizimi:
kullanılamaz. Yani
“adi=null”
denemez.

Atatürk Üniversitesi Açıköğretim Fakültesi 15


126
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Sütun_Adı IS [NOT] NULL

Örnek
•SELECT * FROM Birey WHERE Cinsiyeti IS NULL

Şekil 6.18. Cinsiyet Bilgisi Girilmeyen Bireyler (2 Kayıt)

Isnull() Fonksiyonu
Isnull fonksiyonu, herhangi bir değerin null olması durumunda, sorgu
sonucundan başka bir değer döndürmek için kullanılır. Bu fonksiyon, iki parametre
almaktadır. Birinci parametre “null” olma durumu kontrol edilecek değeri, ikinci
parametre ise “null” olma durumunda geri döndürülecek değeri temsil
etmektedir.
Söz Dizimi:
ISNULL( Sütun_Adı, Alternatif_Değer )
Örnek

•SELECT * FROM Birey WHERE ISNULL(Cinsiyeti,'Kız')='Erkek'

Şekil 6.19. Erkek Bireylerin Listelenmesi (29 Kayıt)

Atatürk Üniversitesi Açıköğretim Fakültesi 16


127
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Bu örnekte “Birey” tablosunda “Cinsiyeti” alanı “null” olan kayıtlar için


değer, “Kız” olarak kabul ediliyor.

Coalesce() Fonksiyonu
Bu fonksiyon, “Isnull” fonksiyonuna benzemektedir. Farkı, bu fonksiyonun
ikiden fazla parametre alabilmesidir. Fonksiyonun aldığı parametreler içinden,
soldan sağa doğru “null” olmayan ilk parametre geriye döndürülmektedir. Bütün
parametreler “null” değeri içeriyorsa da geriye “null” döndürülmektedir.
Söz Dizimi:
COALESCE( Sütun_Adı, Alternatif_Değer1, Alternatif_Değer2 … )

“Coalesce”
fonksiyonu, “Isnull”
fonksiyonunun
Örnek

geliştirilmişidir. •SELECT * FROM Birey WHERE COALESCE(Cinsiyeti,'Kız')='Erkek'

Şekil 6.20. Erkek Bireylerin Listelenmesi (29 Kayıt)

SIRALAMA İŞLEMLERİ
Veri tabanı tablolarından kayıtlar listelenirken tabloda kayıtlı olduğu sıraya
göre görüntülendiğini belirtmiştik. Kayıtların bir veya birden fazla alana göre sıralı
olarak listelenmesi için de “ORDER BY” deyimi kullanılabilmektedir. Kayıtların ilgili
alana göre A’dan Z’ye veya küçükten büyüğe doğru sıralanmasında “ASC”
(Ascending) deyimi kullanılırken, Z’den A’ya veya büyükten küçüğe sıralamada ise
“DESC” (Descending) deyimi kullanılır. Sıralama tipi belirtilmediğinde ise varsayılan
olarak “ASC” kabul edilmektedir.
Söz Dizimi:
Select ifadesinin
yazımında en SELECT Select_Listesi FROM Tablo_Listesi WHERE Koşullar
sonra sıralama
ORDER BY sütun1 [DESC|ASC] [,sütun2 [DESC|ASC], … ]
işlemi
gelmektedir.

Atatürk Üniversitesi Açıköğretim Fakültesi 17


128
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Örnek olması için “Birey” tablosundaki kayıtları “TcNo” alanına göre


sıralayarak listeleyen sorguyu yazalım. Sıralama tipi belirtilmediği için sıralamanın
küçükten büyüğe doğru yapıldığını görebilirsiniz (Şekil 6.21).

•SELECT * FROM Birey ORER BY TcNo


Örnek
Sıralama türü
belirtilmezse “ASC”
kabul eder ve
küçükten büyüğe
sıralar.

Şekil 6.21. Bireylerin TC Kimlik Numaralarına Göre Artan Şekilde Sıralanması (43kayıt)

Şimdi de “Birey” tablosundaki kayıtları “TcNo” alanına göre azalan şekilde


sıralayalım.

•SELECT * FROM Birey ORDER BY TcNo DESC


Örnek

“DESC” azalan
sıralama, “ASC”
artan sıralama için
kullanılır.

Şekil 6.22. Bireylerin TC Kimlik Numaralarına Göre Azalan Şekilde Sıralanması (43kayıt)

Atatürk Üniversitesi Açıköğretim Fakültesi 18


129
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Bu defa da birden fazla alana göre sıralamaya örnek verelim. Bireyleri önce
adlarına göre artan sonra soyadlarına göre azalan şekilde sıralayalım. “Order by”
operatörü ile kayıtlar birden fazla sütuna göre sıralanırken sütun adlarının yazılış
sırasına göre sıralanmaktadır. Yani örnekte (Şekil 6.23) “Soyadi, adı” şeklindeki
kullanımda, öncelikle “Soyadi” alanına göre sıralamakta daha sonra soyadı aynı
olanlar içinde “Adi” alanına göre kayıtları sıralayarak listelemektedir. Dikkat edin bu
kod sadece listelemektedir; kayıtların tablodaki sırasını değiştirmemektedir.

Örnek
•SELECT * FROM Birey ORDER BY Adi, Soyadi DESC

“Order by” ve “Top”


operatörleri birlikte
kullanıldığında en
yüksek veya en
düşük değerlere
sahip kayıtlar
listelenebilir.

Şekil 6.23. Bireylerin Adlarına Göre Artan, Soyadlarına Göre Azalan Şekilde Sıralanması

Top Operatörü:
“Order by” operatörü, “Top” operatörü ile birlikte kullanıldığında, sorgu
sonucu dönen ilk N adet kaydın listelenmesi sağlanmaktadır.
Söz Dizimi:
SELECT TOP(n) [PERCENT] select_listesi
FROM tablo_listesi
WHERE koşullar

ORDER BY sütun1 [DESC|ASC] [,sütun2 [DESC|ASC], … ]

•SELECT TOP 10 PERCENT ID, Adi, Soyadi FROM Birey ORDER BY ID


Örnek

Atatürk Üniversitesi Açıköğretim Fakültesi 19


130
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

Örnek
•SELECT TOP 1 * FROM Birey ORDER BY id DESC

Şekil 6.24. ID Değeri En Büyük Olan Kaydın Gösterilmesi(1kayıt)

“Percent” (yüzde) deyiminin de bu iki deyime eklenmesiyle kayıtların yüzde


kaçının listeleneceği belirtilebilmektedir.

Kayıtların %10’unu
getirmek için “Top
10 Percent” Şekil 6.25. ID Değeri En Küçük Olanların %10’unun Listelenmesi (5 Kayıt)
ifadesi
kullanılabilir. Yukarıdaki örnekte “Birey” tablosundaki kayıtlar “ID” alanına göre
sıralanarak kayıtların %10’u listelenmektedir.

• Bir tablodaki kayıtların sıralanmasında, tarihsel veri içeren


kolona göre sıralamanın, tam sayı türünde kolona göre
Bireysel Etkinlik

sıralamaya göre performans farkını test ediniz.


• Select deyiminin kullanımında bütün alanların getirilmesi ile
yalnızca bir alanın getirilmesinin performansa etkisini test
ediniz.
• Koşul tanımlarken "in" operatörü ile "=" operatörünün
performans farkını test ediniz.
• "=" operatörünün "Like" operatöründen hızlı çalıştığını test
ediniz.

Atatürk Üniversitesi Açıköğretim Fakültesi 20


131
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

• Herhangi bir tabloya SQL sorguları kullanılarak sütun eklemek için, “Alter
Table” (tabloyu değiştir) deyimi ile birlikte “Add”(ekle) deyimi
kullanılmaktadır. Tabloya birden fazla sütun birlikte eklenirken sütun
tanımları virgüller ile ayrılmış olarak kullanılır. “Null” olup olmayacağı
belirtilmeyen bir sütun ise varsayılan olarak “null” değer içerebilir olarak
yorumlanmaktadır.
Özet
• Tablodaki bir sütunu güncellemek için "Alter Table" deyimi ile birlikte "Alter
Column" deyimi kullanılmaktadır.
• "Select" deyimi, veri tabanında bulunan veri kaynaklarından verileri
sorgulayarak seçmek için ve listelemek için kullanılmaktadır. Select deyimi ile
tablodaki veriler üzerinde herhangi bir değişiklik yapılmamaktadır.
• "Select ... from..." cümleciğinde "Select" deyiminden sonra listelenmesi
istenen sütun adları ve "From" deyiminden sonra ise tablo isimleri
gelmektedir. Birden fazla sütun ve tablo adı birlikte kullanıldığında ise
aralarına virgül konulmaktadır.
• Tablodaki bütün sütun adları listelenmek istendiğinde sütün adlarını tek tek
yazmak yerine "*" karakteri kullanılmaktadır. Bu kullanım ile tablo isimlerinin
yazılış sırasına ve sütun adlarının tablolardaki yer alış sırasına göre
listelendiğini belirtmek gerekir.
• Select ifadesinden sonra yazılan sütun adları hangi sırada yazıldıysa o sırada
ve sadece adı yazılı olan sütunlar listelenmektedir.
• SQL sorgu sonuçlarının sınırlandırılarak ilgili bazı kayıtların listelenmesi için
özel bir koşul belirtilebilmektedir. Böylece sadece koşula uyan kayıtlar
listelenecektir. Bu bağlamda, satırları filtreleyen koşulları belirtmek için
“WHERE” operatöründen faydalanılmaktadır.
• İlgili kayıtların filtrelenebilmesi için kullanılan karşılaştırma operatörleri: eşit,
eşit değil, büyük, büyük değil, küçük, küçük değil, büyük eşit, küçük eşit ve
like operatörüdür. Birden fazla şartın birleştirilebilmesi için “And” ve “Or”
mantıksal operatörlerinden faydalanılmaktadır. “AND” operatörü ile her iki
şartın da sağlandığı kayıtlar listelenirken her iki şarttan birinin sağlanmasının
yeterli olduğu durumlarda “veya” anlamına gelen “OR” operatörü
kullanılmaktadır."Like" operatörü, karakter türdeki değerler için
özelleştirilmiş, karşılaştırma operatörüdür.
• "Like" operatörü ile karşılaştırma yaparken "_" ve "%" joker karakterleri
kullanılabilmektedir.
• "Between .. and.." karşılaştırma operatörü iki değer aralığını tanımlamak
için kullanılır.
• "In" operatörü bir liste içindeki değerler ile topluca karşılaştırma yapmak
için kullanılır.
• Sütun içeriğinin "Null" olup olmadığının kontrolü için “Is null” ve "Is not
null" operatörleri kullanılmaktadır.
• "Isnull" ve "Coalesce" fonksiyonları bir sütun değerinin "null" olması
durumunda yerine geçecek değeri tanımlamak için kullanılmaktadır.
• Sorgu sonucunda kayıtları sıralamak için "Order by" operatörü
kullanılmaktadır.

Atatürk Üniversitesi Açıköğretim Fakültesi 21


132
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

DEĞERLENDİRME SORULARI
1. Aşağıdakilerden hangisi “Birey” tablosuna, tarihsel veri içeren ve “null”
değer içermeyen “DogumTarihi” alanını eklemektedir?
a) ALTER TABLE Birey ADD DogumTarihi DATETIME NOT NULL
b) ALTER TABLE Birey ALTER COLUMN DogumTarihi NOT NULL
c) ALTER TABLE Birey ADD DogumTarihi NULL
d) ALTER TABLE Birey ALTER COLUMN DogumTarihi DATETIME NULL
e) ALTER TABLE Birey ADD DogumTarihi DATETIME NULL

2. Aşağıdakilerden hangisi “Kitap” tablosundaki “YazarAdi” alanının


uzunluğunu 50 karakter olarak güncellemektedir?
a) ALTER TABLE Birey ALTER COLUMN TcNo VARCHAR(11)
b) ALTER TABLE Kitap ALTER COLUMN YazarAdi VARCHAR(50)
c) SELECT TOP 50 YazarAdi FROM Kitap
d) ALTER TABLE Kitap ADD YazarAdi INT(50)
e) ALTER TABLE YazarAdi ALTER COLUMN Kitap VARCHAR(11)

3. Aşağıdakilerden hangisi adının ikinci harfi “.” olan bireyleri listeler?


a) SELECT * FROM Birey WHERE Adi LIKE ‘_.%’
b) SELECT * FROM Birey WHERE Adi = ‘.2’
c) SELECT * FROM Birey WHERE Adi LIKE ‘%.%’
d) SELECT * FROM Birey WHERE LIKE Adi ‘.%’
e) SELECT * FROM Birey WHERE Adi LIKE ‘%_.%’

4. Aşağıdakilerden hangisi adı içinde boşluk karakteri olan bireyleri listeler?


a) SELECT * FROM Birey WHERE Adi LIKE ‘ ’
b) SELECT * FROM Birey WHERE Adi = ‘% %’
c) SELECT * FROM Birey WHERE Adi LIKE ‘% %’
d) SELECT * FROM Birey WHERE LIKE Adi ‘ ’
e) SELECT * FROM Birey WHERE Adi LIKE ‘_ _’

5. Aşağıdakilerden hangisi “SicilNo” bilgisi girilmemiş olan “Personel”


kayıtlarını listeler?
a) SELECT * FROM Personel WHERE SicilNo = ‘NULL’
b) SELECT * FROM Personel WHERE ISNULL(SicilNo)
c) SELECT * FROM Personel WHERE SicilNo LIKE NULL
d) SELECT * FROM Personel WHERE SicilNo IS NULL
e) SELECT * FROM Personel WHERE COALESCE (SicilNo, ‘’)

133
Atatürk Üniversitesi Açıköğretim Fakültesi 22
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

6. Aşağıdaki sorgulardan hangisi “Birey” tablosundaki kayıtları önce “Adi”


sonra “Soyadi” alanına göre “a” dan “z” ye doğru sıralamamaktadır?
a) SELECT * FROM Birey ORDER BY Adi, Soyadi
b) SELECT * FROM Birey ORDER BY Adi ASC, Soyadi
c) SELECT * FROM Birey ORDER BY Adi, Soyadi ASC
d) SELECT * FROM Birey ORDER BY Adi ASC, Soyadi ASC
e) SELECT * FROM Birey ORDER BY Adi DESC, Soyadi DESC

7. Aşağıdaki sorgulardan hangisi maaşı en yüksek olan 3 personeli listeler?


a) SELECT * FROM Personel WHERE Maas = MAX(3)
b) SELECT * FROM Personel GROUP BY MaaS, 3
c) SELECT TOP 3 * FROM Personel ORDER BY Maas DESC
d) SELECT TOP 3 PERCENT * FROM Personel ORDER BY Maas
e) SELECT TOP 3 * FROM Personel ORDER BY Maas

8. Aşağıdaki sorgulardan hangisi “Birey” tablosundaki kayıtları listelerken


sadece “Adi” ve “Soyadi” alanlarını görüntülemektedir?
a) SELECT * FROM Birey WHERE Adi=Soyadi
b) SELECT Adi, Soyadi FROM Personel
c) SELECT * FROM Birey ORDER BY Adi, Soyadi
d) SELECT Adi, Soyadi, * FROM Birey
e) SELECT Adi, Soyadi FROM Birey

9. Aşağıdaki sorgulardan hangisi sayfa sayısı 400 ile 500 arasında olan
kitapları yazar adlarına göre “z” den “a” ya doğru sıralamaktadır?
a) SELECT * FROM Kitap ORDER BY YazarAdi DESC
b) SELECT * FROM Kitap WHERE SayfaSayisi > 400 ORDER BY YazarAdi
c) SELECT * FROM Kitap WHERE SayfaSayisi BETWEEN 400 AND 500
d) SELECT * FROM Kitap WHERE SayfaSayisi BETWEEN 400 AND 500
ORDER BY YazarAdi DESC
e) SELECT * FROM Kitap WHERE SayfaSayisi >400 AND SayfaSayisi<500

10. Aşağıdaki sorgulardan hangisi yanlış yazılmıştır?


a) SELECT * FROM Birey ORDER BY Adi
b) SELECT * FROM Birey ORDER BY Adi ASC, Soyadi DESC
c) SELECT * FROM Birey ORDER BY Adi WHERE Adi=’Ali’
d) SELECT * FROM Birey WHERE Adi= ‘Ali’ ORDER BY Adi
e) SELECT * FROM Birey WHERE Adi LIKE ‘[az]%’

Cevap Anahtarı
1.a, 2.b, 3.a, 4.c, 5.d, 6.e, 7.c, 8.e, 9.d, 10.c

134
Atatürk Üniversitesi Açıköğretim Fakültesi 23
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1

YARARLANILAN KAYNAKLAR
Adar, İ., 2012. SQL Server 2012 Programlama ve Yönetim. İstanbul, 720
Gözüdeli, Y., 2010. Yazılımcılar için SQL SERVER 2008 R2 ve
Veritabanı
Elbahadır, H., 2012. T-SQL SQL SERVER 2012. İstanbul, 294
Programlama. Ankara, 671

135
Atatürk Üniversitesi Açıköğretim Fakültesi 24

You might also like