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
12 Ocak 2017 Perşembe
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:
Akış Kontrol Test Kriterleri
Durum(Statement) Testti ( p1):
%100 Statment(Covarage)
Bütün kodları en az bir kere çalıştır ve test et.
Koşul testi(Branch) (p2)
Bütün koşulları en az bir kere çalıştır ve test et.
Koşul içi sonuç durumu 2 den fazla ise daha fazla test datası ile test et
p1<=p2<=....<Psonsuz
Statement & Branch coverage testti…
Durum (Statement) ve Koşul (branch coverage) testleri 20 yılı aşkın bir süredir kullanılmaktadır. Pek çok yazılım şirketinde yeni bir yazılım geliştirildiğinde temel olarak bu unit testler kullanılmaktadır.
Yazılımlar yüksek oranda koşullara sahip olduğu için koşul kaplama tekniği daha çoğunluk ile tercih edilmektedir.
“The more we learn about testing, the more we realize that statement and branch coverage are minimum floors below which we dare not fall, rather that ceilings to which we should aspire.”
- B. Beizer.
Hangi Yol
Doğru bir Path Testing yapılması için; öncellikle yazılım içerisinde yeterli sayıda yol seçimi yapılması gerekmektedir.
Soru: Yazılım içerisinde kaç adet test oluşturulmalı.
Cevap: Karmaşık olan az test yerine kolay olan fazla test yapılmalıdır.
P1 and P2 Coverage
Yollar
Bir program aracılığıyla bir yol, bir kavşak bir karar noktası başlar veya biter. Farklı değişkenler ile bu kavşakların ve değerlerin değişmesi mümkündür.
Program çalıştırılırken; bir yol üzerinden birkaç kez geçebilir.
Bir yolun uzunluğu o yolun sahip olduğu bağlantı sayısı ile gösterir.
Tamamlama testtini nasıl gerçekleştireceğiz!
Her bir statments en az bir kere çalıştırılmalıdır.
Her bir dal en az bir kere çalıştırılmalıdır.
Bütün yollar üzerinden en az bir kere geçilmelidir.
Akış Kontrol Test Kriterleri
Path Testing ( ):
%100 bütün yollardan
Bütün olası akışları belirle ve belirlediğin o akışlar üzerinden gitmeye çalış.
Program çalıştırılırken; bir yol üzerinden birkaç kez geçebilir.
Bir yolun uzunluğu o yolun sahip olduğu bağlantı sayısı ile gösterir.
Tamamlama testtini nasıl gerçekleştireceğiz!
Her bir statments en az bir kere çalıştırılmalıdır.
Her bir dal en az bir kere çalıştırılmalıdır.
Bütün yollar üzerinden en az bir kere geçilmelidir.
Akış Kontrol Test Kriterleri
Path Testing ( ):
%100 bütün yollardan
Bütün olası akışları belirle ve belirlediğin o akışlar üzerinden gitmeye çalış.
Bubble Sort Programının Algoritması
1 for (j=1; j<N; j++) {
last = N - j + 1;
2 for (k=1; k<last; k++) {
3 if (list[k] > list[k+1]) {
temp = list[k];
list[k] = list[k+1];
list[k+1] = temp;
4 }
5 }
6 }
7 print(“Done\n”);
Üst Alma Programının Algoritması
1 scanf(“%d %d”,&x, &y);
2 if (y < 0)
pow = -y;
else
pow = y;
3 z = 1.0;
4 while (pow != 0) {
z = z * x;
pow = pow - 1;
5 }
6 if (y < 0)
z = 1.0 / z;
7 printf (“%f”,z);
2 if (y < 0)
pow = -y;
else
pow = y;
3 z = 1.0;
4 while (pow != 0) {
z = z * x;
pow = pow - 1;
5 }
6 if (y < 0)
z = 1.0 / z;
7 printf (“%f”,z);
Kaydol:
Kayıtlar (Atom)