12 Ocak 2017 Perşembe
Veri Akış Testi
Algoritma içerisinde verinin ne şekilde değiştiğini anlamak için yapılan testtir.
Veri ile ilgili anormallikleri ortaya çıkartmak kullanılmaktadır.
Algoritma üzerinde farklı yollar ve farklı dataların seçilmesine dayanır.
Veri testtinin asıl Amacı path, branch ve statment testlerinde eksik kalan kısımları tamamlamaktır.
Veri kod karar önemlidir.
Veri testti veri ile ilgili anormalliklerini tanımlamak için kullanılır.
Veri akış testi paths ve branch testleri arasındaki açıkları kapatmak için yapılmaktadır.
VARIANCE ( ) Fonksiyonu
Varyans, sayısal değerler arasındaki değişkenliği ölçen bir kavramdır. İstatistiksel veri analizlerinde yaygın biçimde kullanılmaktadır. Standart sapmanın karesi olarak bilinmektedir. Bir dizi sayısal değerin varyansını hesaplamak için VARIANCE ( ) fonksiyonu kullanılır.
Örnek-1: Personel maaş bilgilerinin ne ölçüde değişken olduğunu belirlemek istiyoruz;
SELECT VARIANCE (maasi) AS "Varyans"
FROM personel
MS Access'de bu fonksiyon yerine; VARP() fonksiyonu kullanılır.
SQRT ( ) Fonksiyonu
Parametre olarak verilen sayısal veri türündeki değerin karekökünün hesaplanmasını sağlamaktadır.
SELECT maasi, SQRT (maasi) AS "Karekökü"
FROM personel
RAND ( ) Fonksiyonu
Rastgele sayı üretimini sağlayan bir fonksiyondur, 0 ile 1 arasında değerler üretmektedir.
SELECT RAND ( ) AS "Rastgele Sayı"
0 ile 100 arasında rastgele sayı üretilmek istenirse aşağıdaki SQL ifadesi kullanılabilir.
SELECT RAND ( ) * 100 AS "0-100 Arası Sayı"
POWER (X, Y) Fonksiyonu
XY şeklindeki sayıların hesaplanmasında kullanılmaktadır. Yani 33 = 3 x 3 x 3 = 27 gibi 3’ün 3’ üncü dereceden kuvvetini hesaplamaktadır.
SELECT POWER (3, 3) AS "Kuvveti"
SELECT POWER (3, 3) AS "Kuvveti"
CEILING ( ) Fonksiyonu
Parametre olarak verilen sayısal değeri bir üst sayıya yuvarlar. MS Access’ te kullanılmayan bir fonksiyondur.
SELECT CEILING (5.2) AS "Pozitif Yuvarlama"
SELECT CEILING (-7.9) AS "Negatif Yuvarlama"
FLOOR ( ) Fonksiyonu
Parametre olarak verilen sayısal değeri bir alt sayıya yuvarlar. MS Access’te kullanılmayan bir fonksiyondur. CEILING fonksiyonunun tam tersi yuvarlama işlemini gerçekleştirir.
SELECT FLOOR (5.2) AS "Pozitif Yuvarlama"
SELECT FLOOR (-7.9) AS "Negatif Yuvarlama"
ROUND ( ) Fonksiyonu
Normal yuvarlama işlemini gerçekleştirir. 5.6, 5.8 gibi değerler bir üstü olan 6 ya, 5.4, 5.2 gibi değerlerde bir altı olan 5’e yuvarlanmaktadır.
SELECT ROUND (5.2, 0) AS "Yuvarlama"
SELECT ROUND (5.6, 0) AS "Yuvarlama"
Trigonometrik Fonksiyonlar
SIN, COS, TAN, COT: Trigonometrik fonksiyonlardır. Belirtilen sayısal veri türü içeren alanda sinüs, kosinüs, tanjant ve kotanjant trigonometrik değerlerinin hesaplanmasını sağlamaktadır. Örneğin tüm öğrencilerin vize notları üzerinde bunların uygulanışı şöyledir.
SELECT vize, SIN (vize), COS (vize), TAN (vize), COT (vize)
FROM öğrenciler
EXP, LOG: Exp üssel bir fonksiyon olmasını yanı sıra veritabanındaki bir değerin kuvvetinin alınmasını sağlar. e değeri 2.71 dir. Log fonksiyonu ise belirtilen değerin logaritmasının hesaplanmasını sağlar.
SELECT vize, EXP (vize) AS "Üssü", LOG (vize) AS "Logaritması"
FROM öğrenciler
MAX ( ) ve MIN ( ) Fonksiyonları
Tablonun içerdiği değerlerin en büyük ve en küçük olanlarını bulmak için MIN ( ) ve MAX ( ) fonksiyonları kullanılır. Bu fonksiyonlar herhangi bir veri türüne uygulanabilir.
Örnek-1: Personel ücretlerini göz önüne alalım. En az ve en yüksek ücretin ne olduğunu öğrenmek istiyoruz. Amacımıza uygun SELECT deyimi aşağıda belirtildiği biçimde olabilir;
SELECT MIN (maasi) AS "En Az", MAX (maasi) AS "En Fazla"
FROM personel
Tablonun içerdiği değerlerin en büyük ve en küçük olanlarını bulmak için MIN ( ) ve MAX ( ) fonksiyonları kullanılır. Bu fonksiyonlar herhangi bir veri türüne uygulanabilir.
Örnek-1: Personel ücretlerini göz önüne alalım. En az ve en yüksek ücretin ne olduğunu öğrenmek istiyoruz. Amacımıza uygun SELECT deyimi aşağıda belirtildiği biçimde olabilir;
SELECT MIN (maasi) AS "En Az", MAX (maasi) AS "En Fazla"
FROM personel
Örnek-2: İşe en son giren personelin işe giriş tarihini belirlemek için SELECT deyimi şu şekilde düzenlenebilir;
SELECT MAX (giris_tarihi) FROM personel
Örnek-3: Personel isimlerini alfabetik olarak sıraladığımızda birinci sırada hangi ismin elde edileceğini şu şekilde öğrenebiliriz;
SELECT MIN (Adi) FROM personel
Örnek-3: En düşük maaş alan personel kimdir? Bu sorgunun yapılabilmesi için bir alt sorguya daha ihtiyaç vardır. Bu durumda SQL ifadesi aşağıdaki gibi olacaktır.
SELECT adi, soyadi FROM personel
WHERE maasi = (SELECT MIN (maasi)
FROM personel)
Örnek-1: Personel ücretlerini göz önüne alalım. En az ve en yüksek ücretin ne olduğunu öğrenmek istiyoruz. Amacımıza uygun SELECT deyimi aşağıda belirtildiği biçimde olabilir;
SELECT MIN (maasi) AS "En Az", MAX (maasi) AS "En Fazla"
FROM personel
Tablonun içerdiği değerlerin en büyük ve en küçük olanlarını bulmak için MIN ( ) ve MAX ( ) fonksiyonları kullanılır. Bu fonksiyonlar herhangi bir veri türüne uygulanabilir.
Örnek-1: Personel ücretlerini göz önüne alalım. En az ve en yüksek ücretin ne olduğunu öğrenmek istiyoruz. Amacımıza uygun SELECT deyimi aşağıda belirtildiği biçimde olabilir;
SELECT MIN (maasi) AS "En Az", MAX (maasi) AS "En Fazla"
FROM personel
Örnek-2: İşe en son giren personelin işe giriş tarihini belirlemek için SELECT deyimi şu şekilde düzenlenebilir;
SELECT MAX (giris_tarihi) FROM personel
Örnek-3: Personel isimlerini alfabetik olarak sıraladığımızda birinci sırada hangi ismin elde edileceğini şu şekilde öğrenebiliriz;
SELECT MIN (Adi) FROM personel
Örnek-3: En düşük maaş alan personel kimdir? Bu sorgunun yapılabilmesi için bir alt sorguya daha ihtiyaç vardır. Bu durumda SQL ifadesi aşağıdaki gibi olacaktır.
SELECT adi, soyadi FROM personel
WHERE maasi = (SELECT MIN (maasi)
FROM personel)
COUNT ( ) Fonksiyonu
Bir tablodaki kayıtların sayılması amacıyla COUNT ( ) fonksiyonu kullanılır. Bu fonksiyon iki farklı biçimde kullanılabilir;
COUNT (*)
COUNT (sütun)
COUNT (*) fonksiyonu, NULL değerleri de içeren tüm kayıtların sayılmasına neden olur. WHERE ile birlikte kullanılırsa, bu koşula uygun tüm kayıtların sayısının öğrenilmesini sağlar.
İkinci biçim tercih edilirse, yani COUNT (sütun) biçiminde kullanılırsa, söz konusu sütunda NULL değerler içermeyen tüm kayıtların sayılmasına neden olur.
Tablo içerisinde herhangi bir sayma işlemini gerçekleştirmek için kullanılmaktadır. Örneğin toplam personel sayısı, toplam bayan personel sayısı v.b. Sayma işlemlerinde kullanılabilir.
Örnek-1: 30 numaralı bölümde görev yapan kaç tane personel olduğunu bulmak istiyoruz. SELECT deyimi şu şekilde düzenlenir;
SELECT COUNT (*) AS "Personel Sayısı"
FROM personel
WHERE bolumID = 30
ABS ( ) Fonksiyonu
Parametre olarak verilen sayısal veri türündeki değerin mutlak değerinin alınmasını sağlamaktadır. Seçilen nitelikteki bütün değerlerin negatif yada pozitif olduğuna bakmadan pozitif olarak gösterilmesini sağlar.
SELECT ABS (-15) AS "Argüman-1"
ABS (15) AS "Argüman-2"
Tarih-Zaman Fonksiyonları
Tarih – zaman fonksiyonları, bir tabloda tarih ve zaman sorgulaması yapıldığında kullanılmaktadır.
Örneğin bir sipariş tablosunda belli bir tarih aralığında yapılan siparişler listelenmek istenildiğinde kullanılması gereken fonksiyonlardır. Bunun yanında bu fonksiyonlar, siparişlerin verilme tarihi, gönderilme tarihi gibi işlemlerin yapılmasında kullanılmaktadır.
Bir sonraki slaytta SQL’de kullanılan tarih ve zaman fonksiyonları detaylı olarak anlatılacaktır.
Parametre olarak verilen bir alandaki tarih bilgisinin;
DAY: Gün bilgisini,
MONTH: Ay bilgisini,
YEAR: Yıl bilgisini,
HOUR: Saat bilgisini,
MINUTE: Dakika bilgisini,
SECOND: Saniye bilgisini,
MILLISECOND: Milisaniye bilgisini,
WEEK: Yılın kaçını haftası olduğu bilgisini,
WEEKDAY: Haftanın kaçın gün olduğu bilgisini verir.
Tüm tarih – zaman fonksiyonları ile ilgili genel bir örnek aşağıda verilmiştir.
SELECT GETDATE ( ) AS "Şimdi",
DATENAME (YEAR, GETDATE ( )) AS "Yıl",
DATENAME (MONTH, GETDATE ( )) AS "Ay",
DATENAME (DAY, GETDATE ( )) AS "Gün",
DATENAME (WEEK, GETDATE ( )) AS "Hafta",
DATENAME (WEEKDAY, GETDATE ( )) AS "Haftanın Günü",
DATENAME (HOUR, GETDATE ( )) AS "Saat",
DATENAME (MINUTE, GETDATE ( )) AS "Dakika",
DATENAME (SECOND, GETDATE ( )) AS "Saniye",
DATENAME (MILLISECOND, GETDATE ( )) AS "Milisaniye",
DateName fonksiyonu datepart olarak verilen parametrenin adını döndürür. Mesela verilen tarihin ay adını yada gün adını almak için kullanabiliriz. Kullanımı şu şekildedir;
DATENAME ( datepart , date )
TO_CHAR ( ) Fonksiyonu
Bu fonksiyon, tarih veya sayısal bilginin istenildiği gibi biçimlendirilerek karakter dizisine dönüştürülmesini sağlar. İki farklı uygulama alanı bulunmaktadır.
Eğer tarih bilgisini karakter dizisine, yani bir katara dönüştürmek söz konusu ise;
TO_CHAR (tarih, ‘biçimlendirme ifadesi’)
Eğer, bir sayısal değerin karakter katarına dönüştürülmesi isteniyorsa,
TO_CHAR (sayı, ‘biçimlendirme ifadesi’)
tanımı kullanılır.
Tarihle ilgili biçimlendirme ifadesi; bazı biçimlendirme elemanlarından ve kurallardan oluşur. Biçimlendirme ifadesi, tek tırnaklar arasında yazılır ve büyük küçük harf ayrımına karşı duyarlıdır. Tarih ile ilgili biçimlendirme ifadelerinde aşağıdaki tanımlardan yararlanılır;
Zamanla ilgili biçimlendirme ifadeleri ise aşağıdaki elemanlardan oluşabilir;
Örnek-1: Personelin işe giriş tarihlerini MM/YY biçiminde elde etmek için şu şekilde bir sorgu düzenlenebilir;
SELECT adi, TO_CHAR (giris_tar, 'MM/YY')
FROM personel
Örnek-2: Personel maaşlarını, binler hanesinden ayırarak elde etmek istiyoruz. Ayrıca ücret rakamının sol tarafına ($) işaretini yerleştireceğiz. Amacımıza uygun sorgu şu şekilde düzenlenebilir;
SELECT adi, TO_CHAR (maasi, ‘$99.999')
FROM personel
TO_NUMBER ( ) Fonksiyonu
Karakter alan olarak tanımlanmış bir sütunun içerdiği sayısal değerleri, sayısal veri türüne dönüştürmek için TO_NUMBER ( ) fonksiyonu kullanılır. Bu fonksiyon şu şekilde tanımlanır;
TO_NUMBER (katar, ‘biçimlendirme ifadesi’)
Biçimlendirme ifadesi, TO_CHAR () fonksiyonunda olduğu gibidir.
Örnek: İşe giriş tarihlerine göre personel tablosunu sorgulayacağız. Arama ifadesi "Ocak 1, 1980" biçiminde olabilir. Bu ifadeyi SELECT deyiminin yorumlayabileceği bir biçime dönüştürmek gerekiyor. Amacımıza uygun SELECT deyimi şu şekilde olabilir;
SELECT adi, giris_tar FROM personel
WHERE giris_tar = TO_DATE ('Ocak 1, 1980', MONTH DD, YYYY')
SQL YAPISAL SORGULAMA DİLİ
Veritabanları ve tablolar oluşturmayı, oluşturulan tablolara kayıt ekleme, silme, güncelleme ve listeleme işlemlerinin yapılabilmesini sağlayan bir alt sorgulama dilidir.
SQL'in kendine özgü deyimleri ve kuralları vardır. Hemen hemen tüm ilişkisel veri tabanı yönetim sistemlerinin ortak dili olarak kabul edilmiştir.
Verileri sorgulamak için SQL kullanan başlıca veri tabanı yönetim sistemleri şunlardır:
Oracle, Microsoft SQL Server,Sysbase, DB2, MySQL, Microsoft Access. Sqlite, Paradox
Veritabanı, herhangi bir alanda belli bir amaca yönelik olarak düzenlenmiş verilerden oluşan yapı olarak tanımlanabilir. Bir firmanın ürün bilgilerinin, bir kitapevinin kitap stok bilgilerinin vb. saklandığı yapılar örnek olarak verilebilir.
Bir veritabanı tablosu, verilerin daha düzenli olarak saklanması için satırlar ve sütunlardan oluşmaktadır. Bütün kayıtlar satırlarda yer almaktadır. Her alandaki kayıtlar birbirinden farklıdır ve verilerin birbirlerine karışmasını engellemektedir.
Örneğin öğrenci bilgilerinin tutulduğu bir tabloda bir varlığa ait kayıtlar satırlarda yer almaktadır. Sütunlar ise ilgili varlığa ait nitelikleri tutmaktadır. Bu nitelikler Adı, Soyadı vb. niteliklerden oluşmaktadır.
Bir veritabanı tasarlanmadan önce bir tablo içerisinde hangi niteliklerin yani sütunların bulunması gerektiği belirlenmelidir. Bu en önemli unsurların başında gelmektedir.
Daha sonraki adımlarda tablolar arasında bir ilişki bulunabildiğinden bu öğeler doğru ve dikkatli belirlenmelidir. Dolayısı ile bir veritabanının en önemli öğesi tablolar olmaktadır. Tablolar arasında ilişkilerin belirlenmesi varlık ilişki modelinin en önemli adımlarından biridir.
Aşağıdaki şekilde, bir tabloya ait satır, sütun ve kayıtlar görülmektedir.
Sabit uzunlukta karakter dizilerini tutar. char(n) şeklinde kullanılır. n karakter sayısıdır ve 1 ile 8000 arasında değer alır. Belirlediğimiz n değerinden daha kısa uzunlukta olan veriler boşluk ile belirlediğimiz bu n değerine tamamlanır.
Bu «productName» alanına 30 karakterlik bilgi yazılabileceğini göstermektedir.
MS SQL Server’ a ait veri türleri şöyledir.
char (uzunluk): Sayısal olmayan yani alfabetik verileri tanımlamak için kullanılmaktadır. Bir sütunda saklanacak olan verinin boyutu uzunluk parametresi ile belirtilir.
Örnek: ‘products’ tablosunda, «productName» alanı aşağıdaki şekilde tanımlanabilir.
char ile kullanımı aynıdır. char’dan farklı olarak unicode karakterleri de saklayabilir.
ANSI: American National Standards Institute, Unicode: Evrensel Kod.
Bilgisayar temelde aritmetik ve mantıksal işlemler yapabildiğine göre matematiksel bir anlamı olmayan harf ya da karakterler nasıl işleme alınıyor? Bu bahsettiklerimiz ASCII sayesinde mümkündür. Tüm bilgisayar dünyasında standart olarak kabul edilen ve her bir karaktere karşılık gelen sayısal değerlerin belirlendiği ASCII (American Standart Code for Information Interchange) isminde karakter tablosu kullanılır. Tüm bilişim dünyasında ASCII standardının kullanılması, farklı yörelere ve kurumlara ait uygulamalara ortak bir zemin sunar. Bu tablo 1963 yılında ANSI tarafından oluşturulmuştur.
Evrensel Kod tek bir yazılımın ya da bir web sitesinin yeniden tasarlanmasına ihtiyaç duyulmadan her türlü dil ve ülke için uyumlu hale getirilmesini sağlar. Aynı zamanda verinin çeşitli işletim sistemleri içerisinden aktarımını da sorunsuz hale getirmektedir.
Bu «staffName» alanına 20 karakterlik bilgi yazılabileceğini göstermektedir.
nchar (uzunluk): Yine bu veri türü de alfabetik karakterlerin tanımlanması için kullanılmaktadır. Bu veri türü bilgileri ANSI formatta değil de Unicode formatında saklamaktadır. ANSI formatı 256 farklı karakter barındırabilir fakat Unicode formatı 65.536 farklı karakteri barındırabilmektedir.
Örnek: ‘staff’ tablosunda, «staffName» alanı aşağıdaki şekilde tanımlanabilir.
Sabit uzunlukta karakter dizilerini tutar. varchar(n) şeklinde kullanılır. n karakter sayısıdır ve 1 ile 8000 arasında değer alır. Belirlediğimiz n değeri alabileceği maksimum karakter sayısıdır. Karakter sayısı daha kısa veri girersek char gibi boşlukla tamamlanmaz. Kaç karakter veri girilirse boyutu ona göre değişir.
varchar (uzunluk): Yine bu veri türü de alfabetik olan alanlar tanımlamak için kullanılmaktadır. Diğer iki veri türünden farklı olarak değişen tek şey uzunluk bilgisidir. Burada parametre olarak belirtilen uzunluk, aynı zamanda maksimum uzunluk olmaktadır.
Örnek: ‘staff’ tablosunda, «staffName» alanı aşağıdaki şekilde tanımlanabilir.
varchar ile kullanımı aynıdır. Varchar’dan farklı olarak unicode karakterleri de saklayabilir. nvarchar(n) şeklinde kullanılır ve n değeri 1 ile 4000 arasındadır.
nvarchar (uzunluk): ‘varchar’ veri türü için geçerli olan her şey bu veri türü içinde aynen geçerlidir. Farklı olarak veriler ANSI formatta değil de Unicode formatta tutulmaktadır.
Örnek: ‘staff’ tablosunda, «staffName» alanı aşağıdaki şekilde tanımlanabilir.
varchar(max) ile aynı özelliktedir. maksimum 2,147,483,647 karakter veri girilebilir.
text: Çok büyük açıklama verilerini saklamak için kullanılmaktadır. Örneğin bir tabloda Açıklama olarak tanımlanan bir nitelik alanına çok sayıda karakteri içeren bir bilgi girilmek istenildiğinde kullanılabilmektedir. 2 GB ta kadar veri girilebilen bir alandır.
Örnek: ‘products’ tablosunda, «description» alanı aşağıdaki şekilde tanımlanabilir.
nvarchar(max) ile aynı özelliktedir. maksimum 1,073,741,823 karakter veri girilebilir.
ntext: ‘text’ veri türü için bahsetmiş olduğumuz bütün özellikleri barındıran bir veri türüdür. Farklı olarak verileri ANSI formatta değil de Unicode formatta tutmaktadır.
Örnek: ‘products’ tablosunda, «description» alanı aşağıdaki şekilde tanımlanabilir.
Dosyaları (binary data) saklamak için kullanılır. Maksimum 2,147,483,647 bayt (2 GB) büyüklüğünde dosya saklayabilir.
image: Veritabanında resim tutmak için kullanılan bir veri türüdür.
Örnek: ‘staff’ tablosunda kişinin adı, soyadı bilgilerinin yanı sıra resim bilgisi de tutulmak isteniyorsa bu veri türü kullanılabilir.
4 bayt yer kaplar. C#’ta da int tipine karşılık gelir.
int (integer): Tam sayı verilerini saklamak için kullanılmaktadır. Bu alana pozitif ve negatif tamsayılar girilebilir. Bu alana girilebilen negatif ve pozitif tamsayılar
-2.147.483.648 ile 2.147.483.647 arasındaki değerler girilebilir.
Örnek: ‘staff’ tablosunda kişinin aldığı ücret bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.
bigint (big integer): Çok büyük sayısal verileri saklamak için kullanılan bir veri türüdür. Bu alana -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasındaki değerler girilebilir.
8 bayt yer kaplar. C#’ta long tipine karşılık gelir.
Örnek: staff tablosunda kişinin aldığı ücret bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.
smallint (small integer): Küçük tamsayı değerlerini tanımlamak için kullanılan bir veri türüdür. Bu alana -32.768 ile 32.765 arasındaki değerler yazılabilir.
Örnek: ‘staff’ tablosunda kişinin aldığı ücret bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.
tinyint: Bu alan 0 ile 255 arasındaki sayısal değerlerin eklenebilmesi için kullanılan bir veri türüdür.
Örnek: ‘products’ tablosunda ürünlerin adet bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.
decimal: Ondalıklı yani virgüllü sayıların saklanması için tanımlanan bir veri türüdür.
Kapladığı alan kullanılan basamak sayısına göre değişir. Virgülden önce ve sonra toplam basamak sayısı 1-9 arası 5 bayt; 10-19 arası 9 bayt; 20-28 arası 13 bayt; 29-38 arası 17 bayt yer kaplar.
Örnek: ‘products’ tablosunda ürünlerin fiyat bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.
float: Çok büyük kesirli sayıları saklamak için kullanılan bir veri türüdür.
Kullanılmak istenen boyuta göre ortalama değer alır. float(n) şeklinde kullanılır. Mesela virgülden sonra 20 bitlik bir alan kullanılmasını istiyoruz. O zaman float(20) olarak yazılır ve verdiğimiz bu boyuta göre kaydetmek istediğimiz sayı yuvarlanır.
Örnek: ‘staff’ tablosunda çalışanın aylık prim bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.
real: ‘float’ a göre daha küçük ondalıklı sayıları saklamak için kullanılan bir veri türüdür.
Örnek: ‘staff’ tablosunda çalışanın aylık prim bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.
money ve smallmoney: Parasal değerlerin saklanması için kullanılan veri türleridir.
Örnek: ‘staff’ tablosunda çalışanın aylık ücret bilgileri tutulmak isteniyorsa bu veri türü kullanılabilir.
datetime ve smalldatetime: Tarih ve saat bilgilerinin saklanması için kullanılan veri türleridir.
YYYY-MM-DD hh:mm:ss[.mmm] şeklinde tarihi tutar (2011-01-21 12:35:29.123 gibi). 8 bayt yer kaplar.
smalldatetime: YYYY-MM-DD hh:mm:ss şeklinde tarih tutar. 4 bayt yer kaplar. 1900-01-01 00:00:00 ile 2079-06-06 23:59:59 arası tarih değerlerini saklar.
Örnek: ‘staff’ tablosunda çalışanın doğum tarihi bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.
binary: İkili (binary) verilerin saklanması için kullanılan bir veri türüdür.
binary(n) şeklinde, n değeri 1 ile 8000 arasında değer alır.
n bayt kadar yer kaplar.
bit: 0 ve 1 gibi iki değerin yani iki seçenekli verilerin saklanmasını sağlayan veri türüdür.
Örnek: ‘staff’ tablosunda çalışanın sigortalı olup olmadığı bilgisi tutulmak isteniyorsa bu veri türü kullanılabilir.
SQL FONKSİYONLARININ KULLANIMI
Bu bölümde, SQL yapısal programlama dilinde standart olarak bulunan ve veri tabanı yönetiminde bizlere büyük kolaylıklar sağlayan temel SQL fonksiyonlarını ve bu fonksiyonların nasıl kullanılacağını gösterilmketedir.
Fonksiyon kavramı,
SQL'de fonksiyonların yeri,
Tek satır fonksiyonlarının kullanımı:
Karakter fonksiyonları,
Sayısal fonksiyonlar,
Tarih fonksiyonları,
Dönüştürme fonksiyonları,
Diğer SQL fonksiyonları.
İç içe fonksiyon kullanımı.
Fonksiyon Nedir?
Fonksiyonlar veya bir başka deyişle işlevler, SQL'e bazı güçlü özellikler katan olanaklar olarak değerlendirilir.
SQL fonksiyonları, aynen programlama dillerinde olduğu gibi, kullanıcıya bazı özel işlemleri ve hesaplamaları otomatik olarak sağlar.
Bir fonksiyon; çeşitli argümanları girdi olarak alıp bir sonuç üreten hazır bileşenlerdir.
Kullanıcının, fonksiyonun adını ve gerekli argümanları tanımlaması yeterlidir. Bu bilgilere dayalı olarak fonksiyon, bir sonuç döndürür (üretir).
SQL Fonksiyonları
SQL fonksiyonları iki ana grup altında incelenmektedir:
Tek satır fonksiyonları,
Çift satır fonksiyonları.
Tek satır fonksiyonları, tablonun bir satırı için uygulanır ve her satır için bir sonuç üretilir.
Çoklu satır fonksiyonları ise, bir grup satıra uygulanır ve sonuç buna göre elde edilir.
Tek Satır Fonksiyonları
Tek satır fonksiyonları, tablonun her bir satırına uygulanan fonksiyonlardır.
Tek satır fonksiyonlarının birçok türü bulunmaktadır.
Karakter fonksiyonları,
Sayısal fonksiyonlar,
Tarih fonksiyonları,
Dönüştürme fonksiyonları,
Genel fonksiyonlar.
Tek satır fonksiyonları,
Çift satır fonksiyonları.
Tek satır fonksiyonları, tablonun bir satırı için uygulanır ve her satır için bir sonuç üretilir.
Çoklu satır fonksiyonları ise, bir grup satıra uygulanır ve sonuç buna göre elde edilir.
Tek Satır Fonksiyonları
Tek satır fonksiyonları, tablonun her bir satırına uygulanan fonksiyonlardır.
Tek satır fonksiyonlarının birçok türü bulunmaktadır.
Karakter fonksiyonları,
Sayısal fonksiyonlar,
Tarih fonksiyonları,
Dönüştürme fonksiyonları,
Genel fonksiyonlar.
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
Kaydol:
Yorumlar (Atom)
























