Unite 6
Unite 6
ÇEŞİTLERİNİ KULLANMAK-1
6
yapabilecek,
• Tablodaki verilerin sıralanarak
listelenmesi hakkında bilgi sahibi
© Bu ünitenin tüm yayın hakları Atatürk Üniversitesi Açıköğretim Fakültesi’ne aittir. Yazılı izin alınmadan
ünitenin tümünün veya bir kısmının elektronik, mekanik ya da fotokopi yoluyla basımı, yayımı, çoğaltımı ve
dağıtımı yapılamaz.
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1
Sütun Ekle
Tabloyu Güncellemek
SORGU OLUŞTURMAK VE ÇEŞİTLERİNİ
Sütun Güncelle
Select Deyimi
Like
KULLANMAK - 1
Sütunların Sınırlandırılması
In
Between
Satırların Sınırlandırılması
Is null
Sıralama
Isnull()
Coalesce()
GİRİŞ
Önceki ünitede SQL dilinin genel yapısından bahsedilmişti, T-SQL sorguları ile
veri tabanının ve tabloların nasıl oluşturulacağı ve mevcut tabloların nasıl ortadan
kaldırılacağı gösterilmişti.
Bu ünitede ise tablodaki sütun özelliklerinin değiştirilmesi ve tabloya yeni
sütun eklenmesi için gerekli TSQL kodları gösterilecektir. Bu üniteyle birlikte ayrıca
en sık kullanılan SQL deyimi olan “Select” deyiminin yazım kuralları gösterilerek SQL
ile sorgu oluşturmanın eğlenceli dünyasına giriş yapılacaktır.
“Select” deyimi kullanılarak tablolardan satır ve sütunlar halinde verilerin
çekilerek nasıl esnek bir biçimde görüntülenebileceği öğretilecektir. Bu bağlamda
tablodaki bazı sütunların istenen sırada görüntülenebileceği sütunların
sınırlandırılması konu başlığında incelenirken tablodaki belirli koşula veya koşullara
uyan bazı kayıtların filtrelenmesi ise satırların sınırlandırılması konu başlığında
incelenecektir. Satırların sınırlandırılmasında kullanılan koşullar, ilgili sütunlar ve
değerlerin karşılaştırılmasını sağlayan operatörler ile oluşturulurken birden fazla
koşul ise mantıksal operatörler ile birbirine bağlanmaktadır. Dolayısıyla bu ünitede
karşılaştırma operatörleri ve mantıksal operatörler (And, Or ve Not) tanıtıldıktan
sonra kullanımlarına örnekler verilecektir.
SQL’de diğer dillerde pek karşılığı bulunmayan karşılaştırma operatörleri ise
ayrı alt başlıklar ile incelenecektir. Metinsel ifadeler içinde joker karakterler
kullanarak arama yapılmasını sağlayan “like” operatörü, aralık sorgulamada
kullanılan “between” operatörü, liste içinden arama yapmayı sağlayan “in”
Operatörü ve herhangi bir hücreye değer girilip girilmediğini kontrol eden “is null”
operatörü bu kapsamda incelenecektir. Null değerlerle çalışmayı kolaylaştıran Isnull
ve Coalesce fonksiyonları ise kapsamın biraz dışında olmasına rağmen konuyla
irtibatlı olması dolayısıyla üniteye dâhil edildi.
Bu ünitede son olarak verilerin belirli alanlara göre artan veya azalan olarak
sıralanması ve sıralama sonrası en üstte kalan birkaç kaydın görüntülenebilmesi
için sorgu kodlarının nasıl yazılacağı gösterilecektir.
Kısacası veri tabanındaki tablolardan değer okurken aranan değerin
koordinatını tam olarak verebilmek ve verileri sıralı olarak listelemeyi öğrenmek
için bu üniteyi dikkatlice okumanız gerekmektedir. Yeri gelmişken belirtmekte
fayda görüyorum, SQL sorguları yazabilmek için SQL yazım kurallarını bilmek yetmez,
sorgu yazabilme mantığının geliştirilebilmesi için bol uygulama yapılması
gerekmektedir.
TABLOYU GÜNCELLEMEK
Tablo oluşturulduktan sonra tablonun yapısında (şemasında) değişiklik
yapılabilmektedir. Böylelikle tabloya yeni sütunlar eklenebildiği gibi tablodaki
mevcut sütunların isimleri, veri türleri ve kısıtları (constraint)
güncellenebilmektedir. Bu bağlamda tablo yapısının güncellenebilmesi için SQL’de
kullanılan komut “Alter Table” komutudur. Herhangi bir tabloya sütun eklemek için
mesela “Alter Table” (tabloyu değiştir) deyimi ile birlikte “Add” (ekle) deyimi
kullanılmaktadır (Adar, 2012).
Sütun Eklemek
Herhangi bir tabloya sütun eklemek için “Alter Table” (tabloyu değiştir)
deyimi ile birlikte “Add” (ekle) deyimi kullanılmaktadır. “Alter Table” deyiminden
sonra yapısı güncellenecek tablo adı yazılır; “Add” deyiminden sonra ise eklenecek
sütun adı ve veri türü belirtilir (Adar, 2012). Cümlenin sonunda ayrıca zorunlu
olmamakla birlikte ilgili sütunun “Null” geçilebileceği veya geçilemeyeceğini
belirten bir ifade yani bir kısıt (contraint) bulunabilir. Bu ifade “Null” ise sütun
“Null” değer içerebilir demektir. “Not Null” ise ilgili sütunun “Null”
geçilemeyeceğini ve mutlaka değer girilmesi gerekliliğini belirtmektedir. Bu
ifadenin kullanılmadığı durumda ise kısıtlamanın bulunmadığı yani ilgili sütunun
“Null” geçilebileceği anlaşılır.
Söz Dizimi:
ALTER TABLE Tablo_Adı ADD Alan_Adı [Alan_Türü] [NULL|NOT NULL]
Örnek olarak “Birey” tablosuna bir alan ekleyelim:
Veri tabanı
nesnesinin özellikleri
değiştirilirken “Alter”
deyimi kullanılır. •ALTER TABLE Birey ADD DogumYeri VARCHAR(50) NULL
Örnek
Şimdi de bir tabloya bir SQL cümlesi ile birden fazla sütun eklenmesini
görelim. Örnek olması için “Birey” tablosuna “Varchar” türünde ve 50 karakter
uzunluğunda “DoğumYeri” alanı ve “Date” türünde doğum tarihi sütunlarını
ekleyelim.
Örnek
•DogumTarihi DATE )
Sütun Güncellemek
Veri tabanı tablosu oluşturulduktan sonra tablodaki sütunların veri tiplerinin
ve/veya kısıtların daha sonra güncellenmesi gerekebilmektedir. Tablodaki
herhangi bir sütunun veri tipi ve constraint özellikleri değiştirilirken “Alter Column”
deyimi kullanılmaktadır. Alter Column deyiminden sonra özelliği değiştirilecek olan
sütun adı belirtilir ve sonrasında yeni veri türü ve “Null” olup olmama durumu
belirtilir.
Söz Dizimi:
ALTER TABLE Tablo_Adı ALTER COLUMN Alan_Adı [Alan_Türü] [NULL|NOT
NULL]
Örnek olarak “Birey” tablosundaki “TcNo” alanının veri tipini varchar (11)
olarak değiştirelim ve “Null” değer içermeyeceğini belirtelim.
Tablonun sütunları
değiştirilirken “Alter •ALTER TABLE Birey ALTER COLUMN TcNo VARCHAR(11) NOT
Örnek
SÜTUNLARIN SINIRLANDIRILMASI
Tablodaki kayıtlar listelenirken sadece belirli sütun adlarının
görüntülenebilmesi için “Select” ifadesinden sonra ilgili sütun adlarının yazılması
gerektiğini söylemiştik. Örnek olarak “Birey” tablosunda yer alan bireylerin
adlarını listeleyelim. Bunun için “Select” deyiminden sonra ve “From” deyiminden
önce sadece “Adi” yazılmalıdır.
Sütun adları
yazıldığı sırada Şekil 6.5. Birey Adlarının Listelenmesi
listelenmektedir.
Şimdi de “Birey” tablosundaki kayıtları listelerken TC kimlik numarası, adı,
soyadı, baba adı ve anne adı alanları ile sorguyu sınırlayalım. “Select” deyiminden
sonra ilgili sütun adlarının aralarına virgül konarak kullanılmaktadır.
Örnek
SATIRLARIN SINIRLANDIRILMASI
SQL sorgu sonuçlarının sınırlandırılarak ilgili bazı kayıtların listelenmesi için
özel bir koşul belirtilebilmektedir. Böylece sadece koşula uyan kayıtlar
listelenecektir. Bu bağlamda, satırları filtreleyen koşulları belirtmek için “WHERE”
operatöründen faydalanılmaktadır (Gözüdeli, 2010).
Söz Dizimi:
SELECT Select_Listesi FROM Tablo_Listesi WHERE Koşullar
Veriler satır
bazında
filtrelenirken
•SELECT * FROM Birey WHERE Adi ='Ayşe'
Örnek
“Where” deyimi
kullanılır.
Şekil [Link] örnek ile adı “Ayşe” olanlar listelendi. Sütun adı ile değer
arasında “=” (eşittir) operatörünün kullanıldığını gördünüz. Şimdi de soyadı “AKIN”
olmayan bireyleri listeleyelim:
Şekil [Link] eşit olmama durumunu ifade etmek için sütun adı ile değer
arasında “!=” operatörü kullanıldı. Koşul tanımında kullanılan diğer tüm
karşılaştırma operatörleri aşağıdaki tabloda (Tablo 6.1) sunulmuştur. Tabloda eşit
olmama durumu için iki farklı operatör kullanılmaktadır. Uygulamada bunlar
arasında bir fark yoktur. Benzer bir biçimde “>=” (büyük eşit) operatörü, “!<”
(küçük değil) operatörüyle eşdeğer; “<=” (küçük eşit) operatörü ise “!>” (büyük
değil) operatörüyle eşdeğer kullanıma sahiptir.
“Like” operatörü
karakter türündeki
değerler için Şekil 6.9. Soyadı “AKIN” Olmayan Ve Adı Annesinin Adı İle Aynı Olanların Listelenmesi.
kullanılır.
Şekil [Link] örnekte iki şart ifadesi “AND” (ve) operatörüyle birleştirildi.
Sayısal veya tarihsel
veriler için Böylece “birey” tablosundaki kayıtlar içinde soyadı “AKIN” olmayan ve adı
kullanılamaz. annesinin adına eşit olan kayıtlar listlenmektedir. “Birey” tablosunda bu koşullara
uyan bir kayıt bulunmaktadır.
Like Operatörü
Karşılaştırma operatörlerinden biri olan “Like” operatörü, diğer
operatörlerden farklı olarak sadece karakter türdeki değerler içinde arama
yapmak için geliştirilmiştir. Özellikle aranan karakter ifadenin ne olduğu tam olarak
bilinmediği durumlarda “=” ifadesi yerine “Like” operatörü kullanmak
gerekmektedir.
Tablo 6.2. Joker Karakterleri
Joker Karakter Anlamı
% Birden fazla harf ya da rakamın yerini tutar.
_ Bir tek harf veya rakamın yerini tutar.
[Harf] Herhangi bir harf yerine gelebilecek harfleri belirtir.
[^Harf] Herhangi bir harf yerine gelemeyecek harfleri
belirtir.
[A-Z] A ile Z arasındaki harfleri belirtir.
% karakteri birden
fazla karakterin
yerini tutar.
[ ] köşeli
parantezleri
arasındaki
karakter
listesinden Şekil 6.11. İsminin ikinci harfi “e” olmayan bireyler (35 kayıt)
herhangi birinin
gelebileceğini Şekil [Link] örnekte de birinci harfi temsil için “_” (alttire) karakteri
belirtir.
kullanıldı. Alttirenin, yüzde karakterinden ilk farkı, tek karakteri temsil etmesidir.
İkinci farkı ise boşluk yerine kullanılmamasıdır. Yani alttire kullanılan konumda
kesinlikle bir karakterin (harf, sayı vs.) bulunması beklenmektedir.
Şimdi de adının baş harfi “a” veya “b” olan bireyleri listeleyelim. Bunun için
köşeli parantezler arasında “a” ve “b” harflerinin birlikte kullanıldığına dikkat edin.
Örnek
[ ] köşeli parantezleri
arasında gelen iki
karakter arasındaki
karakterlerden
herhangi birinin
gelebileceğini
belirtmek için – tire Şekil 6.12. Adının Baş Harfi “A” Veya “B” Olan Bireyler (7 Kayıt)
kullanılır.
Şimdi de adının üçüncü harfi “k”, “l”, “m” veya “n” olan bireyleri listeleyelim.
Bunun için de köşeli parantezler içerisinde “k-n” kullanıldığına dikkat edin (şekil
6.13). Aralığın ilk harfi ile son harfi arasında “-” (tire) kullanıldı. Adının ilk iki harfini
Atatürk Üniversitesi Açıköğretim Fakültesi 12
123
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1
temsil için iki adet “_” (alt tire ) kullanıldı. Metin içindeki % karakteri ise ismin
3’ten fazla uzunlukta olabilmesi durumunu ifade etmektedir.
Şekil 6.13. Adının Üçüncü Harfi “K”, “L”, “M” Veya “N” Olan Bireyler (13 Kayıt)
Şimdi de çift isimli olan yani adı içinde boşluk karakteri bulunan bireyleri
listeleyelim. Bunun için yüzde karakterleri arasında boşluk karakteri kullanıldı (Şekil
6.14).
Between Operatörü
“Between” operatörü, bir aralık içinde yer alan kayıtları sorgulamak için
kullanılır. Koşulun “true” (doğru) olabilmesi için kıyaslanan değerin, “Between”
operatöründen sonra gelen birinci değerden büyük, ikinci değerden küçük veya bu
değerlere eşit olması gerekmektedir.
Söz Dizimi:
Between
operatöründen Sütun_Adı BETWEEN Alt_Sınır AND Üst_Sınır
sonra önce küçük
değer
kullanılmaktadır.
Örnek
In Operatörü
In operatörü, bir sütunun birden fazla değer ile aynı anda karşılaştırılabilmesi
için kullanılmaktadır. Yani bir küme içinde arama yapılmaktadır. Karşılaştırmada
kullanılan değerler parantez içinde virgüllerle ayrılmaktadır. “In”, operatörü “Not”
operatörü ile kullanıldığında ise sütun değerinin liste içindeki herhangi bir değere
eşit olmama durumu sorgulanmaktadır (Elbahadır, 2012).
Söz Dizimi:
“In” operatörü
liste içinde arama Sütun_Adı [NOT] IN (Parametre_Listesi)
yapmak için
kullanılır.
Örnek
Is Null Operatörü
Bu operatör, herhangi bir alana veri girilip girilmediğinin kontrolünü
sağlamak maksadıyla kullanılmaktadır. Veri girilmemiş olan alanın değeri bildiğiniz
gibi “Null”dur. Kısacası “is null” operatörüyle “Null” olan değer veya hücre tespit
edilebilmektedir. “Null” olmayan hücrenin tespit edilebilmesi için de “Is Not Null”
“Null” değerler
kullanılmaktadır.
için karşılaştırma
operatörü Söz Dizimi:
kullanılamaz. Yani
“adi=null”
denemez.
Örnek
•SELECT * FROM Birey WHERE Cinsiyeti IS NULL
Isnull() Fonksiyonu
Isnull fonksiyonu, herhangi bir değerin null olması durumunda, sorgu
sonucundan başka bir değer döndürmek için kullanılır. Bu fonksiyon, iki parametre
almaktadır. Birinci parametre “null” olma durumu kontrol edilecek değeri, ikinci
parametre ise “null” olma durumunda geri döndürülecek değeri temsil
etmektedir.
Söz Dizimi:
ISNULL( Sütun_Adı, Alternatif_Değer )
Örnek
Coalesce() Fonksiyonu
Bu fonksiyon, “Isnull” fonksiyonuna benzemektedir. Farkı, bu fonksiyonun
ikiden fazla parametre alabilmesidir. Fonksiyonun aldığı parametreler içinden,
soldan sağa doğru “null” olmayan ilk parametre geriye döndürülmektedir. Bütün
parametreler “null” değeri içeriyorsa da geriye “null” döndürülmektedir.
Söz Dizimi:
COALESCE( Sütun_Adı, Alternatif_Değer1, Alternatif_Değer2 … )
“Coalesce”
fonksiyonu, “Isnull”
fonksiyonunun
Örnek
SIRALAMA İŞLEMLERİ
Veri tabanı tablolarından kayıtlar listelenirken tabloda kayıtlı olduğu sıraya
göre görüntülendiğini belirtmiştik. Kayıtların bir veya birden fazla alana göre sıralı
olarak listelenmesi için de “ORDER BY” deyimi kullanılabilmektedir. Kayıtların ilgili
alana göre A’dan Z’ye veya küçükten büyüğe doğru sıralanmasında “ASC”
(Ascending) deyimi kullanılırken, Z’den A’ya veya büyükten küçüğe sıralamada ise
“DESC” (Descending) deyimi kullanılır. Sıralama tipi belirtilmediğinde ise varsayılan
olarak “ASC” kabul edilmektedir.
Söz Dizimi:
Select ifadesinin
yazımında en SELECT Select_Listesi FROM Tablo_Listesi WHERE Koşullar
sonra sıralama
ORDER BY sütun1 [DESC|ASC] [,sütun2 [DESC|ASC], … ]
işlemi
gelmektedir.
Şekil 6.21. Bireylerin TC Kimlik Numaralarına Göre Artan Şekilde Sıralanması (43kayıt)
“DESC” azalan
sıralama, “ASC”
artan sıralama için
kullanılır.
Şekil 6.22. Bireylerin TC Kimlik Numaralarına Göre Azalan Şekilde Sıralanması (43kayıt)
Bu defa da birden fazla alana göre sıralamaya örnek verelim. Bireyleri önce
adlarına göre artan sonra soyadlarına göre azalan şekilde sıralayalım. “Order by”
operatörü ile kayıtlar birden fazla sütuna göre sıralanırken sütun adlarının yazılış
sırasına göre sıralanmaktadır. Yani örnekte (Şekil 6.23) “Soyadi, adı” şeklindeki
kullanımda, öncelikle “Soyadi” alanına göre sıralamakta daha sonra soyadı aynı
olanlar içinde “Adi” alanına göre kayıtları sıralayarak listelemektedir. Dikkat edin bu
kod sadece listelemektedir; kayıtların tablodaki sırasını değiştirmemektedir.
Örnek
•SELECT * FROM Birey ORDER BY Adi, Soyadi DESC
Şekil 6.23. Bireylerin Adlarına Göre Artan, Soyadlarına Göre Azalan Şekilde Sıralanması
Top Operatörü:
“Order by” operatörü, “Top” operatörü ile birlikte kullanıldığında, sorgu
sonucu dönen ilk N adet kaydın listelenmesi sağlanmaktadır.
Söz Dizimi:
SELECT TOP(n) [PERCENT] select_listesi
FROM tablo_listesi
WHERE koşullar
…
ORDER BY sütun1 [DESC|ASC] [,sütun2 [DESC|ASC], … ]
Örnek
•SELECT TOP 1 * FROM Birey ORDER BY id DESC
Kayıtların %10’unu
getirmek için “Top
10 Percent” Şekil 6.25. ID Değeri En Küçük Olanların %10’unun Listelenmesi (5 Kayıt)
ifadesi
kullanılabilir. Yukarıdaki örnekte “Birey” tablosundaki kayıtlar “ID” alanına göre
sıralanarak kayıtların %10’u listelenmektedir.
• Herhangi bir tabloya SQL sorguları kullanılarak sütun eklemek için, “Alter
Table” (tabloyu değiştir) deyimi ile birlikte “Add”(ekle) deyimi
kullanılmaktadır. Tabloya birden fazla sütun birlikte eklenirken sütun
tanımları virgüller ile ayrılmış olarak kullanılır. “Null” olup olmayacağı
belirtilmeyen bir sütun ise varsayılan olarak “null” değer içerebilir olarak
yorumlanmaktadır.
Özet
• Tablodaki bir sütunu güncellemek için "Alter Table" deyimi ile birlikte "Alter
Column" deyimi kullanılmaktadır.
• "Select" deyimi, veri tabanında bulunan veri kaynaklarından verileri
sorgulayarak seçmek için ve listelemek için kullanılmaktadır. Select deyimi ile
tablodaki veriler üzerinde herhangi bir değişiklik yapılmamaktadır.
• "Select ... from..." cümleciğinde "Select" deyiminden sonra listelenmesi
istenen sütun adları ve "From" deyiminden sonra ise tablo isimleri
gelmektedir. Birden fazla sütun ve tablo adı birlikte kullanıldığında ise
aralarına virgül konulmaktadır.
• Tablodaki bütün sütun adları listelenmek istendiğinde sütün adlarını tek tek
yazmak yerine "*" karakteri kullanılmaktadır. Bu kullanım ile tablo isimlerinin
yazılış sırasına ve sütun adlarının tablolardaki yer alış sırasına göre
listelendiğini belirtmek gerekir.
• Select ifadesinden sonra yazılan sütun adları hangi sırada yazıldıysa o sırada
ve sadece adı yazılı olan sütunlar listelenmektedir.
• SQL sorgu sonuçlarının sınırlandırılarak ilgili bazı kayıtların listelenmesi için
özel bir koşul belirtilebilmektedir. Böylece sadece koşula uyan kayıtlar
listelenecektir. Bu bağlamda, satırları filtreleyen koşulları belirtmek için
“WHERE” operatöründen faydalanılmaktadır.
• İlgili kayıtların filtrelenebilmesi için kullanılan karşılaştırma operatörleri: eşit,
eşit değil, büyük, büyük değil, küçük, küçük değil, büyük eşit, küçük eşit ve
like operatörüdür. Birden fazla şartın birleştirilebilmesi için “And” ve “Or”
mantıksal operatörlerinden faydalanılmaktadır. “AND” operatörü ile her iki
şartın da sağlandığı kayıtlar listelenirken her iki şarttan birinin sağlanmasının
yeterli olduğu durumlarda “veya” anlamına gelen “OR” operatörü
kullanılmaktadır."Like" operatörü, karakter türdeki değerler için
özelleştirilmiş, karşılaştırma operatörüdür.
• "Like" operatörü ile karşılaştırma yaparken "_" ve "%" joker karakterleri
kullanılabilmektedir.
• "Between .. and.." karşılaştırma operatörü iki değer aralığını tanımlamak
için kullanılır.
• "In" operatörü bir liste içindeki değerler ile topluca karşılaştırma yapmak
için kullanılır.
• Sütun içeriğinin "Null" olup olmadığının kontrolü için “Is null” ve "Is not
null" operatörleri kullanılmaktadır.
• "Isnull" ve "Coalesce" fonksiyonları bir sütun değerinin "null" olması
durumunda yerine geçecek değeri tanımlamak için kullanılmaktadır.
• Sorgu sonucunda kayıtları sıralamak için "Order by" operatörü
kullanılmaktadır.
DEĞERLENDİRME SORULARI
1. Aşağıdakilerden hangisi “Birey” tablosuna, tarihsel veri içeren ve “null”
değer içermeyen “DogumTarihi” alanını eklemektedir?
a) ALTER TABLE Birey ADD DogumTarihi DATETIME NOT NULL
b) ALTER TABLE Birey ALTER COLUMN DogumTarihi NOT NULL
c) ALTER TABLE Birey ADD DogumTarihi NULL
d) ALTER TABLE Birey ALTER COLUMN DogumTarihi DATETIME NULL
e) ALTER TABLE Birey ADD DogumTarihi DATETIME NULL
133
Atatürk Üniversitesi Açıköğretim Fakültesi 22
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1
9. Aşağıdaki sorgulardan hangisi sayfa sayısı 400 ile 500 arasında olan
kitapları yazar adlarına göre “z” den “a” ya doğru sıralamaktadır?
a) SELECT * FROM Kitap ORDER BY YazarAdi DESC
b) SELECT * FROM Kitap WHERE SayfaSayisi > 400 ORDER BY YazarAdi
c) SELECT * FROM Kitap WHERE SayfaSayisi BETWEEN 400 AND 500
d) SELECT * FROM Kitap WHERE SayfaSayisi BETWEEN 400 AND 500
ORDER BY YazarAdi DESC
e) SELECT * FROM Kitap WHERE SayfaSayisi >400 AND SayfaSayisi<500
Cevap Anahtarı
1.a, 2.b, 3.a, 4.c, 5.d, 6.e, 7.c, 8.e, 9.d, 10.c
134
Atatürk Üniversitesi Açıköğretim Fakültesi 23
Sorgu Oluşturmak ve Çeşitlerini Kullanmak- 1
YARARLANILAN KAYNAKLAR
Adar, İ., 2012. SQL Server 2012 Programlama ve Yönetim. İstanbul, 720
Gözüdeli, Y., 2010. Yazılımcılar için SQL SERVER 2008 R2 ve
Veritabanı
Elbahadır, H., 2012. T-SQL SQL SERVER 2012. İstanbul, 294
Programlama. Ankara, 671
135
Atatürk Üniversitesi Açıköğretim Fakültesi 24