SQL Server Basit Veri Sorgulama

SQL Server ve diğer veri tabanı sistemlerinde veriyi sorgulamak için SELECT ifadesi kullanılmaktadır. SELECT bir SQL standart ifadesi olduğundan bütün SQL sistemlerinde kullanımı temelde aynıdır.

SELECT ifadesinin en temel yazım şekli aşağıdaki gibidir.

SELECT
[Seçilecek kolon listesi]
FROM
[Verinin sorgulanacağı tablo]
WHERE
[Sorguya uygulanacak şartlar (varsa)]

tblUrun tablosundan urunKod, urunAd, listeFiyat kolonlarını herhangi bir şart olmadan sorgulamak için kodu aşağıdaki gibi yazabiliriz.

select
urunKod, urunAd, listeFiyat
from tblUrun

Sorgu sonucunda veri tabanında tabloya kayıtlı bütün kayıtlar gelecektir.

Tabloda tanımlı belli kolonları değil de bütün kolonları sorgulamak için de kolon listesi alanına bütün kolon adları yerine sadece * ifadesini kullanmak da bütün kolonları listeleyecektir.

select
*
from tblUrun

WHERE ile şart belirtilmeden yapılan sorgulamalarda bütün tablo listelenmektedir. Ancak gerçek hayatta veri tabanları sorgularında en basitinden en karmaşığına kadar gelecek veriler filtrelenerek sorgulanır. Aşağıdaki örnekte ürün kodu 3028 olan ürünü sorgulamak için gerekli sorgu yazılmıştır.

select
urunKod, urunAd, listeFiyat
from tblUrun
where urunKod = 3028

Sonuç ekranında da göründüğü üzere ürün kodu 3028 olan sadece bir ürün olduğundan sorgu sonucunda bir satır veri dönüyor.

Sorgu sonucunu filtrelemek için kullanılan parametreler aşağıdaki gibidir.

Karşılaştırma OperatörüAçıklaması
=Eşitlik durumunda sonucu doğru döner.
>Sol tarafına yazılan değerin sağ tarafına yazılan değerden büyük olması durumunda doğru döner.
<Sol tarafına yazılan değerin sağ tarafına yazılan değerden küçük olması durumunda doğru döner.
>=Sol tarafına yazılan değerin sağ tarafına yazılan değerden büyük veya eşit olması durumunda doğru döner.
<=Sol tarafına yazılan değerin sağ tarafına yazılan değerden küçük veya eşit olması durumunda doğru döner.
BETWEEN a AND bFiltreye verilen kolonun a ve b değerleri arasında olması durumunda sonuç doğru döner.
IN (D1, D2, ….. , DN)Filtreye verilen kolonun değeri parantez içerisinde verilen değerlerden herhangi biri ise sonuç doğru döner.
LIKE ‘Patern’Metin ifadeler için kullanılır. Filtreye verilen kolon patern olarak verilen kalıba uyan değerleri getirir. Örneğin ortasında “USB” ifadesi geçen ürünleri getir gibi bir sorgu LIKE deyimi ile yapılabilir.

Yukarıda belirtilen karşılaştırma operatörleri ile tekli şartlar verilebileceği gibi AND ve OR ifadeleri ile de birden fazla şart beraber kullanılabilir.

OperatörAçıklama
ANDVerilen şartlar AND yani “ve” ifadesi ile birbirine bağlandığında sonucun doğru olabilmesi için verilen bütün şartların doğru olması gerekmektedir.
ORVerilen şartlar OR yani “veya” ifadesi ile birbirine bağlandığında sonucun doğru olabilmesi için verilen şartlardan sadece birinin doğru olması yeterlidir.

AND ve OR ifadelerinin beraber kullanılması durumunda AND ifadesi OR ifadesinden önceliklidir. Bu sebeple OR ile bağlanması gereken şartlar parantez ile AND ifadesinden ayrılmalıdır.

Örnek Sorgular

Marka kodu 5 olan ve liste fiyatı 150’den küçük olan ürünlerin adlarını ve barkod numaralarını gösteren sorgu
select urunAd, Barkod
from tblUrun
where markaKod = 5 AND listeFiyat < 150
Marka kodu 5 olan veya 4 numaralı markanın liste fiyatı 100’den büyük ürünlerin adlarını ve barkod numaralarını gösteren sorgu
select urunAd, Barkod
from tblUrun
where markaKod = 5 OR (markaKod = 4 AND listeFiyat > 100)
Marka kodu 5 olan veya 4 numaralı markanın liste fiyatı 100 ile 250 arasında olan ürünlerin adlarını ve barkod numaralarını gösteren sorgu
select urunAd, Barkod
from tblUrun
where markaKod = 5 OR (markaKod = 4 AND listeFiyat BETWEEN 100 AND 250)

