• Tidak ada hasil yang ditemukan

Veritabani Programlama 1 - byte dergisi

N/A
N/A
Protected

Academic year: 2021

Membagikan "Veritabani Programlama 1 - byte dergisi"

Copied!
112
0
0

Teks penuh

(1)

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   a 

Yaşar Gözüdeli

Yaşar Gözüdeli

Eğitim dizisi

Eğitim dizisi

(2)
(3)

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

(4)
(5)

İÇİ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 Denition

(Data Denition

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

(6)
(7)

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

(8)
(9)

Ö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

(10)
(11)

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

(12)
(13)

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ı projelerin

karşı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 taraarı vardır. Ancak genel işlemlerde taraarı 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, zikselziksel hafızada bilgileri çeşitli özelliklerine göre hafızada bilgileri çeşitli özelliklerine göre

Bu Kitapta...

(14)
(15)

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

(16)
(17)
(18)
(19)

1. Bölüm

(20)
(21)

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.

(22)
(23)

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.

(24)
(25)

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.

(26)
(27)

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ı harerharer (İ,ı,Ğ,ğ,Ü,ü,Ş,ş,Ç,ç,Ö,ö,) 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ı

(28)
(29)

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

(30)
(31)

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ı

(32)
(33)

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.

(34)
(35)

2. Bölüm

(36)
(37)

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

(38)

Gambar

tablo arasındaki farkı bulmaya denir bulmaya denir . Bu . Bu işlem için de bir çok yöntem kullanılabilir.
tablo üstünde birlikte işlem yapabilmek  yapabilmek  yatar. Bu sayede verilerin tekrarlamasıyatar

Referensi

Dokumen terkait

mengadakan pengamatan dan pencatatan di SMP Muhammadiyah 8 Surakarta untuk mendapatkan data, data yang dikumpulkan dengan metode ini adalah letak dan keadaan

(2:174) Sesungguhnya orang-orang yang menyembunyikan apa yang telah diturunkan Allah, yaitu Al Kitab dan menjualnya dengan harga yang sedikit (murah), mereka

Polres Bima diperiksa dan didengar keterangannya sebagai Ahli Bahasa/Linguistik dalam perkara pidana penghinaan dan hujaran kebencian melalui media sosia facebook,

Penyempurnaan Kurikulum Tingkat Sa- tuan Pendidikan (KTSP) menjadi Kurikulum 2013 merupakan salah satu langkah nyatayang dilakukan pemerintah untuk mengembangkan

Penelitian ini bertujuan untuk mengetahui faktor-faktor yang mempengaruhi adopsi internet banking oleh penggunanya secara khusus untuk nasabah bank Mandiri, selain

Menimbang : a. bahwa dalam rangka pemberian pelayanan publik yang berkualitas dan mampu memberikan kepuasan bagi masyarakat merupakan kewajiban yang harus dilakukan oleh

Memberikan informasi dan kontribusi yang berguna untuk pengembangan penelitian perbankan terutama dalam hal pembiayaan murabahah dan tingkat likuiditas pada bank