Veritabanı
Veritabanı
Programlama
Programlama
T T e emm m m u u z z 2 2 0 0 0 0 3 3 V V e e r r i i t t a a b b a a n n ı ı P P r r o o g g r r a a m m l l a a m m a aYaşar Gözüdeli
Yaşar Gözüdeli
Eğitim dizisi
Eğitim dizisi
Veritabanı
Veritabanı
Programlama
Programlama
1
1
Temmuz 2003
Temmuz 2003
Yaşar GÖZÜDELİ
Yaşar GÖZÜDELİ
Bu ek kopyalanamaz, satılamaz. Her hakkı sak
Bu ek kopyalanamaz, satılamaz. Her hakkı saklıdırlıdır..
BY
BYTE’ın okurlarına ücretsiz armağanıdırTE’ın okurlarına ücretsiz armağanıdır..
© 2003 BYTE
© 2003 BYTE
BYTE
İÇİNDEKİLER
İÇİNDEKİLER
Önsöz...
Önsöz...
6
6
Bu
Bu
kitapta
kitapta
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
8
8
Veritabanı
Veritabanı
Y
Y
önetim Sistemleri...
önetim Sistemleri...
...
...
8
8
Veritabanı
Veritabanı
Nerelerde
Nerelerde
Kullanılır?...
Kullanılır?...
...
...
9
9
1.İlişkisel
1.İlişkisel
V
V
eritabanı
eritabanı
Kavram
Kavram
ı
ı
...
...
...
...
...
...
...
...
...
...
12
12
Günlük
Günlük
Hayatta iliş
Hayatta iliş
kisel
kisel
Veritabanı...
Veritabanı...
12
12
T
T
emel
emel
Kavramlar1...
Kavramlar1...
...
...
13
13
T
T
ablolar:
ablolar:
...
...
...
...
...
...
13
13
Değişken
Değişken
İsimlendirme
İsimlendirme
Kuralları
Kuralları
...
...
...
...
14
14
İlişkisel
İlişkisel
Veritabanı
Veritabanı
Y
Y
önetim
önetim
Sistemleri:
Sistemleri:
...
...
...
...
14
14
2.SQL V
2.SQL V
eri T
eri T
anımlama Dili
anımlama Dili
(Data Denition
(Data Denition
Language)
Language)
...
...
20
20
T
T
emel Veri Tipleri:...
emel Veri Tipleri:...
...
...
...
...
20
20
Veritabanı:
Veritabanı:
...
...
...
...
...
...
20
20
T
T
ablolar:
ablolar:
...
...
...
...
...
...
21
21
T
T
ablo
ablo
Oluşturma
Oluşturma
...
...
...
...
...
...
21
21
Kısıtlar(Constraint)
Kısıtlar(Constraint)
oluşturma
oluşturma
:
:
...
...
...
...
22
22
T
T
ablo
ablo
silme:
silme:
...
...
...
...
...
...
23
23
T
T
abloda Değişiklik Y
abloda Değişiklik Y
apma:...
apma:...
...
...
23
23
İndeksler:
İndeksler:
...
...
...
...
...
...
23
23
View’ler
View’ler
...
...
...
...
...
...
24
24
Veritabanı
Veritabanı
T
T
asarımı:...
asarımı:...
...
...
25
25
1.Nesneleri T
1.Nesneleri T
anımlayın:...
anımlayın:...
...
...
...
...
26
26
2.Her
2.Her
nesne
nesne
için bir
için bir
tablo
tablo
oluşturun:
oluşturun:
...
...
...
...
26
26
3.Her bir
3.Her bir
tablo için
tablo için
bir anahtar
bir anahtar
alan seçin:
alan seçin:
...
...
...
...
26
26
4.Nesnelerin gerekli her bir özelliği için
4.Nesnelerin gerekli her bir özelliği için
tabloya
tabloya
bir
bir
sütun
sütun
ekleyin
ekleyin
...
...
...
...
...
...
27
27
5.T
5.T
ekrarlayan nesne
ekrarlayan nesne
özellikleri için
özellikleri için
ek tablolar
ek tablolar
oluşturun...
oluşturun...
27
27
6.Anaht
6.Anaht
ar alana
ar alana
bağlı olmaya
bağlı olmaya
n
n
alanl
alanl
arı belirleyin
arı belirleyin
...
...
...
...
...
...
...
...
...
...
.
.
28
28
7.T
7.T
ablolar
ablolar
arasındaki
arasındaki
ilişkileri
ilişkileri
tanımlayın
tanımlayın
...
...
...
...
29
29
Veritabanı
Veritabanı
Normalizasyonu
Normalizasyonu
...
...
...
...
29
29
3.SQL V
3.SQL V
eri İşleme Dili
eri İşleme Dili
(Data Maniplation Language)...
(Data Maniplation Language)...
32
32
1.ResultSet
1.ResultSet
Kavramı
Kavramı
...
...
...
...
...
...
32
32
2.Select
2.Select
...
...
...
...
...
...
..
..
32
32
En
Koşula bağlı Select ve
Koşula bağlı Select ve
Where
Where
Y
Y
apısı:
apısı:
...
...
...
...
32
32
Matematiksel
Matematiksel
Karşılaştırma
Karşılaştırma
İşaretleri:
İşaretleri:
...
...
...
...
33
33
Mantıksal
Mantıksal
İşaretler
İşaretler
...
...
...
...
...
...
33
33
Sadece be
Sadece be
lli alanları s
lli alanları s
eçmek...
eçmek...
...
...
35
35
Distinct
Distinct
...
...
...
...
...
...
36
36
In...
In...
...
...
...
...
36
36
İç içe Sele
İç içe Sele
ct Y
ct Y
apısı:
apısı:
...
...
...
...
...
...
36
36
Any
Any
,
,
Some,
Some,
All
All
...
...
...
...
...
...
37
37
Exists,
Exists,
not Exists
not Exists
...
...
...
...
...
...
38
38
Union
Union
(Birleştirme)
(Birleştirme)
...
...
...
...
...
...
38
38
Kesişim
Kesişim
Bulma:...
Bulma:...
...
...
...
...
39
39
Except(F
Except(F
ark
ark
Bulma)
Bulma)
...
...
...
...
...
...
39
39
Between
Between
....
....
and
and
....
....
...
...
...
...
...
...
...
...
40
40
Karakter
Karakter
Karşılaştırmaları:Like
Karşılaştırmaları:Like
...
...
...
...
40
40
Null
Null
Karşılaştırma...
Karşılaştırma...
...
...
42
42
3.Sonuçları
3.Sonuçları
Sıralama:Order
Sıralama:Order
By
By
...
...
...
...
43
43
4.Kayıtları
4.Kayıtları
Gruplama:Group
Gruplama:Group
By
By
...
...
...
...
44
44
Gruplamalı
Gruplamalı
Fonksiy
Fonksiy
onlar(Aggr
onlar(Aggr
egate
egate
Functions):
Functions):
...
...
44
44
Alana
Alana
T
T
akma
akma
Ad
Ad
...
...
...
...
...
...
44
44
5.T
5.T
abloları
abloları
Birleştirme:Joining
Birleştirme:Joining
...
...
...
...
49
49
Klasik
Klasik
Join
Join
...
...
...
...
...
...
50
50
T
T
abloya
abloya
T
T
akma Ad(Alias)
akma Ad(Alias)
...
...
...
...
....
....
50
50
Self-join
Self-join
...
...
...
...
...
...
50
50
Left
Left
[Outer]
[Outer]
Join
Join
...
...
...
...
...
...
51
51
Right
Right
[Outer]
[Outer]
Join
Join
...
...
...
...
...
...
51
51
[Inner]
[Inner]
Join
Join
...
...
...
...
...
...
52
52
6.Kayıt
6.Kayıt
Ekleme:Insert
Ekleme:Insert
...
...
...
...
...
...
53
53
Bir
Bir
T
T
ablodan Seçilen Kayıtları Başka bir
ablodan Seçilen Kayıtları Başka bir
T
T
abloya Ekleme:
abloya Ekleme:
...
...
53
53
7.Kayıt
7.Kayıt
Güncelleme:Update
Güncelleme:Update
...
...
...
...
54
54
8.Kayıt
8.Kayıt
Silme:Delete...
Silme:Delete...
...
...
54
54
9.Genel SQL
9.Genel SQL
Fonksiy
Fonksiy
onları...
onları...
...
...
55
55
Aritmetik
Aritmetik
İşaretler...
İşaretler...
...
...
...
...
55
55
T
T
arih-Zaman Fonksiy
arih-Zaman Fonksiy
onları:...
onları:...
...
...
55
55
Aritmetik
Aritmetik
Fonksiy
Fonksiy
onlar:
onlar:
...
...
...
...
....
....
55
55
Karakter
Karakter
İşleme
İşleme
Fonksiy
Fonksiy
onları:
onları:
...
...
...
...
56
56
Dönüştürme
Önsöz
Önsöz
Basit bir Web uygulamasından, devasa
Basit bir Web uygulamasından, devasa
kuruluşların ağır verilerine k
kuruluşların ağır verilerine kadaradar, günü-,
günü-müzde bir çok alanda veritabanı
müzde bir çok alanda veritabanı
uygu-lamalarına ihtiyaç duyulmaktadır. Seri
lamalarına ihtiyaç duyulmaktadır. Seri
özellikle, Web projeleri gibi küçük çaplı
özellikle, Web projeleri gibi küçük çaplı
işlerinde Veritab
işlerinde Veritabanı anı kullanmak zorundakullanmak zorunda
kalan, ama bu konuda başlangıç
kalan, ama bu konuda başlangıç
aşa-masında bile bilgi sahibi
masında bile bilgi sahibi olmayan birolmayan bir
çok kişiye ışık tutacak şekilde
çok kişiye ışık tutacak şekilde hazırlandı.hazırlandı.
Bundan dolayı da SQL
Bundan dolayı da SQL ve veritabanınınve veritabanının
dışında, bir veritabanının Web’e açılması,
dışında, bir veritabanının Web’e açılması,
XML,
XML, Web Web servisleri ile servisleri ile başka sitelerbaşka siteleree
hizmet sunma gibi konulara da nasıl
hizmet sunma gibi konulara da nasıl
yapılacağı konusunda kir vermesi
yapılacağı konusunda kir vermesi
açı-sından bir noktaya kadar değinildi.
sından bir noktaya kadar değinildi.
Tüm bunların yanında, SQL’i iyi
Tüm bunların yanında, SQL’i iyi
bilen-ler için bile seyrek kullanılan komutlara
ler için bile seyrek kullanılan komutlara
bir yerlerde
bir yerlerden bakmak bazn bakmak bazen en bir zorunlu-bir
zorunlu-luk arz
luk arz edebilmekteedebilmektedirdir. İşte k. İşte kitapta böyleitapta böyle
bir ihtiyacı da karşılamak üzere SQL’i
bir ihtiyacı da karşılamak üzere SQL’i
enine boyuna ele aldım. Özellikle
enine boyuna ele aldım. Özellikle yapıla-
yapıla-bilecek hataları, akla takılayapıla-bilecek soru ve
bilecek hataları, akla takılabilecek soru ve
sorunları, program geliştirme esnasında
sorunları, program geliştirme esnasında
önemli olduğunu gördüğüm teknikleri
önemli olduğunu gördüğüm teknikleri
püf noktaları halinde bulabilirsiniz.
püf noktaları halinde bulabilirsiniz.
Veritabanı uygulamalarının
Veritabanı uygulamalarının
kurgu-lamak bir çok platforma hakim
lamak bir çok platforma hakim olmayıolmayı
gerektirir. Ciddi bir Web uygulaması
gerektirir. Ciddi bir Web uygulaması
meydana getirebilme
meydana getirebilmek için k için öncelikle, SQLöncelikle, SQL
ve veritabanı konusunda temel
ve veritabanı konusunda temel bilgilerebilgilere
sahip olmak gerekir. Çünkü tüm sistem,
sahip olmak gerekir. Çünkü tüm sistem, Sorumlu Y
Sorumlu Yazı İşleri azı İşleri Müdürü:Müdürü:
Murat Yıldız Murat Yıldız
myildiz@byte.com.tr
myildiz@byte.com.tr
Y
Yönetici önetici Editör:Editör:
İbrahim Özdemir İbrahim Özdemir iozdemir@byte.com.tr iozdemir@byte.com.tr Editörler Editörler
:
:
Burak Kahyaoğlu Burak Kahyaoğlu bkahyaoglu@byte.com.tr bkahyaoglu@byte.com.trÜsame İldar Özdemir Üsame İldar Özdemir
uildar@byte.com.tr uildar@byte.com.tr Tasarım ve Uygulama: Tasarım ve Uygulama: Yağız Akay Yağız Akay yakay@byte.com.tr yakay@byte.com.tr
ACAR Yayıncılık adına imtiyaz sahibi:
ACAR Yayıncılık adına imtiyaz sahibi:
Murat Yıldız Murat Yıldız Reklam Müdürü: Reklam Müdürü: Ahmet Aslantürk Ahmet Aslantürk Baskı: Baskı: ETAM A.Ş. ETAM A.Ş. Film Çıkış: Film Çıkış: Figür Figür Merkez Ofs: Merkez Ofs:
Fulya Cad. Fulya Bayırı Sk.
Fulya Cad. Fulya Bayırı Sk.
Bilsan Plaza 11/4 80300 Bilsan Plaza 11/4 80300 Mecidiyeköy - İSTANBUL Mecidiyeköy - İSTANBUL T Tel: el: (212) (212) 212 212 62 62 0606 Faks: (212) 212 62 11 Faks: (212) 212 62 11 www.byte.com.tr www.byte.com.tr
7
7
veritabanı şeması üstüne inşa edilir.
veritabanı şeması üstüne inşa edilir.
Bunun üstüne, HTML ve
Bunun üstüne, HTML ve
ASP-ASP.NET-PHP gibi bir Web programlama tekniğine
PHP gibi bir Web programlama tekniğine
hakim olmak gerekir. Bu da yetmez, veri
hakim olmak gerekir. Bu da yetmez, veri
erişim bileşenlerini de yakından tanıyıp
erişim bileşenlerini de yakından tanıyıp
etkin
etkin olarak kullanabilmek gerekirolarak kullanabilmek gerekir. Bunun. Bunun
üstüne, güncel bir
üstüne, güncel bir uygulama geliştirmek uygulama geliştirmek
için XML’i yakından tanımak gerekir. XML
için XML’i yakından tanımak gerekir. XML
Web Servisleri, Web’de kurumlar arası
Web Servisleri, Web’de kurumlar arası
haberleşme açısından oldukça ciddi
haberleşme açısından oldukça ciddi
gelişmeler önermekte.
gelişmeler önermekte.
Seriyi hazırlarken, bu durumları
Seriyi hazırlarken, bu durumları
göz önüne aldık. İlk kitapçıkta, İlişkisel
göz önüne aldık. İlk kitapçıkta, İlişkisel
Veritabanı ve SQL konuları ele alındı.
Veritabanı ve SQL konuları ele alındı.
İkinci ünitede bir popüler orta ve büyük
İkinci ünitede bir popüler orta ve büyük
ölçekli Veritabanı Yönetim Sistemi olan
ölçekli Veritabanı Yönetim Sistemi olan
Microsoft SQL Ser
Microsoft SQL Server 2000, Tver 2000, T-SQL ile-SQL ile
VT
VTYS üstünde dinamik programYS üstünde dinamik programcıklarıncıkların
geliştirilmesi, belli başlı dinamik
geliştirilmesi, belli başlı dinamik olarak olarak
SQL scriptleri oluşturma konularına da
SQL scriptleri oluşturma konularına da
orta düzeye kadar yer verildi. Böylelikle,
orta düzeye kadar yer verildi. Böylelikle,
veritabanı işine sıfırdan başlayacak bir
veritabanı işine sıfırdan başlayacak bir
kullanıcının profesyonelliğin kapısından
kullanıcının profesyonelliğin kapısından
içeriye adım atacak hale gelebileceği bir
içeriye adım atacak hale gelebileceği bir
kitap ortaya çıktı.
kitap ortaya çıktı.
Özellikle SQL’e adanan ilk kitapçıkta
Özellikle SQL’e adanan ilk kitapçıkta
olmak üzere, kolay ama çok şey
olmak üzere, kolay ama çok şey
öğrenil-mesi gerektiğinden, serinin tamamındaki
mesi gerektiğinden, serinin tamamındaki
konu anlatımları sık sık ve kolaydan zora
konu anlatımları sık sık ve kolaydan zora
doğru giden örneklerle desteklendi. İlk
doğru giden örneklerle desteklendi. İlk
kitapçıkta yer alan örneklerin bir çoğunu,
kitapçıkta yer alan örneklerin bir çoğunu,
www.verivizyon.com/sqlkitabi
www.verivizyon.com/sqlkitabiadre-
adre-sinde online simülasyon üstünde test
sinde online simülasyon üstünde test
edebilirsiniz.
edebilirsiniz.
Veritabanının tarihi gibi , uygulama
Veritabanının tarihi gibi , uygulama
geliştirme açısından çok da etkili
geliştirme açısından çok da etkili
olma-yan konuları maalesef bu seride
yan konuları maalesef bu seride bulama-
bulama-yacaksınız. Bu türden kuru bilgiler için
yacaksınız. Bu türden kuru bilgiler için
bakılabilecek en iyi yer, bu konuda eğitim
bakılabilecek en iyi yer, bu konuda eğitim
veren yüksek öğretim kurumlarımızda
veren yüksek öğretim kurumlarımızda
okutulan ders
okutulan ders kitapları olabilir.kitapları olabilir.
Günlük hayatta, veritabanına hakim
Günlük hayatta, veritabanına hakim
olamamış programc
olamamış programcı arkı arkadaşların, buadaşların, bu
açıklarını daha fazla (SQL harici) kod ile
açıklarını daha fazla (SQL harici) kod ile
kapatmaya çalıştıklarına defalarca şahit
kapatmaya çalıştıklarına defalarca şahit
oldum. Böyle bir seri
oldum. Böyle bir seri sayesindesayesinde, neyin, neyin
veritabanı programlama kapsamında
veritabanı programlama kapsamında
düşünüleceği, neyin istemci programa
düşünüleceği, neyin istemci programa
bırakılacağı konularının okurlar
bırakılacağı konularının okurlar
tarafın-dan daha iyi
dan daha iyi anlaşılacağı kanaatindeyim.anlaşılacağı kanaatindeyim.
Bu kitap sayesinde SQL’i tanıyan
Bu kitap sayesinde SQL’i tanıyan
prog-ramcıların bunu nerede nasıl
ramcıların bunu nerede nasıl kullanacak-
kullanacak-larını geniş örneklerle hem de
larını geniş örneklerle hem de güncelgüncel
teknolojiler ışığında öğrenebilecekleri bir
teknolojiler ışığında öğrenebilecekleri bir
seri ortaya çıkmış olacak.
seri ortaya çıkmış olacak.
Emeği geçen herkese teşekkürü borç
Emeği geçen herkese teşekkürü borç
bilirim.
bilirim.
-Y
-Yaşar aşar GÖZÜDELGÖZÜDELİİ
ygozudeli@hotmail.com
8
8
İ
İ
lk olarak, İlişkisel Veritabanı kavramınılk olarak, İlişkisel Veritabanı kavramını yakından tanıyacağız. Böylelikle hayatta yakından tanıyacağız. Böylelikle hayatta karşılaşılan bilgiye dayalı projelerinkarşılaşılan bilgiye dayalı projelerin nasıl veritabanı mimarisine uyarlanacağını nasıl veritabanı mimarisine uyarlanacağını öğreneceğiz.
öğreneceğiz.
İkinci bölümde, SQL komutlarını iki İkinci bölümde, SQL komutlarını iki gruba ayırarak inceleyeceğiz. Öncelikle, gruba ayırarak inceleyeceğiz. Öncelikle, veritabanı tasarlamaya yönelik komutları veritabanı tasarlamaya yönelik komutları öğreneceğiz. Bu gruba giren komutlar için öğreneceğiz. Bu gruba giren komutlar için Veri İşaretleme Dili deyimini kullanacağız. Veri İşaretleme Dili deyimini kullanacağız. Veri İşaretleme Dili ile sadece verilerin Veri İşaretleme Dili ile sadece verilerin sak-lanacağı ortama dair düzenlemeler yapılır. lanacağı ortama dair düzenlemeler yapılır.
Son olarak Veri İşleme Dili terimi Son olarak Veri İşleme Dili terimi altında, İlişkisel veritabanı destekli veri altında, İlişkisel veritabanı destekli veri işleme komutlarını öğreneceğiz. Bu işleme komutlarını öğreneceğiz. Bu komutlarla veritabanına kayıt eklemek, komutlarla veritabanına kayıt eklemek, veritabanından kayıt silmek, var olan veritabanından kayıt silmek, var olan kayıtlar üstünde güncelleme yapmak gibi kayıtlar üstünde güncelleme yapmak gibi işlemleri öğreneceğiz.
işlemleri öğreneceğiz.
Bu konuya yeni başlamayı Bu konuya yeni başlamayı planlıyor-sanız, önce ilk bölümü, ardından hazır bir sanız, önce ilk bölümü, ardından hazır bir veritabanı üstünde 3. bölümü veritabanı üstünde 3. bölümü uygulama-nız, son
nız, son olarak olarak ikinci bölümde kod ikinci bölümde kod yazarak yazarak nasıl veritabanı tasarlayabileceğinizi nasıl veritabanı tasarlayabileceğinizi öğre-nebilirsiniz. 2.bölümü anlamak zorunda nebilirsiniz. 2.bölümü anlamak zorunda değilsiniz.
değilsiniz.
Artık bir çok VTYS ortamında, Artık bir çok VTYS ortamında, verita-banı şemalarını düzenlemeniz için görsel banı şemalarını düzenlemeniz için görsel arayüzler mevcuttur. Ancak bir proje arayüzler mevcuttur. Ancak bir proje üstünde çalışmak isterseniz, öncelikli üstünde çalışmak isterseniz, öncelikli olarak nesneleri tasarlayıp veritabanı olarak nesneleri tasarlayıp veritabanı şemasını ortaya çıkarmak gerekir. Ancak şemasını ortaya çıkarmak gerekir. Ancak daha sonra veri işleme işlemlerine daha sonra veri işleme işlemlerine geçi-lebilir.
lebilir.
GİRİŞ
GİRİŞ
SQL(Es-kü-el okunur) insanların SQL(Es-kü-el okunur) insanların verita-banı sistemleri ile konuşmasını sağlayan banı sistemleri ile konuşmasını sağlayan popüler bir dildir. Bu dil sayesinde, bir popüler bir dildir. Bu dil sayesinde, bir veri-tabanından kayıtları alabilir, değiştirebilir tabanından kayıtları alabilir, değiştirebilir ya da yeni kayıtlar ekleyebiliriz. SQL bir ya da yeni kayıtlar ekleyebiliriz. SQL bir dildir; ancak bir programlama dili değildir. dildir; ancak bir programlama dili değildir. Program geli
Program geliştirme ştirme aşamasında aşamasında SQLSQL’’denden faydalanılır, ancak tek başına bu iş için faydalanılır, ancak tek başına bu iş için yeterli değildir.
yeterli değildir.
Verilerin belli özelliklerine göre Verilerin belli özelliklerine göre grup-lanıp diske kaydedilmesi işine veritabanı lanıp diske kaydedilmesi işine veritabanı yönetimi denir. V
yönetimi denir. Veritabanlarından eritabanlarından enen popüler olanı, ilişkisel veritabanıdır. popüler olanı, ilişkisel veritabanıdır. İlişki-sel veritabanın kökeni, 1970’li yıllarda IBM sel veritabanın kökeni, 1970’li yıllarda IBM laboratuarlarında yapılan çalışmalarda laboratuarlarında yapılan çalışmalarda atılmıştır.
atılmıştır. TTakip eden akip eden çalışmalarla, çalışmalarla, 1983’te1983’te SQL (Structural Query Language) SQL (Structural Query Language) standart-ları tanımlanmış ve ardından 1987 yılında ları tanımlanmış ve ardından 1987 yılında önce ISO ardından da ANSI tarafından önce ISO ardından da ANSI tarafından bir standart olarak kabul edilmiştir. Daha bir standart olarak kabul edilmiştir. Daha sonra, bu standartlar çerçevesinde bir çok sonra, bu standartlar çerçevesinde bir çok veritabanı yönetim sistemleri veritabanı yönetim sistemleri geliştirilmiş-tir. Bunlardan belli başlıları, Oracle, Sybase, tir. Bunlardan belli başlıları, Oracle, Sybase, MS SQL Server, Informix ve MySQL’dir. Bu MS SQL Server, Informix ve MySQL’dir. Bu VTYS’lerin işlerin daha kolay yürümesi için VTYS’lerin işlerin daha kolay yürümesi için kendi adlarına standart dilden uzaklaşan kendi adlarına standart dilden uzaklaşan taraarı vardır. Ancak genel işlemlerde taraarı vardır. Ancak genel işlemlerde kul-lanılan dil
lanılan dil tümü için tümü için de orde ortaktır ve taktır ve SQLSQL’’dir.dir.
Veritabanı
Veritabanı
Y
Y
önetim
önetim
Sistemleri (VTYS)
Sistemleri (VTYS)
Veri T
Veri Tabanı Yönetim Sistemleri, abanı Yönetim Sistemleri, zikselziksel hafızada bilgileri çeşitli özelliklerine göre hafızada bilgileri çeşitli özelliklerine göre
Bu Kitapta...
9
9
gruplandırıp gruplandırıp şekillendirdik-ten sonra saklayan ten sonra saklayan prog-ramlardır
ramlardır. Kısaca V. Kısaca VTYS diyeTYS diye adlandıracağız.
adlandıracağız. VTYS, VTYS, sakla- sakla-nan bu veriyi, SQL nan bu veriyi, SQL komut-ları ile insankomut-ların istekleri ları ile insanların istekleri çerçevesinde işler, yeniden çerçevesinde işler, yeniden şekillendirirler. Yani, şekillendirirler. Yani, Verita-banı Yönetim Sistemi’nin bir banı Yönetim Sistemi’nin bir ucunda, bilgisayar ucunda, bilgisayar disk(ler)-inde saklanan düzenlenmiş inde saklanan düzenlenmiş veriler
veriler, diğer ucunda , diğer ucunda ise birise bir kullanıcı (genellikle insan) kullanıcı (genellikle insan) vardır. Veritabanı Yönetim vardır. Veritabanı Yönetim Sistemleri konusunda daha Sistemleri konusunda daha geniş bilgi bir sonraki geniş bilgi bir sonraki kitap-çıkta verilecektir.
çıkta verilecektir.
Veritabanı Yönetim Veritabanı Yönetim sistemleri, her zaman bir sistemleri, her zaman bir kullanıcıya, yönetim kullanıcıya, yönetim ekran-larından bilgi vermek için larından bilgi vermek için
kullanılmaz. Bazen kullanıcı konumunda kullanılmaz. Bazen kullanıcı konumunda doğrudan bir insan yerine bir program da doğrudan bir insan yerine bir program da olabilir.
olabilir.
Bir veritabanı
Bir veritabanı programcısı, veritabanınıprogramcısı, veritabanını çekip çevirmenin yanında, VTYS’ye çekip çevirmenin yanında, VTYS’ye bağla-nıp veri alış-verişi ve veri üstünde değişiklik nıp veri alış-verişi ve veri üstünde değişiklik yapan bu ‘istemci programları’ da yazabilen yapan bu ‘istemci programları’ da yazabilen kişidir.
kişidir.
Veritabanı istemci programları SQL Veritabanı istemci programları SQL dışında başka dillere de hakim
dışında başka dillere de hakim olmayıolmayı gerektirir. VBScript’ten tutun da PHP, Perl, gerektirir. VBScript’ten tutun da PHP, Perl, ASP, ASP.Net gibi teknikler ile Web sayfası ASP, ASP.Net gibi teknikler ile Web sayfası geliştirmeye aşina olmak yahut C/C++/C#, geliştirmeye aşina olmak yahut C/C++/C#, Java, Visual Basic gibi diller ile
Java, Visual Basic gibi diller ile basit uygula-basit uygula-maları yapabiliyor olmak bu iş
maları yapabiliyor olmak bu iş için başlan-için başlan-gıçta yeterlidir.
gıçta yeterlidir.
Veritabanı Nerelerde Kullanılır?
Veritabanı Nerelerde Kullanılır?
Veritabanı programlama ile bir çok
Veritabanı programlama ile bir çok projeproje geliştirilebilir. Bir İngilizce-Türkçe sözlük geliştirilebilir. Bir İngilizce-Türkçe sözlük bu yolla kolayca yazılabilir. Bir kütüphane bu yolla kolayca yazılabilir. Bir kütüphane takip otomasyonu, bir hastane takip otomasyonu, bir hastane otomas-yonu, muhasebe programları ve daha bir yonu, muhasebe programları ve daha bir çok otomasyon programı temelde çok otomasyon programı temelde verita-banı projesidir
banı projesidir. Günlük . Günlük hayatta eritabanıhayatta eritabanı programlama telefon şirketleri tarafından programlama telefon şirketleri tarafından yoğun olarak kullanılır. Konuşmaların yoğun olarak kullanılır. Konuşmaların süre-leri ay boyunca veritabanlarında saklanır leri ay boyunca veritabanlarında saklanır ve ay sonu
ve ay sonu geldiğinde istemci programlargeldiğinde istemci programlar tarafından her bir
tarafından her bir abonenin telefon faturasıabonenin telefon faturası teker teker
teker teker hesaplanırhesaplanır. Günde . Günde yüzbinlerceyüzbinlerce abonenin birbirini aradığı bir durumun abonenin birbirini aradığı bir durumun içinden başka hangi
içinden başka hangi yolla çıkılabilir ki?yolla çıkılabilir ki?
VTYS, disk
VTYS, disk üstündeki verileri daha kolay işleyip yönetmemizi sağlarüstündeki verileri daha kolay işleyip yönetmemizi sağlar..
SQL ile VTYS’ye veriler üstünde nasıl bir
SQL ile VTYS’ye veriler üstünde nasıl bir işlem yapması istendiği anlatı-işlem yapması istendiği
anlatı-lır. VTYS bunu bizim
1. Bölüm
12
12
İlişkisel
İlişkisel
V
V
eritabanı
eritabanı
Kavramı
Kavramı
İlişkisel veritabanı günümüzde en yaygın
İlişkisel veritabanı günümüzde en yaygın
kullanılan ilişkisel veritabanı
kullanılan ilişkisel veritabanı
sistemle-rinden biridir. En çok kullanılan ilişkisel
rinden biridir. En çok kullanılan ilişkisel
Veritabanı Yönetim Sistemlerine Oracle,
Veritabanı Yönetim Sistemlerine Oracle,
Ms SQL Server, Sybase, Informix, MySQL
Ms SQL Server, Sybase, Informix, MySQL
gibi veritabanı yönetim sistemlerini
gibi veritabanı yönetim sistemlerini
örnek olarak verebiliriz. Bu bölümde
örnek olarak verebiliriz. Bu bölümde
verilen uygulamaları test etmek için MS
verilen uygulamaları test etmek için MS
Access d
Access de bir noke bir noktaya taya kadar kullanılabikadar kullanılabi-
-lir ancak verilen örneklerin tamamı MS
lir ancak verilen örneklerin tamamı MS
Access tarafından desteklenemez. Bu
Access tarafından desteklenemez. Bu
nedenle, örneklerin büyük bir
nedenle, örneklerin büyük bir çoğunluğuçoğunluğu
MS Acc
MS Access ess MS SQL MS SQL Server 2000 Server 2000 üstündeüstünde
test edilmiştir. ONLINE olarak kitabın
test edilmiştir. ONLINE olarak kitabın
içerdiği uygulamala
içerdiği uygulamaları test rı test etmek içinetmek için
www.verivizyon.com/sqlkitabi
www.verivizyon.com/sqlkitabiadresin-
adresin-den
den faydalanafaydalanabilirsiniz.bilirsiniz.
Bilgisayar ortamında veri saklamak
Bilgisayar ortamında veri saklamak
için kullanılan yapılardan en büyüğüne
için kullanılan yapılardan en büyüğüne
dosya dendiğini
dosya dendiğini biliyorsunuzbiliyorsunuzdurdur. İ. İlişkisellişkisel
veritabanları, veritabanı denilen büyük
veritabanları, veritabanı denilen büyük
dosyalardan oluşur. Veritabanı, içerisinde
dosyalardan oluşur. Veritabanı, içerisinde
tabloları barındıran bir
tabloları barındıran bir dosyadırdosyadır. Her . Her birbir
tablo, belli yapıya uygun verileri
tablo, belli yapıya uygun verileri
sakla-mak üzere tasarlanır. Tablolar, satırlardan
mak üzere tasarlanır. Tablolar, satırlardan
ve sütunlardan oluşur.
ve sütunlardan oluşur.
Bu bölümde, bu yapıları yakından
Bu bölümde, bu yapıları yakından
tanıyacağız.
tanıyacağız.
Günlük Hayatta
Günlük Hayatta
İlişkisel
İlişkisel
Ver
Ver
itabanı
itabanı
Bir çoğumuzun başına gelmiştir.
Bir çoğumuzun başına gelmiştir.
Arka-daşlara, eşe dosta bir çok kitap, kaset, CD
daşlara, eşe dosta bir çok kitap, kaset, CD
veririz ve... Gidiş o gidiş! Böyle bir sorunla
veririz ve... Gidiş o gidiş! Böyle bir sorunla
nasıl başa çıkarız? Bu
nasıl başa çıkarız? Bu konuda bir projekonuda bir proje
geliştirelim:
geliştirelim:
Öncelikle elimizdeki bütün
Öncelikle elimizdeki bütün
Kitapla-rımızın bir listesini yapalım. Ama bunu
rımızın bir listesini yapalım. Ama bunu
yaparken, her bir k
yaparken, her bir kitaba numara vermeyiitaba numara vermeyi
ihmal etmeyelim. Çünkü elimizde aynı
ihmal etmeyelim. Çünkü elimizde aynı
kitaptan iki
kitaptan iki adet olabiliradet olabilir. Bunlardan. Bunlardan
biri eski, öteki
biri eski, öteki de yeni kitap olabilir. Bude yeni kitap olabilir. Bu
durumda bu iki kitaptan hangisini kime
durumda bu iki kitaptan hangisini kime
verdiğimiz
verdiğimizi nasıl i nasıl ayırt edeceğiz?ayırt edeceğiz?
Daha sonra kitaplarımızı şu şekilde bir
Daha sonra kitaplarımızı şu şekilde bir
listeye yazalım:
listeye yazalım:
Listenin her bir sütununda sırasıyla şu
Listenin her bir sütununda sırasıyla şu
bilgiler yer alsın:
bilgiler yer alsın:
Kitap No:
Kitap No:Her bir kitaba Her bir kitaba verdiğimizverdiğimiz
numara
numara
Kitap Ad:
Kitap Ad:Her bir kitabın adıHer bir kitabın adı
ISBN Numarası:
ISBN Numarası:Her bir kitabın arka-Her bir kitabın
arka-sında yer alan Uluslararası Standart Kitap
sında yer alan Uluslararası Standart Kitap
Numarası
Numarası
Sayfa Sayısı:
Sayfa Sayısı: Kitabın kaç sayfa olduğuKitabın kaç sayfa olduğu
Özeti:
Özeti:Kitabın bir özet açıklamasıKitabın bir özet açıklaması
Amacımız, kime hangi k
Amacımız, kime hangi kitabı verdiğimiziitabı verdiğimizi
bilmek. O halde Kitap
bilmek. O halde Kitap listesine ek olarak listesine ek olarak
En başa Kitap No’nu, sonra Kitap Adı’nı ardından
En başa Kitap No’nu, sonra Kitap Adı’nı ardından
ISBN numarası’nı sonra Sayfa Sayısı’nı, Özeti’ni
ISBN numarası’nı sonra Sayfa Sayısı’nı, Özeti’ni
yazalım ve listeyi dolduralım.
13
13
şimdi bir de ödünç listesi
şimdi bir de ödünç listesi yapalım:yapalım:
Kütüphanemiz
Kütüphanemizden verdiğimiz her den verdiğimiz her birbir
kitabı bu listeye işlersek, hangi k
kitabı bu listeye işlersek, hangi kitabımı-
itabımı-zın kimde k
zın kimde kaldığını, süresi sonunda geti-aldığını, süresi sonunda
geti-rilip getirilmediğini kolayca takip
rilip getirilmediğini kolayca takip
edebili-riz. Buradaki Geri geldi mi
riz. Buradaki Geri geldi mi hanesine gelenhanesine gelen
her kitap için
her kitap için bir işaret koyabiliriz ya dabir işaret koyabiliriz ya da
imza attırabiliriz.
imza attırabiliriz.
Bu projeyi, bilgisayar ortamında
Bu projeyi, bilgisayar ortamında
yapmak, kağıt üstünde
yapmak, kağıt üstünde yapmaktan çok yapmaktan çok
daha kolay olacaktır. Bu projede yer alan
daha kolay olacaktır. Bu projede yer alan
listelerin karşılığı
listelerin karşılığı veritabanında tablolar-veritabanında
tablolar-dır. Hayatta bir çok şeyi listelerle çözeriz.
dır. Hayatta bir çok şeyi listelerle çözeriz.
Her bir listeye karşılık, veritabanı
Her bir listeye karşılık, veritabanı
mantı-ğında bir tablo gelir.
ğında bir tablo gelir.
T
T
emel
emel
Kavramlar
Kavramlar
Veriler ziksel hafızada Veri
Veriler ziksel hafızada Veri
Dosyala-rı(DataFile
rı(DataFiles) s) halinde saklanır. Dosya,halinde saklanır. Dosya,
bilgisayarları
bilgisayarların n bilgileri birbirinden ayıra-bilgileri birbirinden
ayıra-rak saklamak için kullandığı temel bilgi
rak saklamak için kullandığı temel bilgi
depolama yapısıdır. Bir dosyada, bir çok
depolama yapısıdır. Bir dosyada, bir çok
veri yer alabilir.
veri yer alabilir.
Bir kütüphane otomasyonunu ele
Bir kütüphane otomasyonunu ele
alacak olursak, kitap
alacak olursak, kitap ile ilgili bilgiler,ile ilgili bilgiler,
ödünç verilenler, kütüphaneden kitap
ödünç verilenler, kütüphaneden kitap
alma hakları olan üyeler, CD ve kasetler
alma hakları olan üyeler, CD ve kasetler
ile ilgili bilgiler aynı veri dosyasında ama
ile ilgili bilgiler aynı veri dosyasında ama
farklı
farklı tablolar içerisinde yer alabilir.tablolar içerisinde yer alabilir.
Tablolar:
Tablolar:
Bir tablo yani günlük hayattaki ‘liste’
Bir tablo yani günlük hayattaki ‘liste’
kav-ramı, satırlardan ve sütunlardan oluşur.
ramı, satırlardan ve sütunlardan oluşur.
Mesela Kitap listemizi(yani Kitap
Mesela Kitap listemizi(yani Kitap
tablo-muzu) ele alacak olursak, her bir satırda
muzu) ele alacak olursak, her bir satırda
bir kitaba ait bilgiler yer almaktadır.
bir kitaba ait bilgiler yer almaktadır.
Alan(Field), yapılandırılmış bilginin
Alan(Field), yapılandırılmış bilginin
her bir kısmını
her bir kısmını saklamak üzere yapılansaklamak üzere yapılan
tanımlamadır.
tanımlamadır.
Her bir alan, yapılandırılmış verinin bir
Her bir alan, yapılandırılmış verinin bir
birimini tutmak üzere tanımlanır. Her bir
birimini tutmak üzere tanımlanır. Her bir
sütunun adı ile birlikte diğer
sütunun adı ile birlikte diğer
bilgilerini-n(en fazla kaç birimlik
n(en fazla kaç birimlik bilgi bu hücredebilgi bu hücrede
saklanabilecek, ne tür bilgi saklanacak
saklanabilecek, ne tür bilgi saklanacak
vs.) ortaya koyduğu tanıma alan denir.
vs.) ortaya koyduğu tanıma alan denir.
Satır (Row):
Satır (Row):Bir tabloda yer alan her birBir tabloda yer alan her bir
kayıt bir satıra karşılık
kayıt bir satıra karşılık gelirgelir. Örneğin Kitap. Örneğin Kitap
tablosunda her bir satırda farklı bir kitap
tablosunda her bir satırda farklı bir kitap
hakkındaki
hakkındaki bilgi yer almaktadır.bilgi yer almaktadır.
Sütun (Column):
Sütun (Column): Tablolar dikey sütun-Tablolar dikey
sütun-ların yan yana
ların yan yana gelmesiyle meydana gel-gelmesiyle meydana
gel-miştir
miştir. İlk sütunda k. İlk sütunda kitap numaraları, ikinciitap numaraları, ikinci
sütunda kitap isimleri, üçüncü sütunda,
sütunda kitap isimleri, üçüncü sütunda,
ISBN numaraları yer almaktadır.
ISBN numaraları yer almaktadır.
Kayıt (Record):
Kayıt (Record):Yapılandırılmış verilerdenYapılandırılmış verilerden
Bu listede de, ödünç no, kitap no, ödünç alan,
Bu listede de, ödünç no, kitap no, ödünç alan,
verme tarihi, verme süresi, geri geldi mi şeklinde
verme tarihi, verme süresi, geri geldi mi şeklinde
bir liste
bir liste daha yapalım.daha yapalım.
Alan, her bir sütun için
Alan, her bir sütun için tanımlayıcı bilgileri tutantanımlayıcı bilgileri tutan
yapıdır.
14
14
her birine bir kayıt denir. Yani, alan
her birine bir kayıt denir. Yani, alan
bilgi-leri ile birlikte her bir
leri ile birlikte her bir satır bir kayıttır. Birsatır bir kayıttır. Bir
kitap bilgisini ele alacak olursak,
kitap bilgisini ele alacak olursak,
Bu bir kayıttır. Kayıt ile satır arasındaki
Bu bir kayıttır. Kayıt ile satır arasındaki
temel fark, kayıt ile kastedilen yapının
temel fark, kayıt ile kastedilen yapının
sütunlar hakkındaki bilgileri de
sütunlar hakkındaki bilgileri de
içerme-sidir.
sidir.
Veri Tipi (Data Type):
Veri Tipi (Data Type):Bilgisayar, kayıtlarıBilgisayar, kayıtları
yapısal olarak tutarken, onların yapıları
yapısal olarak tutarken, onların yapıları
hakkında kir sahibi olabilmek için bazı
hakkında kir sahibi olabilmek için bazı
özelliklerinin önceden tanımlanması
özelliklerinin önceden tanımlanması
gerekir
gerekir. Örneğin, . Örneğin, kitap numarası alanınınkitap numarası alanının
mutlaka bir tam sayı olacağını, Kitap
mutlaka bir tam sayı olacağını, Kitap
adının harf
adının harf ya da rakamlardan oluşaca-ya da rakamlardan
oluşaca-ğını anlatmamız gerekir. Bir veritabanı
ğını anlatmamız gerekir. Bir veritabanı
oluşturulurken, her bir alanın tipinin
oluşturulurken, her bir alanın tipinin
ne olacağı tanımlanmak zorundadır. Bir
ne olacağı tanımlanmak zorundadır. Bir
alana tamsayı mı yoksa harf mi; tarih mi
alana tamsayı mı yoksa harf mi; tarih mi
yoksa ondalıklı bir sayı mı
yoksa ondalıklı bir sayı mı geleceğgeleceği ancak i ancak
tanımlandıktan sonra k
tanımlandıktan sonra kayıt girilebilirayıt girilebilir..
Ayrıca,
Ayrıca, “bir alanın “bir alanın uzunluğu ne kuzunluğu ne kadaradar
olacak, harf girilebiliyorsa en fazla kaç
olacak, harf girilebiliyorsa en fazla kaç
harf girilebilecek?”, “rakam ise en fazla
harf girilebilecek?”, “rakam ise en fazla
kaç basamaklı olabilir?”
kaç basamaklı olabilir?” türünden soru-türünden
soru-ları yanıtlamak için de yine VT
ları yanıtlamak için de yine VTYS bir alanYS bir alan
için veri tipi belirlememizi ister. Bir alan
için veri tipi belirlememizi ister. Bir alan
için hangi tip
için hangi tip seçeneklerimizin olduğunuseçeneklerimizin olduğunu
ilerleyen k
ilerleyen kısımlarda öğreneceğizısımlarda öğreneceğiz..
Zorlayıcı (Constraint):
Zorlayıcı (Constraint):Herhangi birHerhangi bir
alan için girilebilecek verileri kısıtlayıcı
alan için girilebilecek verileri kısıtlayıcı
kurallara Zorlayıcılar denir. Kullanıcı,
kurallara Zorlayıcılar denir. Kullanıcı,
zor-layıcının istediği şekilde veri
layıcının istediği şekilde veri girmezsegirmezse,,
VT
VTYS hata verirYS hata verir. Böylelikle veritabanına. Böylelikle veritabanına
kullanıcının key değerler girmesi
kullanıcının key değerler girmesi
önlenmiş olur. Örneğin, kitap listemizde
önlenmiş olur. Örneğin, kitap listemizde
yer almayan bir kitabı
yer almayan bir kitabı ödünç vermeyeödünç vermeye
kalktığımızda hata verecek bir kısıtlama
kalktığımızda hata verecek bir kısıtlama
tanımlayabiliriz.
tanımlayabiliriz.
Anahtar (Key):
Anahtar (Key):Anahtar bir veya birdenAnahtar bir veya birden
fazla alanın bir satır için niteleyici olarak
fazla alanın bir satır için niteleyici olarak
girilmesi için tanımlanan özel bir
girilmesi için tanımlanan özel bir çeşitçeşit
zorlayıcıdır. Tekrarlamayacak bir anahtar
zorlayıcıdır. Tekrarlamayacak bir anahtar
alan tanımlandığında, Bu anahtar alana
alan tanımlandığında, Bu anahtar alana
birincil anahtar alan denir. Primary Key,
birincil anahtar alan denir. Primary Key,
Unique Key, Foreign Key gibi türevleri
Unique Key, Foreign Key gibi türevleri
vardır.
vardır.
İlişkisel
İlişkisel
Ve
Ve
ritabanı
ritabanı
Yönetim Sistemleri:
Yönetim Sistemleri:
Veritabanı Yönetim sistemlerinden
Veritabanı Yönetim sistemlerinden
günü-müzde kullanımı en yaygın olanı İlişkisel
müzde kullanımı en yaygın olanı İlişkisel
Veritabanıdır. Hal böyle olunca da en
Veritabanıdır. Hal böyle olunca da en
yaygın veritabanı yönetim sistemleri,
yaygın veritabanı yönetim sistemleri,
İlişkisel Veritabanı Yönetim
İlişkisel Veritabanı Yönetim
Sistemle-ri’(RDBMS)dir
ri’(RDBMS)dir. İlişk. İlişkisel veritabanının enisel veritabanının en
önemli yanı, tablolardan oluşmasıdır.
önemli yanı, tablolardan oluşmasıdır.
Daha önemli yanı da bu tabloların bir biri
Daha önemli yanı da bu tabloların bir biri
ile ilişkilerinin
ile ilişkilerinin olmasıdırolmasıdır. Böyle . Böyle olmasaydıolmasaydı
durup dururken bu V
durup dururken bu VTYS’ler için ‘TYS’ler için ‘ilişkisel’ilişkisel’
demezdik.
demezdik.
Bir veritabanında ilişkiden söz Bir veritabanında ilişkiden söz edebil-mek için en az iki tablonun yer alması mek için en az iki tablonun yer alması gere-kir ve bu iki tablodaki verilerin bir biri ile bir kir ve bu iki tablodaki verilerin bir biri ile bir şekilde ilişkilendiriliyor
şekilde ilişkilendiriliyor olması gerekir. Yineolması gerekir. Yine bir önceki örnek olaya
bir önceki örnek olaya dönecek olursak,dönecek olursak, Kitap listesi ile
Kitap listesi ile ödünçler listesi arasındaödünçler listesi arasında
Kayıt, alan tanımlamaları ile birlikte bir
Kayıt, alan tanımlamaları ile birlikte bir satırda yersatırda yer
alan bilgilere denir.
15
15
bir ilişki
bir ilişki vardırvardır. Çünkü K. Çünkü Kitap listemizdeitap listemizde olmayan bir kitap bizde yoktur ve
olmayan bir kitap bizde yoktur ve ödünçödünç veremeyiz. Haliyle de mantık olarak bu veremeyiz. Haliyle de mantık olarak bu türden bir ödünç bilgisi
türden bir ödünç bilgisi ödünç listemizdeödünç listemizde yer alamamalıdır.
yer alamamalıdır.
Olaya tersten bakacak olursak, geri Olaya tersten bakacak olursak, geri dönmeyen bir kitap hakkındaki detayları dönmeyen bir kitap hakkındaki detayları öğrenmek istediğimizde ödünç listesindeki öğrenmek istediğimizde ödünç listesindeki kitap numarasını alırız. Daha sonra aynı kitap numarasını alırız. Daha sonra aynı numaraya karşılık gelen kitabı, Kitap numaraya karşılık gelen kitabı, Kitap tablo-sundaki satırı buluruz. Bu
sundaki satırı buluruz. Bu satırdaki bilgilersatırdaki bilgiler
bize kitap hakkındaki
bize kitap hakkındaki tüm detayları verir.tüm detayları verir. Kitap tablosundaki kitapNo alanı aday Kitap tablosundaki kitapNo alanı aday anahtar(indeks)’tir. Odunc tablosundaki anahtar(indeks)’tir. Odunc tablosundaki KitapNo
KitapNo alanı, ‘yabancı anahtar’ (foreignalanı, ‘yabancı anahtar’ (foreign key) alandır
key) alandır, çünkü Kitap , çünkü Kitap tablosundaki birtablosundaki bir kaydı sembolize etmektedir.
kaydı sembolize etmektedir.
Tüm bunların ardından VTYS’leri Tüm bunların ardından VTYS’leri hak-kında özet olarak diyebiliriz ki;
kında özet olarak diyebiliriz ki; Bir
Bir İlişkisel Veritabanı Yİlişkisel Veritabanı Yönetim Sistemiönetim Sistemi tablolar üstünde şu üç işlevi yerine tablolar üstünde şu üç işlevi yerine getir-mek zorundadır.
mek zorundadır.
SQL
SQL’’de tablo de tablo adları, alan(eld) adları, alan(eld) , veritabanı dosyası,, veritabanı dosyası, indeks vb. isimler değişken isimleridir. Genel geçer indeks vb. isimler değişken isimleridir. Genel geçer değişken isimlendirme kurallarına burada da dikkat değişken isimlendirme kurallarına burada da dikkat etmek, sağlıklı uygulamalar meydana getirebilmek etmek, sağlıklı uygulamalar meydana getirebilmek için çok önemlidir. Bundan dolayı bu kurallara için çok önemlidir. Bundan dolayı bu kurallara burada yer verdik. Genel kanı bu türden bir
burada yer verdik. Genel kanı bu türden bir kaygınınkaygının yersiz olduğu yönünde olsa da bazen oldukça kritik yersiz olduğu yönünde olsa da bazen oldukça kritik hatalar or
hatalar ortaya çıkabilmektedirtaya çıkabilmektedir..
1.
1.Değişken isimleri, harf Değişken isimleri, harf ile başlamak zorundadır.ile başlamak zorundadır.
2.
2.Değişken isimleri, harDeğişken isimleri, harf, rakamlar ve ‘_’ f, rakamlar ve ‘_’ dan oluş-dan oluş-mak zorundadır.
mak zorundadır.
3.
3.Değişken isimlerinde TürkçeDeğişken isimlerinde Türkçe’’de ki de ki noktalı noktalı harerharer (İ,ı,Ğ,ğ,Ü,ü,Ş,ş,Ç,ç,Ö,ö,) yer alamaz.
(İ,ı,Ğ,ğ,Ü,ü,Ş,ş,Ç,ç,Ö,ö,) yer alamaz.
4.
4.Ayrılmış kelimeler değişken adı olamazlar (select,Ayrılmış kelimeler değişken adı olamazlar (select, like, not, or, delete, update vs.)
like, not, or, delete, update vs.)
5.
5.SQL büyük-küçük harf SQL büyük-küçük harf duyarlı değildir.duyarlı değildir.
6.
6.Değişken isimlerinde boşluk yer alamaz.Değişken isimlerinde boşluk yer alamaz.
Değişken isimlendirme Değişken isimlendirme notasyonları:
notasyonları: 1.Deve notasyonu:
1.Deve notasyonu: degiskenAdi şeklinde degiskenAdi şeklinde yazılıryazılır..
2.Alt çizgi notasyonu:
2.Alt çizgi notasyonu:degisken_adi şeklindedegisken_adi şeklinde yazılır.
yazılır.
Veritabanı programlamada,
Veritabanı programlamada, büyük-küçükbüyük-küçük harf duyarlılığı olmadığından genellikle alt çizgi harf duyarlılığı olmadığından genellikle alt çizgi notasyonu kullanılır ve değişken adları küçük harf notasyonu kullanılır ve değişken adları küçük harf olarak verilir. Ancak bu bir kural olmayıp sadece olarak verilir. Ancak bu bir kural olmayıp sadece okunurluğu artırmak için programcıların bir çoğu okunurluğu artırmak için programcıların bir çoğu tarafından tercih edilen
tarafından tercih edilen bir yoldur.bir yoldur.
NULL mu, boşluk mu? NULL mu, boşluk mu?
Bir kayıt için, alanlardan biri hiç girilmediği için boş Bir kayıt için, alanlardan biri hiç girilmediği için boş olabilir veya bilgisayardaki space tuşunun karşılığı olabilir veya bilgisayardaki space tuşunun karşılığı ASCII değeri girilmiş olabilir
ASCII değeri girilmiş olabilir. . Space(ASCII-32 karakSpace(ASCII-32 karak- -teri) tuşuna basılarak elde edilmiş boşluk ile daha teri) tuşuna basılarak elde edilmiş boşluk ile daha hiçbir bilgi girilmemiş olan
hiçbir bilgi girilmemiş olan boşluk bilgisayar dilindeboşluk bilgisayar dilinde birbirinden farklıdır. Daha önce hiçbir şey girilmemiş birbirinden farklıdır. Daha önce hiçbir şey girilmemiş alan için NULL terimi
alan için NULL terimi kullanılırkullanılır..
Değişken İsimlendirme Kuralları
16
16
Birinci tabloda yer alan bir kayda karşılık, ikinci
Birinci tabloda yer alan bir kayda karşılık, ikinci
tabloda bir veya daha çok kayıt yer alabilir. Ancak
tabloda bir veya daha çok kayıt yer alabilir. Ancak
İkinci tablodaki bir kitap numarasına karşılık birinci
İkinci tablodaki bir kitap numarasına karşılık birinci
tabloda sadece bir tek
tabloda sadece bir tek kayıt vardırkayıt vardır. Bu ili. Bu ilişkiye bireşkiye bire
sonsuz bir ilişki denir. Birinci tablodaki her bir tekil
sonsuz bir ilişki denir. Birinci tablodaki her bir tekil
kaydı sembolize eden kitapNo için aday anahtar,
kaydı sembolize eden kitapNo için aday anahtar,
ikinci tabloda, ödünç verilen herhangi bir kitap
ikinci tabloda, ödünç verilen herhangi bir kitap
hakkındaki detayları görmek için 1.
hakkındaki detayları görmek için 1. tabloya geçme-tabloya
geçme-mizi sağlayan kitapNo’na ise yabancı
mizi sağlayan kitapNo’na ise yabancı
anahtar(fore-ign key) denir.
ign key) denir.
Kitaplar listesi üstünde bir
17
17
1. Seçme:
1. Seçme: Herhangi bir tabloda (listede)Herhangi bir tabloda (listede) yer alan
yer alan tüm bilgileri tüm bilgileri gösterebilmelidigösterebilmelidir.r. Örneğin, Kitap tablosunun bir dökümünü Örneğin, Kitap tablosunun bir dökümünü verebilmelidir. Ya da kitap listesinden bazı verebilmelidir. Ya da kitap listesinden bazı kitapların bilgilerini getirip diğer bir kısmını kitapların bilgilerini getirip diğer bir kısmını getirmeyebilmelidir.
getirmeyebilmelidir. 2. İzdüşürme:
2. İzdüşürme: Herhangi bir tablodanHerhangi bir tablodan sadece belli sütunların yer aldığı seçme sadece belli sütunların yer aldığı seçme işlevlerini yerine
işlevlerini yerine getirebilmelidirgetirebilmelidir. . Örneğin,Örneğin, canı isteyen bir kullanıcı kitabın sadece canı isteyen bir kullanıcı kitabın sadece adını ve kaç
adını ve kaç sayfa olduğunu seçebilmelidirsayfa olduğunu seçebilmelidir.. 3. Birleştirme:
3. Birleştirme: Birden fazla tabloda yerBirden fazla tabloda yer alan bilgileri, yeri geldiğinde tek bir alan bilgileri, yeri geldiğinde tek bir tabloy-muş gibi
muş gibi sunabilmelidirsunabilmelidir. Örneğin, . Örneğin, ödünçödünç alınıp da geri getirilmeyen kitabın
alınıp da geri getirilmeyen kitabın adlarınıadlarını ve kimler tarafından alındığını bir tek ve kimler tarafından alındığını bir tek tab-loymuş gibi gösterebilmelidir.
loymuş gibi gösterebilmelidir.
VTYS bu 3 temel işlevi yerine VTYS bu 3 temel işlevi yerine getirmeli-dir
dir. Bunlardan üçünü, ik. Bunlardan üçünü, ikisini veya birini aynıisini veya birini aynı anda yerine getirmek durumunda anda yerine getirmek durumunda kalabi-liriz. Örneğin, sayfa
liriz. Örneğin, sayfa sayısı 200’sayısı 200’den büyük den büyük kitapların sadece adını görmek istersek, kitapların sadece adını görmek istersek, hem iz düşürme hem
hem iz düşürme hem de seçme işleminede seçme işlemine ihtiyaç duyarız.
ihtiyaç duyarız.
Veriler ve depolanma şekilleri farklı Veriler ve depolanma şekilleri farklı olabilir
olabilir. Önemli . Önemli olan, VTYS’nin SQL ileolan, VTYS’nin SQL ile yönetilebilir olmasıdır
yönetilebilir olmasıdır. Böylelikle, . Böylelikle, verilerinverilerin bilgisayarda ziksel olarak ne şekilde bilgisayarda ziksel olarak ne şekilde depo-landığı, kullanıcı bilmek zorunda kalmaz. landığı, kullanıcı bilmek zorunda kalmaz. Y
Yani, kullanıcı temel veri ani, kullanıcı temel veri saklama işlem vesaklama işlem ve yöntemlerinden izole edilmiş olur. yöntemlerinden izole edilmiş olur. Kulla-nıcının verileri etkili olarak kullanması için nıcının verileri etkili olarak kullanması için bilmesi gereken tek şey
bilmesi gereken tek şey SQL olmalıdır.SQL olmalıdır. Verilerle ilgili yapılan işlemler iki ayrı Verilerle ilgili yapılan işlemler iki ayrı
grupta incelenir
grupta incelenir. Birincisi, . Birincisi, veri tanımlamaveri tanımlama işlemleridir
işlemleridir. Bu . Bu grupta yapılan işlemlergrupta yapılan işlemler daha çok verinin saklandığı ortama dair daha çok verinin saklandığı ortama dair işlemlerdir
işlemlerdir. Doğrudan . Doğrudan verinin kendisi ileverinin kendisi ile ilgilenmek yerine, tablonun hangi ilgilenmek yerine, tablonun hangi alanlar-dan oluşacağı, hangi alana hangi aralıkta dan oluşacağı, hangi alana hangi aralıkta veri girileceği vb. gibi işlemler
veri girileceği vb. gibi işlemler bu gruptadır.bu gruptadır. Veri işleme işlemleri ise verinin Veri işleme işlemleri ise verinin saklan-dığı ortam ile
dığı ortam ile hiçbir ilgisi olmayan işlem-hiçbir ilgisi olmayan işlem-lerdir
lerdir. Bir . Bir tablonun içindeki tüm tablonun içindeki tüm kayıtlarkayıtlar silinse bile sonuçta tablo
silinse bile sonuçta tablo var olacaktır.var olacaktır. Çünkü bir tablonun silinmesi DDL’in Çünkü bir tablonun silinmesi DDL’in göre-vidir.
vidir.
SQL komutlarının bu şekilde SQL komutlarının bu şekilde gruplan-dırılmasının nedeni, SQL’den ziyade, veri dırılmasının nedeni, SQL’den ziyade, veri yönetimi konusundaki mantıktan yönetimi konusundaki mantıktan kaynak-lanmaktadır
lanmaktadır. Böylelikle . Böylelikle işlemler daha anla-işlemler daha anla-şılır bir hal
şılır bir hal almaktadıralmaktadır. Verinin kılıfı ile ilgili. Verinin kılıfı ile ilgili işlemler ve verinin kendisi ile
işlemler ve verinin kendisi ile ilgili işlemler.ilgili işlemler... Sizce bir kitabın
Sizce bir kitabın adının değiştirilmesiadının değiştirilmesi
Kitaplar listesi üstünde bir iz düşürme işlemi
Kitaplar listesi üstünde bir iz düşürme işlemi Kitap-
Kitap-ların kitap No’nu, Adını ve sayfa sayısını alıyoruz.
ların kitap No’nu, Adını ve sayfa sayısını alıyoruz.
Diğer sütunları
hangi gruba girer? Peki ödünç verme hangi gruba girer? Peki ödünç verme süre-sinin 15 günden fazla olamaması? Ya kitap sinin 15 günden fazla olamaması? Ya kitap yatlarının da saklanacağı bir sütunu Kitap yatlarının da saklanacağı bir sütunu Kitap tablosuna ekleme işlemi? İpucu: ilk işlem tablosuna ekleme işlemi? İpucu: ilk işlem DDL ile yapılmaz. Diğerlerinin ikisi aynı DDL ile yapılmaz. Diğerlerinin ikisi aynı gruptan işlemlerdir.
2. Bölüm
20
20
SQL Veri T
SQL Veri T
anımlama
anımlama
Dili
Dili
(Data Defnition Language)
(Data Defnition Language)
SQL’i yeterince bilmiyorsanız, bu
SQL’i yeterince bilmiyorsanız, bu
bölüm-den önce 3.Bölümü okumanız ve
den önce 3.Bölümü okumanız ve örnek-
örnek-leri bir veritabanı üstünde
leri bir veritabanı üstünde yapmanızyapmanız
önerilir
önerilir. Bundan sonra, bu . Bundan sonra, bu bölümü kav-bölümü
kav-ramanız kolaylaşacaktır. Ancak bir proje
ramanız kolaylaşacaktır. Ancak bir proje
geliştirirken öncelikle veriyi tanımlamak
geliştirirken öncelikle veriyi tanımlamak
gerekir. Bu nedenle bu bölüme öncelik
gerekir. Bu nedenle bu bölüme öncelik
verilmiştir.
verilmiştir.
Veri tanımlama dili, verinin ne
Veri tanımlama dili, verinin ne
olduğundan ziyade verinin tipi ile ilgili
olduğundan ziyade verinin tipi ile ilgili
tanımlamaları yapmak için
tanımlamaları yapmak için kullanılırkullanılır. “Bir. “Bir
veritabanında hangi tablolar yer alacak,
veritabanında hangi tablolar yer alacak,
bu tablolard
bu tablolarda a hangi alanlahangi alanlar yer alacr yer alacak ak
ve alanların türleri ne olacak, indeks
ve alanların türleri ne olacak, indeks yaya
da
da anahtar anahtar olacak olacak mı?” mı?” bunların hepsibunların hepsi
DDL ile
DDL ile belirlenirbelirlenir, değiştirilir veya olan, değiştirilir veya olan
bir tanımlamadan vazgeçilip tanımlama
bir tanımlamadan vazgeçilip tanımlama
silinebilir.
silinebilir.
Verita
Veritabanı üstünde herhangi banı üstünde herhangi birbir
tanımlamada bulunulacaksa, bu
tanımlamada bulunulacaksa, bu
tanım-lama CREATE deyimi ile oluşturulur.
lama CREATE deyimi ile oluşturulur.
DROP deyimi ile de tanımlamadan
DROP deyimi ile de tanımlamadan
vaz-geçilip silinir. AL
geçilip silinir. ALTER TER deyimi ise bir deyimi ise bir tanım-
tanım-lama üstünde değişiklik için
lama üstünde değişiklik için kullanılırkullanılır..
Bu bölümde ve takip eden
Bu bölümde ve takip eden
bölüm-lerde, örneklerden hemen
lerde, örneklerden hemen sonra ‘>sonra ‘>>’>’
konulduktan sonra bir mesaja yer
konulduktan sonra bir mesaja yer
veril-miştir. Bu mesaj SQL ifadesinin
miştir. Bu mesaj SQL ifadesinin
sonu-cunda ne olduğunu göstermektedir.
cunda ne olduğunu göstermektedir.
T
T
emel
emel
Veri Tipleri:
Veri Tipleri:
SQL’de yeni bir veri tipi tanımlayamayız.
SQL’de yeni bir veri tipi tanımlayamayız.
Sadece var olan veri tiplerini
Sadece var olan veri tiplerini kullanabi-
kullanabi-liriz. Burada hemen her
liriz. Burada hemen her yerde kullanılanyerde kullanılan
ortak veri tiplerine bir göz atacağız. Diğer
ortak veri tiplerine bir göz atacağız. Diğer
veri tipleri her
veri tipleri her bir VTYS’ye özel olarak bir VTYS’ye özel olarak
değişebilec
değişebileceğinden VTYS ile eğinden VTYS ile birlikte elebirlikte ele
alınması daha uygundur.
alınması daha uygundur.
Bazı VTYS’leri kullanıcının veri tipi
Bazı VTYS’leri kullanıcının veri tipi
tanımlamasına olanak sağlar ancak bu
tanımlamasına olanak sağlar ancak bu
SQL’in sunduğu bir özellik olmayıp VTYS
SQL’in sunduğu bir özellik olmayıp VTYS
tarafından sağlanan bir özelliktir.
tarafından sağlanan bir özelliktir.
Veritabanı:
Veritabanı:
Verita
Veritabanı, içerisinde banı, içerisinde tabloları barındırantabloları barındıran
veritabanı mimarisinin en
veritabanı mimarisinin en büyük ögesidirbüyük ögesidir..
Bir veritabanı şu şekilde açılır:
Bir veritabanı şu şekilde açılır:
CREATE DA
CREATE DATTABASE ABASE database_ndatabase_nameame
DİKKAT:
DİKKAT:
Bazı VTYS’lerde her bir SQL c
Bazı VTYS’lerde her bir SQL cümleciğininümleciğinin sonuna ‘;’ k
sonuna ‘;’ konulması istenir. Bu onulması istenir. Bu tür VTYS’lerde,tür VTYS’lerde, cümleciğin nerede bittiğini takip etmek cümleciğin nerede bittiğini takip etmek kulla-nıcıya bırakılmıştır. Öte yandan bazı V
nıcıya bırakılmıştır. Öte yandan bazı VTYS’lerdeTYS’lerde bir SQL cümleciğinin bittiğini belirtmek için bir SQL cümleciğinin bittiğini belirtmek için cümle sonu
cümle sonuna na ‘;’ ‘;’ koymaya gerek yoktur. koymaya gerek yoktur. BunuBunu VTYS’nin kendisi de
VTYS’nin kendisi de algılayabilmektediralgılayabilmektedir. Ancak. Ancak ‘;’ konulmasının çoğu VTYS’
‘;’ konulmasının çoğu VTYS’de sorun de sorun çıkarmadığıçıkarmadığı bir gerçektir. SYBASE’de ve ORACLE’da bir gerçektir. SYBASE’de ve ORACLE’da cümle-lerin sonuna ; konulması gerekirken, Microsoft lerin sonuna ; konulması gerekirken, Microsoft tabanlı sistemlerde bu türden bir zorunluluk tabanlı sistemlerde bu türden bir zorunluluk bulunmamaktadır.
bulunmamaktadır.
UYARI:
UYARI:
Bu komutu, MS Access üstünde
Bu komutu, MS Access üstünde
çalıştıramazsı-nız. Ancak MS SQLSer
nız. Ancak MS SQLServerver, Sybase gibi büyük ve, Sybase gibi büyük ve
orta ölçekli