Tekrarlanan Verileri Tekile İndirmek (DISTINCT)

Sorgu sonucunda dönen veri setindeki aynı değerleri tekile indirmek için SELECT ifadesinden sonra DISTINCT ifadesi kullanılır. Örneğin aşağıdaki gibi sorguyu yazdığımızda dönen sonuç bütün tablonun satır sayısı kadardır.

SELECT markaKod, dovizKod
FROM tblUrun

Sorgunun sonucunun ekran görüntüsünde dikkat edersek birbirinin aynısı olan kayıtlar var. Bu tekrar eden kayıtları tekile indirmek için sorguyu aşağıdaki gibi değiştiriyoruz.

SELECT DISTINCT markaKod, dovizKod
FROM tblUrun

Sorgunun aşağıda sonuç ekran görüntüsünde göreceğimiz gibi sonuç sayısı birbirinden farklı 105 kayıttan oluşuyor. Üstteki ekranda 2-USD ikilisi birden fazla var iken aşağıdaki ekranda sadece bir tane var.

Türetilmiş / Hesaplanmış Kolonlar

Kullanıcı tablosundan isim ve soy isimlerin listesi alınmak istendiğinde aşağıda sorgu yazıldığında iki kolonlu bir sonuç elde ediliyor.

Ancak isim ve soy isimleri tek kolon halinde alınmak istendiğinde bu kolonları birleştirmek için select ifadesinde aşağıdaki gibi hesaplama yapıyoruz.

Bu şekilde dinamik olarak hesaplanan kolonlarda bir isim olmadığında kolonun başlığında “No column name” yazar. Bu şekilde hesaplanan kolona isim vermek için sorguyu aşağıdaki şekilde yazabiliriz.

AS ifadesi ile kolona isim verilebileceği gibi aşağıdaki şekilde de isimlendirme yapılabilir.

NULL Değer Karşılaştırma

NULL değerler diğer değerlerin aksine karşılaştırma operatörleri ile karşılaştırılamıyorlar. Bunun yerine bir değerin NULL değer olduğunu sorgulamak için IS NULL, null değer olmadığını sorgulamak için de IS NOT NULL operatörü kullanılır.

Aşağıdaki sorguda adres1 alanı NULL değer olan kullanıcıların adları sorgulanıyor.

Aşağıdaki sorguda da adres1 alanı dolu olan kullanıcılar listeleniyor.

Aralık Sorgulama

Veri sorgulanırken bir aralık sorgulama için BETWEEN … AND … operatörü kullanılır. Aşağıdaki kod örneğinde liste fiyatı 300 ile 500 arasında olan ürünler sorgulanıyor.

Kayıtları Sıralama

Veri sorgulama işleminde belli kolon veya kolonlara göre verileri azalan veya artan sırada sıralamak için ORDER BY operatörü kullanılır. Ürünleri liste fiyatına göre sıralamak için aşağıdaki şekilde bir işlem yapılır.

Varsayılan olarak sıralama artan bir şekilde yapılmaktadır. Sıralamayı azalan bir şekilde yapmak için; sıralamayı azalan şekilde yapacağımız kolondan sonra DESC ifadesi yazılır.

Sıralama birden fazla kolona göre yapılacaksa kolonlara “,” ile birbirinden ayrılarak yazılır. Örneğin aşağıdaki örnekte ürünler marka koduna göre azalan ve liste fiyatına göre artan bir sırada yapılmaktadır.

Dönen Kayıt Sayısını Sınırlamak

SELECT ifadesinden dönen kayıtları sınırlandırmak için TOP n ifadesi kullanılır. Bu şekilde kullanıldığında ilk n sayıdaki sonucu getirir.

Yukarıdaki örnekte sorgu sonucunda dönen ilk 10 kayıt alınmaktadır. TOP n PERCENT şeklinde yazılırsa da dönen kayıtların ilk %n kadarlık kısmı ekrana getirilir.

Exit mobile version