12 Ocak 2017 Perşembe
STDDEV ( ) Fonksiyonu
Standart sapma, sayısal verilerin aritmetik ortalamalardan farklarının kareli ortalaması olarak bilinir. Bu kavram istatistiksel veri analizlerinde sıkça kullanılır. Söz konusu hesaplamayı yapan SQL fonksiyonu ise; STDDEV ( ) 'dir.
Örnek-1: Personel maaşlarının standart sapmasını bulmak istiyoruz. Bunun için SELECT deyimi aşağıda gösterildiği biçimde kullanılır;
SELECT STDDEV (maasi) AS "Standart_Sapma"
FROM personel
SUM ( ) Fonksiyonu
Sütunların içerdiği sayısal değerleri toplamak amacıyla SUM ( ) fonksiyonundan yararlanılır.
Örnek-1: Tüm personel maaşlarının toplamını hesaplayan SELECT deyimi aşağıda gösterildiği biçimde oluşturulabilir;
SELECT SUM (maasi) AS "Toplam"
FROM personel
Örnek-2: Sadece erkek personele ödenen aylık toplam maaş ne kadardır?
SELECT SUM (maasi) AS "Toplam Ödenen" FROM personel WHERE cinsiyet = 1
AVG ( ) Fonksiyonu
Herhangi bir sütunun içerdiği sayısal değerlerin aritmetik ortalamasını hesaplamak amacıyla; AVG ( ) fonksiyonu kullanılır. Bu fonksiyonun uygulandığı sütunun veri türü sayısal olmalıdır.
Örnek-1: Personel maaşlarını göz önüne alalım. Maaşların ortalamasını bulmak için şöyle bir yol izlenir;
SELECT AVG (maasi) AS "Ortalama"
FROM personel
Örnek-2: Personel arasında, bolumID’si 5 olanların ortalama maaşı aşağıda gösterildiği biçimde hesaplanabilir;
SELECT AVG (maasi) AS "Ortalama" FROM personel WHERE bolumID = 5
Sayısal Fonksiyonlar
Sayısal fonksiyonlar dört işlemin yanı sıra AVG, SUM, STDDEV, VARIANCE, MAX, MIN, COUNT, ABS, SQR, RAND, POWER, CEILING, FLOOR, ROUND, EXP, LOG ve trigonometrik fonksiyonlar olan SIN, COS, TAN ve COT fonksiyonlarını kapsamaktadır.
Bu fonksiyonları örnekler üzerinde anlatarak devam edeceğiz. Bunun için bir personel tablosu oluşturup ve içerisine yeterli miktarda kayıt girelim.
Karakter Fonksiyonları
Karakter fonksiyonları veri tablolarında, veri türü char, varchar, nvarchar olarak tanımlanan alanlar için kullanılmaktadır.
Harflerden, harf, rakam ve simgelerden oluşan alanlar üzerinde işlem yapılmasını sağlamaktadır.
Örneğin ad, soyad, adres gibi alanlar bu fonksiyonlarla işlem görebilmektedirler.
Karakter fonksiyonları olan;
LEFT: Metnin solundan n tane harf almak için,
RIGHT: Metnin sağından n tane harf almak için,
UPPER: Metni büyük harfe çevirmek için,
LOWER: Metni küçük harfe çevirmek için,
LTRIM: Metnin başındaki beyaz karakterleri atmak için,
RTRIM: Metnin sonundaki beyaz karakterleri atmak için,
REPLACE: Bir ifadeyi başka bir ifade ile değiştirmek için,
LEN: Bir alandaki karakterlerin uzunluklarını bulmak için,
REVERSE: Bir alandaki bilgileri tersen yazmak için, kullanılmaktadır.
Tüm karakter fonksiyonlarının kullanımlarına örnek aşağıda verilmiştir.
SELECT Adi,
LEN (Adi) AS "UZUNLUK",
LEFT (Adi, 3) AS "BAŞTAN",
RIGHT (Adi, 3) AS "SONDAN",
UPPER (Adi) AS "BÜYÜK",
LOWER (Adi) AS "KÜÇÜK",
LTRIM (Adi) AS "BAŞTAN BEYAZ",
REPLACE (Adi, ‘rda’, ‘XXX’) AS "DEĞİŞİKLİK",
REVERSE (Adi) AS "TERSTEN"
FROM personel
Harflerden, harf, rakam ve simgelerden oluşan alanlar üzerinde işlem yapılmasını sağlamaktadır.
Örneğin ad, soyad, adres gibi alanlar bu fonksiyonlarla işlem görebilmektedirler.
Karakter fonksiyonları olan;
LEFT: Metnin solundan n tane harf almak için,
RIGHT: Metnin sağından n tane harf almak için,
UPPER: Metni büyük harfe çevirmek için,
LOWER: Metni küçük harfe çevirmek için,
LTRIM: Metnin başındaki beyaz karakterleri atmak için,
RTRIM: Metnin sonundaki beyaz karakterleri atmak için,
REPLACE: Bir ifadeyi başka bir ifade ile değiştirmek için,
LEN: Bir alandaki karakterlerin uzunluklarını bulmak için,
REVERSE: Bir alandaki bilgileri tersen yazmak için, kullanılmaktadır.
Tüm karakter fonksiyonlarının kullanımlarına örnek aşağıda verilmiştir.
SELECT Adi,
LEN (Adi) AS "UZUNLUK",
LEFT (Adi, 3) AS "BAŞTAN",
RIGHT (Adi, 3) AS "SONDAN",
UPPER (Adi) AS "BÜYÜK",
LOWER (Adi) AS "KÜÇÜK",
LTRIM (Adi) AS "BAŞTAN BEYAZ",
REPLACE (Adi, ‘rda’, ‘XXX’) AS "DEĞİŞİKLİK",
REVERSE (Adi) AS "TERSTEN"
FROM personel
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.
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.
11 Ocak 2017 Çarşamba
9 Ocak 2017 Pazartesi
Yol(Path) Araçları
/* ABS
This program function returns the absolute value of the integer
passed to the function as a parameter.
INPUT: An integer.
OUTPUT: The absolute value if the input integer.
*/
1 int ABS(int x)
2 {
3 if (x < 0)
4 x = -x;
5 return x;
6 }
Koşul ve Durum testlerinde bulunamayan bir hata örneği
Normalde doğru olarak gözüken bir fonksiyon sınır değerinden daha fazla bir sayı ile test edilince taşma hatası oluştu.
Çünkü girilen değer integer olarak alınmakta idi.
Sonuçlar
Akış kontrol testi ile [control-flow testing] yazılımlar içerisindeki hataların önemli bir kısmı bulunabilir.
Koşul ve durum testleri beraber kullanılması başarıyı arttıracaktır. Bu nedenle 2 test yöntemi de bir arada kullanılmalıdır.
Test işlemini yaparken tek bir yol üzerine bağlı kalmayıp olabilecek diğer yollarıda test etmek gerkelidir.
Test araçları ve manual test yöntemleri kullanarak diğer yolarında doğruluğunu test etmek önemlidir.
Test öncesinde belirlenen datalar ile test sonuçlarında elde edilen veriler saklanmalı ve karşılaştırılmalıdır.
Bir testtin doğru çalışması o yapı üzerinde hata olmadığını göstermez!
Branch ve Statement Coverage
Soru: Eğer bir karar [ T (true) yada F (false)] varsa hangi tür test yapılmalıdır?
Cevap: Koşul testi [Branch coverage.]
Soru: Eğer her bir durum en az bir kere değer verilip sonuç alınmak isteniyorsa hangi tür aklımıza gelmeli?
Cevap: Durum testi [statement coverage.]
Bu testlere Nasıl Başlayacağız?
Öncelikli olarak bir yol seç ve her seferinde ufak bir değişiklik yaparak testti geliştir.
Kontrol Akış testinin etkinliği nedir?
Yazılı geliştirimi sırasında ortaya çıkan olarak hataların %65’lik kısmı unit testler ile bulunmaktadır.
Unit testler içerisinde en çok kullanılanı (control-flow testing) akış kontrol testidir.
Araştırmalar göstermiştir ki hataların %50’lik kısmı akış kontrol [control-flow testing] testleri sayesinde bulunmaktadır.
Bu test tekniği; yapısal programlama dillerinde yapısal olmayan dillere göre daha etkilidir.
Akış testinin Limitleri
Ara yüz karışıklıkları ve hataları yakalanamaz!
Initialization hatalarının tamamı yakalanamaz!
Tanımlama ile ilgili hatalar yakalanamaz!
Test Sonuçları
Testten hangi sonuçları istiyoruz?
Test sonuçları oldukça detaylı olmalı !
Testti tasarlarken test sonucunda ortaya çıkacak değerler test dizayn sürecinden önce belirlenmeli!
Test Adımları
Testti çalıştır.
Programın verdiği sonuçları al.
Bunu daha önceden beklenen sonuçlar ile karşılaştır.
Test Süreçleri Sonu ile İlgili Sorular.
Soru: Bizim beklediğimiz sonuçları program bize vermesi durumunda test programının doğru çalıştığını söyleye bilir miyiz?
Cevap:
Soru: Farz edin biz covering test için bir test seti hazırladık ve her bir durum için istenilen sonuçları elde ettik. Bütün koşulları kapsamış olur muyuz?
Cevap:
Kaydol:
Kayıtlar (Atom)