Ana içeriğe atla

Transact-Sql SELECT ifadesi ve kalıpları -1

Transact SQL dilinde veritabanından bilgi alan temel ifademiz SELECT ifadesidir.Bir verirabanından (veya birden fazla veritabanından) bir veya daha fazla tabloladan bilgi sorgulamak için kullandığımız ifadeler ve kalıpları bu yazımda olabildiğince detaylı anlatmaya çalışacağım.Yazı içerisinde veri tipleri özellikleri, veriler vede sonuç kümelerinin çıktılarınıda vererek daha anlaşılır olmasını sağlayacağım.Bu işe önce bir önceki yazımdaki hazırladığım Ms Sql veritabanına bir table oluşturup yeni veriler girip, bu bilgileri sorgulayabileceğimiz duruma getirmekle başlayabiliriz.


Hatırlatma : Ms Sql yazılarımın tümüne Database notları linki ve Ms Sql seçeneği ile erişebilirsiniz ayrıca MsSql etiketine tıklamakta sizi doğrudan tüm Ms Sql yazılarıma götürecektir.Bu yazıda daha önceki blog konusu olan Sql Managment Studio Express programı ile Görsel Veritabanı ve Tablo oluşturma bilgilerinden sonra ilk verileri sorgulamak olacaktır.


Bir önceki örnekte oluşturduğumuz Ms Sql Veritabanına yeni bir Table oluşturdum.Senrayoma göre bu table Müşterilere yapılan satışların işlendiği bir tablodur.Ve veri tipleri ve içerik olarakta yandaki gibidir.Veri türlerinden DepartId bir sonraki örneklerde görebileceğiniz 2 tablo ile çalışmak için hazırlanmış int(ınteger) veri tipinde departman numaralarını barındırır.Bu ilişkisel yapıyı daha sonraki yazımda bulabilirsiniz.


Şimdi bu table içine yeni veriler girmek için yine Sql Managment Studio Express kullanacağız.Elbette bu başka arayüzlerlede (kullanıcı arabirimleri) ile yapılabilir fakat biz Transact Sql DBMS yönünden inceliyoruz bu safhaları anladıktan sonra diğer yapılarda Sql ifadeleri ve kalıplar yazmak gayet kolay bir işdir.Table içerisine aşağıdaki bilgileri girerek sorgulayabileceğim verileri hazırladım.


Her şehirden ve Müşteri adı ve soyadı ile Müşteri nakitlerini ve Satış tarihini barındıran bu Table her satış için benzersiz bir SatisId ile sıralanıyor.DepartId verisi karşılığı bir stok gurubu yada belirli bir departmandan yapılan satışları temsil ediyor.Ve şimdilik bu değer sadece rakamsal bir fikir vermek için bu table içinde işleniyor.




Sanırım artık hazırız ve veriler arasında sorgular ile gezinmenin zamanı geldi.Sql ifadeleri ile yapılan her sorgu bir rapor niteliğinde olduğunu düşünürsek İş Zekası veya Veri Madenciliği denilen iş dünyası kavramına dahada yaklaşırız, bu yakşalım gerçek yönetici istekleri ile Sql arasında bir bağlantı kurmamızı kolaylaştıracak  ve bir anlamda gerçeği Sql ifadeleri ile yakalamaya çalışağız.Sql Managment Studio Express içinde sorguları almak için sözkonusu Table seçerek New Query ile ifade ve kalıpları yazmaya hemen başlayabiliriz.
Örnek Table adı : Cari_Satislar

1- SELECT  İfadesi FROM kalıbı ile kullanılır ve genel basit biçimi şu şekildedir.
 SELECTFROM Cari_Satislar : Table daki tüm kayıtların sonuç kümesini verir

SELECT SatisId,SatisTarihi,DeptId,MusteriAdi,MusteriSoyadi,MusteriSehir,MusteriNakit
FROM CariSatislar : Yukarıdaki iki dizimde doğru ve geçerlidir.Fakat bazı durumlarda yetersiz kalabilen sonuç kümeleridir.SELECT kalıbına verilecek daha fazla örnek olsada kısmen çoğu aynı işlevdedir.

2- WHERE Kalıbı : Çoğu zaman verileri sorgularken belirli kısıtlamalar ve koşullar tanımlamaya ihtiyaç duyarız WHERE kalıbı bu ihtiyacımızı karşılar.
Bir kaç örnek

a-)
SELECT * FROM Cari_Satislar
WHERE MusteriSehir = 'Eskisehir'
Eskişehirde yapılan satışların listelenmesini sağlar

b-)
SELECT * FROM Cari_Satislar
WHERE SatisId <= 5
SatisId 5 değerinden küçük olanları listeler.WHERE kalıbı içerisinde karşılaştırma opratörleri kullanımı yapılabilmektedir.

WHERE SatisId < Küçüktür
WHERE SatisId > Büyüktür
WHERE SatisId >= Büyük yada eşit
WHERE SatisId <= Küçük yada eşit
WHERE SatisId !< Küçük değil
WHERE SatisId !> Büyük değil

Ayrıca WHERE kalıbı bir veya birden fazla koşullar tanımlamak için Boolean operatörler olan AND - OR - NOT koşullarınıda kullanabilmekteyiz.
SELECT SatisId,DeptartId
FROM Cari_Satişlar
WHERE DepartId = '1'
AND MusteriSehir =' Eskisehir'

