|
Sql Komutları ile Veritabanı
Sorgulama
Bu bölümde temel Sql komutları ile veritabanını sorgulayarak veri alma,
sıralama, çift kayıtları elema, sonuçların formatlarını değiştirme
işlemlerinin nasıl yapıldığını inceleyeceğiz.
Select ifadesini kullanmadan önce hangi veritabanı ve tablolar ile işlem
yapacağımızı bilmeliyiz. Verilerle işlem yapmadan önce bazı komutlarla
bu verilerin çekilmesi gerekmektedir. Bu komutlara sql ifadesi diyoruz.
Select ifadesi ile seçmek istediğiniz kolon ve satırları
belirtebilirsiniz.
Select ifadesinin kullanımı :
Select ifadesi veritabanından bilgi çekmek için kullanılır.
Select ifadesi ile istediğiniz kolan ve satırları belirtebilirsiniz.
-
Select ifadesi istenen satırları bir liste şeklinde
verir.
-
WHERE ifadesini kullanarak sorgunuzu filtreleyebilir
ve sadece sizin kriterlerinize uygun satırların sorgu sonucu olarak
gelmesini sağlayabilirsiniz. Bu kriterler lojik ifadeler,
karşılaştırmalar olabilir.
-
FROM ifadesi bu verilerin alınacağı tablo isimlerini
belirtmemizi sağlar.
Kolonların belirlenmesi :
Sorgu sanucunda tablodaki tüm kolonlar değilde sadece işinize yarayacak
kolonların gelmesini isteyebilirsiniz. Bu durumda istediğiniz kolanların
herbirinin adını belirmek zorundasınız.
Select’den sonra kolon isimleri, local değişkenler, hesaplanmış ifadeler
belirtebilirsiniz. Yani veritabanından çekilen kolon üzerinde herhangi
bir işlem yaptırarak listelettirebilirsiniz. Örneğin veritabanımızda
ürün fiyatları olsun. Fakat bizim ürün fiyatları yanında KDV’sinede
ihtiyacımız oldu fakat bu bilgi veritabanında yok. Bu durumda Select
ifadesi ile veriyi çekme aşamasında iken bunuda hesaplanmış ek bir kolon
olarak çekebiliriz. Select ifadesinden sonra sadece kolon isimleri
bulunmak zorunda değil.
Kolon isimlerini virgül (,) ile ayırmak zorundayız. Veriler
listelenirken kolon bilgileri verdiğimiz sırada gelir. Performan
kazanmak için kolon kullanımına alışmalıyız. * kullandığımız takdirde
tablodaki tüm alanlar ihtiyacıomız olsun veya olmasın gelecektir. Bu
durum ise bize performans kaybı sağlayacaktır.
Aşağıdaki örnekte employees tablosunda belirttiğimiz kolonları
çekiyoruz. Bu tablo Northwind veritabanında bulunmaktadır.
ÖRN: SELECT employeeid, lastname, firstname, title
FROM employees

SNÇ:
Where ifadesinin kullanımı :
Where ifadesi ile istediğimiz satırları alabiliriz. Where ifadesinden
sonra belirttiğimiz kriterler sınırsız sayıda olabilir.
Where ifadesinden sonra kriter olarak kullandığımız verinin tipi
char, nchar, varchar, nvarchar, text, datetime ve smalldatetime
ise tek tırnak (‘) kullanmalıyız.
Where ifadesi ile normalde fazla sayıda gelen satır sayısını azaltmış
oluruz. Where ifademiz tutarsız ise tüm satırlar yine gelecektir.
ÖRN : SELECT employeeid, lastname, firstname, title
FROM employees
WHERE employeeid=5

SNÇ :
Sonuç olarak tüm kayıtlarımız arasından sadece employeeid’si 5 olan
veriler geldi.
Veri Filtreleme :
Zaman zaman ihtiyacınız olan verileri filtrelemek isteyebilirsiniz.
Verilerinizi Where ifadesinden sonra kullanacağınız bazı koşullar ile
filtreleyebilirsiniz. Bu koşullar şunlardır;
* Karşılaştırma operatörleri =, >, <, >=, <=, <>
* String karşılaştırmalar LIKE ve NOT LIKE
* Lojik operatörler AND, OR
* Lojik operatörler (Negatif) NOT
* Değer aralıkları BETWEEN ve NOT BETWEEN
* Değer listeleri IN ve NOT IN
* Bilinmeyen değerler IS NULL ve IS NOT NULL
Karşılaştırma operatörlerinin kullanımı :
Karşılaştırma operatörleri ile tablodaki bir veri ile belirlenmiş bir
veri veya hesaplanmış veri karşılaştırılabilir. Fakat karşılaştırmak
istediğiniz alan ve verinin tipleri aynı olmalıdır. Sayısal bir ifadeyi
tarih ifadesi ile karşılaştıramazsınız. Burada kullanılan operatörler;
= Eşittir
> Büyüktür
< Küçüktür
>= Büyük veya eşittir
<= Küçük veya eşittir
<> Eşit değildir
NOT ifadesinin kullanımı tavsiye edilemez. Çünkü kullanıldığı takdirde
tüm tablo değerlendirilir ve veri akışının yavaş olması problemi
yaşanır.
ÖRN: SELECT lastname, city
FROM employees
WHERE country=’USA’