NOT: WHERE kalıbı içerisinde Text ve Image türündeki veri tiplerinde kullanılamazlar !


Yukarıdaki koşul örneklerinden çok daha fazla örnek versemde aslında WHERE uygulama ihtiyacı zamanında belirlenir.Bir veri sorgulaması ihtiyacı her zaman iş zekası içinde olmak durumunda olsada ,önceden düşünülmüş olması gerekli değildir.

IN - BETWEEN Opratörleri  :
IN Operatörü bir veya birden fazla deyimi aramalarda kullanmamızı sağlar.ve kullanımı OR operatörüne yakındır.
SELECT * FROM Cari_Satislar
WHERE DepartId  IN = (1, 2, 3)
Bu kalıpta Departman numarası 1- 2 ve 3 olan sutunları listelemektedir. Bu Kalıbı OR ile yazarsak...


SELECT * FROM Cari_Satislar
WHERE DepartId = 1
OR DepartId = 2
OR DepartId = 3
Şeklinde olacaktır.IN Operatörü NOT Oparatörü ilede kullanılabilmektedir.


SELECT * FROM Cari_Satislar
WHERE DepartId  NOT IN = (4, 5)
Bu kalıpta ise Departman numarası 4 ve 5 olan kayıtlar aramaya dahil edilmezler

BETWEEN Oparatörü her bilinen değeri listeleyebildiğimiz IN Operatörünün tersine, nitelenen değerlerin alt ve üst sınırlarını belirleyen bir arama aralığı sağlar.Kalıplar içerisinde en çok kullanağımız başlıca operatör olan BETWEEN operatörü mantıksal olarak AND Boolean operatörü ile bağlanan iki ayrı karşılaştırmaya eşittir.
BETWEEN örnekleri...

SELECT MusteriAdi,MusteriSoyadi,MusteriSehir,MusteriNakit
FROM Cari_Satislar
WHERE MusteriNakit BETWEEN 50 AND 100
Cari Satışlar Tablosunda Müşteri Nakiti 50 ile 100 arasındaki belirlenen kayıtları bulur.



SELECT * FROM Cari_Satislar
WHERE MusteriNakit
NOT BETWEEN 10 AND 50
Cari Satışlar Tablosunda Müşteri Nakiti 10 'dan ve 50'den çok olan kayıtları bulur.

NOT:BETWEEN karalter ve tarih değerlerine sahip veri tiplerine uygulanabilir.
Biraz ince detay...

SELECT * FROM Cari_Satislar

WHERE MusteriNakit < 10 OR MusteriNakit > 50
Cari Satışlar Tablosunda Müşteri Nakiti 10 'dan ve 50'den çok olan kayıtları bulur.Evet bu kalıpta tıpkı NOT BETWEEN ve AND operatörü kullanımına eşit bir MANTIKSAL kalıptır.Bu mantığa göre hiç bir Müşteri nakit tutarı 10 dan az ve 50 den çok olamaz demektir."OR yerine burada AND kullanırsak hiç bir sonuç elde edemeyiz" Bunun nedeni ise sözel ifadenin mantığının olmamasıdır.

Evet Transact-SQL SELECT İfadesi ve Kalıpları -1nci blog yazımı şimdilik burada sonlandırıyorum. Çünkü biliyorum ki bu kadar kod ve dizimlerle dolu bir blog okuyucuyu hayli yoracaktır.Henüz çok azını yazabildiğim kalıpların devamını yine bu blogtan izleyebilirsiniz.


Sql Managment Studio Express ile örneklerde anlattığım Query sonuç kümeleri
WHERE <=5
NOT BETWEEN
BETWEEN AND

SELECT DISTINCT


      Bu Yazının Sponsorları













Yorumlar

Bu blogdaki popüler yayınlar

Firebird SQL Table oluşturma ve SQL komutları

2 nci  Firebird SQL veritabanı blogunda bu kez mevcut Firebird veritabanına ISQL ile bağlanmayı veritabanı nesnelerini oluşturmayı (create table), Kayıt eklemeyi (ınsert) ve kayıtları izlemeyi (show) ile önemli SQL komutlarını anlatmaya çalışacağım...

Asp.Net Access veritabanina resim ve nesne kaydetmek OLE Nesnesi

Ms Access ile ilgili geçmiş yazılarım arasında biraz vakit geçirmişseniz, Ms Access form uygulamaları yada veritabanı olarak kullanmayı sevdiğimi anlamışsınızdır. Birazdan size anlatmaya çalışacağım konu Ms Access veritabanı olarak kullandığımız bir Asp.Net Web projesinde resimleri ve dosyaları paket halinde veritabanının içine gömmek olacak.Neden bilmiyorum bu konuda Türkçe kaynak yok, merak etmeyin bu yazı size iyi gelecek...

Firebird Veritabanı Nedir ? Nasıl Kullanılır

Firebird ücretsiz veritabanı kullanmaya ne dersiniz.Üstelik hiç bir süre ve veri sınırı olmadan kulağa hoş geliyor değilmi.Bu Blogta Borland açık kaynak interbase 6 sürümünden sonra ortaya çıkmış ve gelişimini sürekli sürdürmüş Firebird veritabanına bir göz atıcaz. İnternet üzerinde Firebird ile kaynağa çok sık rastlamazsınız artık bu blogtan Firebird ile ilgili bilgileri takip edebilirsiniz...