SNÇ :
Country alanı USA olanların listesi alındı. Dikkat edilirse country
alanı string bir ifade olduğu için USA ifadesi tek tırnak içine alındı.
Bu dikkat edilmesi gereken bir noktadır.
ÖRN : SELECT orderid, customerid
FROM orders
WHERE orderdate < ‘8/1/96’
|
|
|
|

|
SNÇ :
String karşılaştırmaların kullanımı :
Satırlarımızdaki verileri LIKE ifadesi ile bazı wildcard’ları kullanarak
filtreleyebiliriz. LIKE ifadesini sadece char, nchar, varchar, nvarchar,
binary, varbinary, smalldatetime ve datetime veri tiplerinde
kullanabiliriz. Bu wilcardlar aşağıdaki gibidir;
% 0 veya daha fazla karakterli string
_ tek bir karakter
[] belirtilenler arasından tek bir karakter
[^] belirtilenler arasında olmayan tek bir karakter
Bu wildcarların LIKE ile kullanım örnekleri aşağıdaki gibidir;
LIKE ‘BR%’ BR ile başlayan tüm isimler
LIKE ‘Br%’ Br ile başlayan tüm isimler. Büyük küçük harf farkı
LIKE ‘%een’ een ile biten tüm isimler
LIKE ‘%en%’ en karakterlerini içeren tüm isimler
LIKE ‘_en’ en ile biten tüm 3 karakterli isimler
LIKE ‘[CK]%’ C veya K ile başlayan tüm isimler
LIKE ‘[S-V]ing’ Tüm 4 karakterli ve ilk karakteri S ile V
arasında olan ve ing ile biten tüm isimler
LIKE ‘M[^c]%’M ile başlayan ve ikinci karakteri c olmayan tüm isimler
ÖRN : SELECT companyname
FROM customers
WHERE companyname LIKE ‘%Restaurant%’
|
|
|
|

|
SNÇ :
Lojik operatörler :
Birden fazla kriterleri bir arada kullanmamıza yardımcı olurlar. AND
operatörü kullandığımız takdirde verdiğimiz tüm koşullara uyan kayıtlar
gelir. OR operatörü kullandığımız takdirde verdiğimiz koşullardan birine
uyanlar gelir. NOT kullandığımızda ise NOT dan sonraki koşulu sağlamayan
kayıtlar gelir. Birden fazla koşul kullandığımız durumlarda parantezi
koşulları gruplamak için kullanabiliriz. Böylece daha okunaklı olur ve
gruplama işlemini yapabiliriz.
SQL Server 2000 ilk önce NOT operatörüne arkasından AND ve OR
operatörlerine bakar. Eğer tüm operatörler aynı grup içerisinde ise
soldan sağa doğru işlenir.
ÖRN : SELECT productid, productname, supplierid, unitprice
FROM products
WHERE (productname LIKE ‘T%’ OR productid=46)
AND (unitprice >16.00)
|
|
|
|

|
SNÇ :
Birden fazla koşulu parantezler ile gruplandırdık.
Değer aralıkları :
BETWEEN ifadesini Where ile beraber kullanarak belli bir değer
aralığındaki kayıtları getirebiliriz. Between ifadesi ile belirlenen
aralık dışında kalan verileri almak için NOT BETWEEN kullanabiliriz.
Between ifadesinde verilen aralığın bir bitiş noktası olmadır. Between
ile verilen aralık (10 and 20) aslında AND ifadesi kullanılmı ve büyük
eşittir, küçük eşittirden oluşan bir koşuldur. Bunu kısaca between
ifadesi ile yapmaktayız. Örneğin (KOD BETWEEN 10 AND 20) aslında
((KOD>=10) AND (KOD<=20)) demektir.
ÖRN : SELECT productname, unitprice
FROM products
WHERE unitprice BETWEEN 10 AND 20

SNÇ :
Aslında aynı ifadeyi aşağıdaki şekildede yazabilirdik.
SELECT productname, unitprice
FROM products
WHERE (unitprice>=10)
AND (UnitPrice<=20)
Değer Listeleri :
Verilen bir liste içerisinde yer alan veya almayan değerleri içeren
kayıtları getirir. Listede yer alanları aramak için IN, yer almayanları
aramak için NOT IN ifadelerini kullanırız. Birden fazla koşulu OR ilede
ayırabiliriz veya IN ile bir liste içerisinde arayabiliriz. İkisinide
SQL aynı şekilde çözümler. Yani KOD IN [1,2] diyebildiğimiz gibi KOD=1
OR KOD=2 de diyebiliriz.
NOT IN ifadesi daha öncede belirtildiği gibi veri akışını
yavaşlatabilir.
ÖRN : SELECT companyname, country
FROM suppliers
WHERE country IN (‘Japan’,’Italy’)

SNÇ :
Bu ifadeyi şu şekilde de yazabilirdik.
SELECT companyname, country
FROM suppliers
WHERE country=’Japan’ OR country=’Italy’
Bilinmeyen değerler :
Veri girişi sırasında tablodaki kolona veri girilmemiş olabilir ve
default veri de atanmamış olabilir. Bu durumda bu kolondaki değer
NULL’dur. Null değer 0 (nümerik) veya boşluk (string) ile aynı şey
değildir. Bir alana değer girilmemiş kayıtları listelemek isin IS NULL
ifadesini kullanabiliriz. Null ifadesini diğer koşullar ile
kullanamayız. Yani >Null diye birşey diyemeyiz. Kolonlar Null değer
içerebilir tanımını tablo yaratırken yapabiliriz.
ÖRN : SELECT companyname, fax
FROM suppliers
WHERE fax IS NULL
 |