VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu...

292
İSTANBUL ÜNİVERSİTESİ AÇIK VE UZAKTAN EĞİTİM FAKÜLTESİ VERİTABANLARINA GİRİŞ COĞRAFİ BİLGİ SİSTEMLERİ ÖĞR. GÖR. GÖKHAN TURAN İSTANBUL ÜNİVERSİTESİ AÇIK VE UZAKTAN EĞİTİM FAKÜLTESİ

Transcript of VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu...

Page 1: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

İSTANBUL ÜNİVERSİTESİ

AÇIK VE UZAKTAN EĞİTİM FAKÜLTESİ

VERİTABANLARINA GİRİŞ

COĞRAFİ BİLGİ SİSTEMLERİ

ÖĞR. GÖR. GÖKHAN TURAN

İSTANBUL ÜNİVERSİTESİ

AÇIK VE UZAKTAN EĞİTİM FAKÜLTESİ

Page 2: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

İSTANBUL ÜNİVERSİTESİ

AÇIK VE UZAKTAN EĞİTİM FAKÜLTESİ

COĞRAFİ BİLGİ SİSTEMLERİ ÖN LİSANS PROGRAMI

VERİTABANLARINA GİRİŞ

Öğr. Gör. Gökhan TURAN

Page 3: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

I

ÖNSÖZ

Bilgi ve teknolojisinin gelişimi ile birlikte uygulanmaya başlanan Coğrafi Bilgi Sistemleri

(CBS), birçok alanda, takip ve planlama için kullanılmaktadır. CBS en genel tanımıyla, her türlü

veriyi birbirleriyle ve coğrafi konumları ile ilişkilendirerek bilgisayar ortamında toplamak ve bunları

grafik ya da basılı olarak izlemektir.

Coğrafi bilgi sistemleri ilişkisel veritabanı yönetim sistemleri üzerinde kurulur. Bu sayede

mekânsal olmayan verileri de mekânsal veriler ile ilişkilendirerek yönetebilirler. CBS projelerinin

veritabanı yönetim sistemleri üzerinde yönetilmesi sayesinde; merkezi kontrol, veri tekrarının

azaltılması ve her ortamdan problemsiz veri paylaşımı mümkün hale gelir.

CBS projeleri için veritabanı tasarımı ve bu tasarım içerisindeki ilişkiler önemlidir. Her

projenin amacına, büyüklüğüne ve projeden beklentilere göre farklı veritabanı tasarım gereksinimleri

vardır. CBS proje veritabanı tasarımı yapılırken amaca uygun tasarımın gerçekleştirilmesi büyük

önem taşır, proje ihtiyaçlarını karşılayamayan bir tasarım sonuçta verimsiz bir veri çöplüğüne

dönüşecek, çok büyük geri dönüş maliyetleri oluşturabilecektir.

İstanbul Üniversitesi, Açık ve Uzaktan Eğitim Fakültesi, Coğrafi Bilgi Sistemleri Ön Lisans

Programı öğrencilerine yararlanabilecekleri ve her zaman başvurabilecekleri “Veritabanlarına Giriş” dersi

için ders notu kaynağı olmuştur. Bu kaynaktan öğrencilik hayatınızda faydalanabilmeniz ve bu bilgileri

meslek hayatınızda da kullanmanız dileklerimle...

Öğr. Gör. Gökhan TURAN 1 Temmuz 2019

Page 4: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

II

İÇİNDEKİLER

ÖNSÖZ ...................................................................................................................... I

İÇİNDEKİLER ....................................................................................................... II

KISALTMALAR......................................................................................................X

YAZAR NOTU ....................................................................................................... XI

1. VERİTABANI NEDİR? ....................................................................................... 1

Bu Bölümde Neler Öğreneceğiz? ............................................................................ 2

Bölüm Hakkında İlgi Oluşturan Sorular .................................................................. 3

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................... 4

Anahtar Kavramlar ................................................................................................. 5

Giriş ....................................................................................................................... 6

1.1. Veritabanının Faydaları Nelerdir? .................................................................... 7

1.2. Veritabanının Riskli Yönleri Nelerdir?............................................................. 7

1.3. Veritabanı Örnekleri ........................................................................................ 8

1.4. Veritabanı Uygulama Türleri Nelerdir? ............................................................ 8

1.5. Veritabanı Bileşenleri Nelerdir? ....................................................................... 9

1.5. Veritabanı Yöneticiliği Nedir? ....................................................................... 10

1.6. Bir Veritabanı Yöneticisinin Görevleri Nelerdir? ........................................... 10

Uygulamalar ......................................................................................................... 11

Uygulama Soruları ............................................................................................... 12

Bu Bölümde Ne Öğrendik Özeti ........................................................................... 13

Bölüm Soruları ..................................................................................................... 14

2. İLİŞKİSEL VERİTABANI TASARIMI VE NORMALİZASYON ................. 17

Bu Bölümde Neler Öğreneceğiz? .......................................................................... 18

Bölüm Hakkında İlgi Oluşturan Sorular ................................................................ 19

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ................................... 20

Page 5: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

III

Anahtar Kavramlar ............................................................................................... 21

Giriş ..................................................................................................................... 22

2.1. İlişkisel Veritabanı Sistemleri Nelerdir? ......................................................... 23

2.2. Bazı Veritabanı Yönetim Sistemlerinin Karşılaştırmaları ............................ 23

2.3. İhtiyaca Göre Veritabanı Seçimi ................................................................. 25

2.4. Veritabanı dilleri nelerdir? .......................................................................... 25

2.5. Veritabanı Yönetim Sistemlerinin Avantajları Nelerdir? ............................. 25

2.6 Normalizasyon ............................................................................................ 26

Uygulamalar ......................................................................................................... 27

Uygulama Soruları ............................................................................................... 28

Bu Bölümde Ne Öğrendik Özeti ........................................................................... 29

Bölüm Soruları ..................................................................................................... 30

3. VERİTABANI KAVRAMLARI ........................................................................ 33

Bu Bölümde Neler Öğreneceğiz? .......................................................................... 34

Bölüm Hakkında İlgi Oluşturan Sorular ................................................................ 35

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ................................... 36

Anahtar Kavramlar ............................................................................................... 37

Giriş ..................................................................................................................... 38

3.1. Tablo (Table) ................................................................................................. 39

3.2. Satır (Rows) .................................................................................................. 39

3.3. Sütun (Column) ............................................................................................. 39

3.4. Primary Key (Birincil Anahtar) ...................................................................... 40

3.5. Unique Key (Tekil Anahtar) .......................................................................... 40

3.6. Foreing Key (Yabancı Anahtar) ..................................................................... 41

3.7. Zorlayıcı (Constraint) .................................................................................... 41

3.8. Indeks (Index)................................................................................................ 42

3.9. View (Görüntü) ............................................................................................. 43

Page 6: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

IV

3.10. İlişkilendirme (Joining) ................................................................................ 44

3.11. Veritabanı İlişki Türleri ............................................................................... 45

Uygulamalar ......................................................................................................... 48

Uygulama Soruları ............................................................................................... 49

Bu Bölümde Ne Öğrendik Özeti ........................................................................... 50

Bölüm Soruları ..................................................................................................... 51

4. ACCESS VERİTABANINDA ALAN VE ÖZELLİKLERİ ............................. 53

Bu Bölümde Neler Öğreneceğiz? .......................................................................... 54

Bölüm Hakkında İlgi Oluşturan Sorular ................................................................ 55

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ................................... 56

Anahtar Kavramlar ............................................................................................... 57

Giriş ..................................................................................................................... 58

4.1. Access Veritabanı Veri Türleri....................................................................... 59

4.2. İlişkilerde Ve Birleştirmelerde Alan Türleri ................................................... 62

4.3. Veri Türlerini Karşılaştırma ........................................................................... 62

Uygulamalar ......................................................................................................... 64

Uygulama Soruları ............................................................................................... 65

Bu Bölümde Ne Öğrendik Özeti ........................................................................... 66

Bölüm Soruları ..................................................................................................... 67

5. ACCESS VERİTABANINDA TABLO VE TABLO İLİŞKİLENDİRMELERİ

............................................................................................................................................ 69

Bu Bölümde Neler Öğreneceğiz? .......................................................................... 70

Bölüm Hakkında İlgi Oluşturan Sorular ................................................................ 71

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ................................... 72

Anahtar Kavramlar ............................................................................................... 73

Giriş ..................................................................................................................... 74

5.1. Yeni Bir Veritabanında Yeni Bir Tablo Oluşturmak....................................... 74

Page 7: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

V

5.2. Önceden Oluşturulmuş Veritabanında Yeni Bir Tablo Oluşturmak .............. 77

5.3. Dış Verileri Alarak Yeni Bir Tablo Oluşturmak .......................................... 78

5.4. Tabloda Alan Ekleme Alan Çıkarma .............................................................. 78

5.5. Oluştur Sekmesi Altındaki Bölümler.............................................................. 80

5.6. Dış Veri Sekmesi Altındaki Bölümler ............................................................ 81

5.7. Veritabanında Tablo ve Tablo İlişkilendirmeleri ............................................ 81

5.8. İlişki Türleri .................................................................................................. 82

Uygulamalar ......................................................................................................... 85

Uygulama Soruları ............................................................................................... 86

Bu Bölümde Ne Öğrendik Özeti ........................................................................... 87

Bölüm Soruları ..................................................................................................... 88

6. SQL - YAPISAL SORGULAMA DİLİ ............................................................. 90

Bu Bölümde Neler Öğreneceğiz? .......................................................................... 91

Bölüm Hakkında İlgi Oluşturan Sorular ................................................................ 92

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ................................... 93

Anahtar Kavramlar ............................................................................................... 94

Giriş ..................................................................................................................... 95

6.1. SQL Dilinin Yapısı ........................................................................................ 96

6.2. SQL Deyimleri .............................................................................................. 96

6.2.1. DDL (Data Definition Language) Veri Tanımlama Dili .............................. 97

6.2.2. DML (Data Manuplation Language) Veri Düzenleme Dili .......................... 99

Uygulamalar ........................................................................................................106

Uygulama Soruları ..............................................................................................107

Bu Bölümde Ne Öğrendik Özeti ..........................................................................108

Bölüm Soruları ....................................................................................................109

7. ACCESS'TE SQL FONKSİYONLARI ............................................................111

Bu Bölümde Neler Öğreneceğiz? .........................................................................112

Page 8: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

VI

Bölüm Hakkında İlgi Oluşturan Sorular ...............................................................113

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................114

Anahtar Kavramlar ..............................................................................................115

Giriş ....................................................................................................................116

7.1. SQL’de Kullanılan İşaretler ..........................................................................117

7.2. SQL’de Kullanılan Komutlar ........................................................................119

7.3. SQL Fonksiyonları .......................................................................................127

7.4. Access Veritabanında Kullanılan Fonksiyonlar .............................................134

Uygulamalar ........................................................................................................138

Uygulama Soruları ..............................................................................................139

Bu Bölümde Ne Öğrendik Özeti ..........................................................................140

Bölüm Soruları ....................................................................................................141

8. ACCESS'TE SORGU TASARIMI UYGULAMASI .......................................143

Bu Bölümde Neler Öğreneceğiz? .........................................................................144

Bölüm Hakkında İlgi Oluşturan Sorular ...............................................................145

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................146

Anahtar Kavramlar ..............................................................................................147

Giriş ....................................................................................................................148

8.1. Access Veritabanı İle SQL Uygulaması ........................................................149

Uygulamalar ........................................................................................................154

Uygulama Soruları ..............................................................................................155

Bu Bölümde Ne Öğrendik Özeti ..........................................................................156

Bölüm Soruları ....................................................................................................157

9. MSSQL SERVER VERİTABANINDA ALAN VE ÖZELLİKLERİ ..............159

Bu Bölümde Neler Öğreneceğiz? .........................................................................160

Bölüm Hakkında İlgi Oluşturan Sorular ...............................................................161

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................162

Page 9: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

VII

Anahtar Kavramlar ..............................................................................................163

Giriş ....................................................................................................................164

9.1. MSSQL Server Veritabanı Veri Türleri .........................................................165

9.2. Veri Türlerini Karşılaştırma ..........................................................................168

Uygulamalar ........................................................................................................170

Uygulama Soruları ..............................................................................................171

Bu Bölümde Ne Öğrendik Özeti ..........................................................................172

Bölüm Soruları ....................................................................................................173

10. MSSQL SERVER VERİTABANINDA TABLO VE TABLO

İLİŞKİLENDİRMELERİ ................................................................................................175

Bu Bölümde Neler Öğreneceğiz? .........................................................................176

Bölüm Hakkında İlgi Oluşturan Sorular ...............................................................177

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................178

Anahtar Kavramlar ..............................................................................................179

Giriş ....................................................................................................................180

10.1. Yeni Bir Veritabanında Kod İle Yeni Bir Tablo Oluşturmak .......................181

10.2. Veritabanında Arayüz İle Yeni Bir Tablo Oluşturmak .................................182

10.3. Tablo İle İlgili Bazı Özellikler ....................................................................183

Uygulamalar ........................................................................................................189

Uygulama Soruları ..............................................................................................190

Bu Bölümde Ne Öğrendik Özeti ..........................................................................191

Bölüm Soruları ....................................................................................................192

11. MSSQL SERVER'DA FONKSİYONLAR .....................................................194

Bu Bölümde Neler Öğreneceğiz? .........................................................................195

Bölüm Hakkında İlgi Oluşturan Sorular ...............................................................196

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................197

Anahtar Kavramlar ..............................................................................................198

Page 10: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

VIII

Giriş ....................................................................................................................199

11.1. SQL’de Kullanılan İşaretler ........................................................................200

11.2. SQL’de Kullanılan Komutlar ......................................................................201

11.3. SQL Fonksiyonları......................................................................................209

Uygulamalar ........................................................................................................216

Uygulama Soruları ..............................................................................................217

Bu Bölümde Ne Öğrendik Özeti ..........................................................................218

Bölüm Soruları ....................................................................................................219

12. MSSQL SERVER VERİ İŞLEMLERİ ..........................................................221

Bu Bölümde Neler Öğreneceğiz? .........................................................................222

Bölüm Hakkında İlgi Oluşturan Sorular ...............................................................223

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................224

Anahtar Kavramlar ..............................................................................................225

Giriş ....................................................................................................................226

12.1. View ...........................................................................................................227

12.2. Stored Procedure.........................................................................................228

12.3. Trigger Kullanımı .......................................................................................233

12.3.1. Trigger Ne Zaman Kullanılır? ..................................................................233

12.3.2. Trigger Türleri .........................................................................................233

12.3.3. Trigger Oluşturmak ..................................................................................234

12.3.4. Trigger Yönetimi .....................................................................................236

12.3.5. Trigger Uygulamaları ...............................................................................237

Uygulamalar ........................................................................................................240

Uygulama Soruları ..............................................................................................241

Bu Bölümde Ne Öğrendik Özeti ..........................................................................242

Bölüm Soruları ....................................................................................................243

13.MSSQL SERVER'DA SORGU TASARIMI UYGULAMASI .......................246

Page 11: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

IX

Bu Bölümde Neler Öğreneceğiz? .........................................................................247

Bölüm Hakkında İlgi Oluşturan Sorular ...............................................................248

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................249

Anahtar Kavramlar ..............................................................................................250

Giriş ....................................................................................................................251

13.1. MSSQL Server Veritabanı İle SQL Uygulaması .........................................252

Uygulamalar ........................................................................................................256

Uygulama Soruları ..............................................................................................257

Bu Bölümde Ne Öğrendik Özeti ..........................................................................258

Bölüm Soruları ....................................................................................................259

14. VERİTABANI TASARIMI VE YÖNETİMİ UYGULAMASI .....................261

Bu Bölümde Neler Öğreneceğiz? .........................................................................262

Bölüm Hakkında İlgi Oluşturan Sorular ...............................................................263

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri ..................................264

Anahtar Kavramlar ..............................................................................................265

Giriş ....................................................................................................................266

14.1. MSSQL Server Üzerinde Veritabanı Tasarımı ve SQL Sorgu Uygulaması ..267

14.2. Access Veritabanına Alan Ekleme ve Toplu Veri Girişi ..............................270

14.3. Access Veritabanında Çeşitli Uygulamalar .............................................273

Uygulamalar ........................................................................................................274

Uygulama Soruları ..............................................................................................275

Bu Bölümde Ne Öğrendik Özeti ..........................................................................276

Bölüm Soruları ....................................................................................................277

KAYNAKÇA .........................................................................................................279

Page 12: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

X

KISALTMALAR

CBS: Coğrafi Bilgi Sistemleri

VTYS: Veritabanı Yönetim Sistemleri

VT: Veritabanı

SQL: Structered Query Language (Yapısal Sorgulama Dili)

DDL (Data Definition Language): Veri tanımlama deyimleri.

DML (Data Manuplation Language) : Veri işleme dili.

DCL (Data Control Language): Veri kontrol dili.

Page 13: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

XI

YAZAR NOTU

Veritabanlarına Giriş dersi veritabanı konularını içerdiği gibi bu konuların daha iyi

anlaşılması için bol bol uygulamalar içermektedir. Bu dersin iyi anlaşılması için uygulamaları

bilgisayarınızda tekrarlamanız iyi olacaktır. Teorik konularda ya da uygulamalarda anlaşılmayan

konu olursa [email protected] eposta adresi üzerinden bana ulaşıp sorularınızı

yöneltebilirsiniz.

Öğr. Gör. Gökhan TURAN

1 Temmuz 2019

Page 14: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

1

1. VERİTABANI NEDİR?

Page 15: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

2

Bu Bölümde Neler Öğreneceğiz?

1.1. Veritabanı Tanımı

1.2. Veritabanının Faydaları

1.3. Veritabanının Riskli Yönleri

1.4. Veritabanına Örnek Projeler

1.5. Veritabanı Uygulama Türleri

1.6. Veritabanı Bileşenleri

1.7. Veritabanı Yöneticisinin Görevleri

Page 16: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

3

Bölüm Hakkında İlgi Oluşturan Sorular

1. Veritabanı Nedir?

2. Veritabanının Faydaları Nelerdir?

3. Veritabanının Riskli Yönleri Nelerdir?

4. Veritabanına Örnek Projeler Neler Olabilir?

5. Veritabanı Uygulama Türleri Nelerdir?

6. Veritabanı Bileşenleri Nelerdir?

7. Veritabanı Yöneticisinin Görevlerini Sıralayınız.

Page 17: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

4

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

Veritabanı Veritabanını kavrayarak tarif

eder ve örneklendirebilir.

Ders notları, Sunumlar,

Kaynaklar

Veritabanının Faydaları Kavrama Okuma- Anlama Ders

notları, Sunumlar, Kaynaklar

Veritabanı Yöneticisinin

Görevleri

Veritabanının Yöneticisinin

Görevlerini Kavrar ve Bilir

Okuma- Anlama Ders

notları, Sunumlar, Kaynaklar

Page 18: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

5

Anahtar Kavramlar

Veritabanı, Veritabanının Faydaları, Veritabanı Uygulama Türleri

Page 19: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

6

Giriş

Veritabanı (Database); bilgilerin tutulduğu, saklandığı ve gerektiğinde kullanılmak

üzere çağrıldığı düzenli bilgi topluluğudur. Bilgisayar terminolojinde ise sistematik erişim

imkânı olan, yönetilebilir, güncellenebilir, taşınabilir, birbirleri arasında tanımlı ilişkiler

bulunabilen veriler kümesi anlamına gelmektedir.

Şekil 1: Veritabanı ve istemciler

Veritabanı, en geniş anlamıyla; birbiriyle ilişkili verilerin tekrara yer vermeden, çok

amaçlı kullanımına olanak sağlayacak şekilde depolanması olarak tanımlanabilir. Yine

veritabanı 1 , herhangi bir konuda birbiriyle ilişkili ve düzenli bilgiler topluluğu olarakta

tanımlanabilir.

1 Veri Tabanı Yönetim Sistemleri I, Turgut ÖZSEVEN, Murathan Yayınevi, 2010, Trabzon.

Page 20: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

7

1.1. Veritabanının Faydaları Nelerdir?

1. Veri tekrarları ortadan kaldırılır ya da en aza indirilir.

2. Bellek alanı israfı önlenir.

3. Standart bir sorgu dili kullanmak mümkündür.

4. Veri bütünlüğünün bozulması önlenir.

5. Yanlışlıkların giderilmesi ve tutarsız (hatalı) bilgilerin girişi engellenir.

6. Verinin paylaşımı sağlanır. Aynı veri tüm kolaylığıyla diğer kullanıcılar tarafından da

kullanılması sağlanır.

7. Bilgilerin standartlaşması sağlanır. Belli standartlar varsa bu standartlara uyulması gerekir.

Ayrıca yeni standartlaşmalara doğru adımların atılması sağlanmış olunur.

Veritabanının faydalarını madde halinde anlatmak gerekirse:

• Veri Tekrarı: Veri tekrarlarını ortadan kaldırılır ya da en aza indirilir.

• Veri Tutarlılığı: Veri değişikliklerinin doğrudan veritabanında yapılması, farklı

ortamlarda farklı verilerin yer almamasını engeller aynı veriyi tekrar kaydetmeden

istenildiği kadar kullanılır.

• Veri Paylaşımı: İstediğiniz veriyi istediğiniz zaman paylaşımda bulunabilirsiniz.

• Veri Bağımsızlığı: Veritabanı yönetim sistemi verilerin yapısı, yönetimi ile ilgilenir,

kullanıcı bunlarla ilgilenmez.

• Veri Bütünlüğü: Bir tabloda işlem yapıldığında, bu tablo ile ilişkili diğer tablolarda da

işlem yapılır.

• Veri Güvenliği: Verilerin değişimini herkes yapamaz yetkisi olan kimseler yapabilir.

Bundan dolayı verilerin silinmesi ve kaybolma riski azalır.

1.2. Veritabanının Riskli Yönleri Nelerdir?

1. Veritabanı sistemi iyi tasarlanmadığı taktirde bazı bileşenler iyi bir şekilde oluşturulmamışsa

sistem, dosya sistemine göre çok daha kötü çalışabilir.

2. Veritabanı sisteminin kurulumu ve bakımı klasik dosya sistemine göre pahalı olabilir.

Page 21: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

8

1.3. Veritabanı Örnekleri

1. Kütüphane – Kitap Bilgileri, Personel Bilgileri

2. Hastane – Hasta, Doktor, Tedavi, Araç-Gereç, Mali Bilgiler

3. Şirket – Müşteri, Ürün, Satış, Ödeme, Teslimat Bilgileri

4. Banka – Müşteri, Mevduat, Kredi Kartı, Kredi Bilgileri

5. Üniversite – Öğrenci İşleri Bilgi Sistemi (Öğrenci Kişisel Bilgileri Ve Ders, Not Bilgileri)

Şekil 2: Veritabanı ve Bağlantılar

1.4. Veritabanı Uygulama Türleri Nelerdir?

Veritabanı uygulamaları iki temel türe ayrılabilir. Bunlar:

1. Düz Dosya Veritabanı: Bu tür programlarda tüm veritabanı tek bir tabloya sığdırılmalıdır.

Bu birkaç kayıtta ortak olan herhangi bir bilginin her kayıtta tekrarlanacağı anlamına gelir.

Word, Excel bu tür programlara örnektir.

Şekil 3: Düz Dosya Veritabanı Gösterimi

Page 22: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

9

2. İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında

ilişkiler oluşturulur. Bir ilişki, bir tabloya, başka bir tablodaki kaydı bağlamamızı sağlar. Bu

şekilde veriler daha az yer kaplar ve işlemlerimizi kolaylaştırır.

Şekil 4: İlişkisel Veritabanı Gösterimi

1.5. Veritabanı Bileşenleri Nelerdir?

• Tablolar

• Sorgular

• Formlar

• Raporlar

• Veri Erişim Sayfaları

Şekil 5: Veritabanı Bileşenleri

Page 23: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

10

1.5. Veritabanı Yöneticiliği Nedir?

Günümüzde veritabanı sistemleri, bankacılıktan otomotiv sanayisine, sağlık bilgi

sistemlerinden şirket yönetimine, iletişim sistemlerinden hava taşımacılığına kadar geniş bir

yelpazede kullanılan bilgisayar sistemlerinin veri alt yapısını oluşturmaktadır.

Veritabanı fiziksel olarak bilgileri tutarken mantıksal bir hiyerarşiye de sahiptir.

Veritabanı sistemlerinin kurulması, konfigürasyonun yapılması, tasarlanması, sorgulanması ve

güvenliğinin sağlanması karmaşık bir hal almıştır. Bu karmaşıklık, veritabanı sistemlerinin alt

parçalarının oluşturulması ile çözülmeye çalışılmıştır. Bu bağlamda veritabanı yöneticiliği ve

veritabanı programcılığı kavramları ortaya çıkmıştır.

Veritabanı yöneticiliği, veritabanı sistemlerinin kurulması, konfigürasyonu ve güvenliği

ile ilgili işleri yaparken; veritabanı programcıları ise veritabanının mantıksal tasarımı ve

sorgulanması işlerini üstlenmiştir.

1.6. Bir Veritabanı Yöneticisinin Görevleri Nelerdir?

1. Veritabanı yazılımının kurulması ve güncellemeler.

2. Veritabanı oluşturulması.

3. Veritabanı başlatma/durdurma.

4. Kullanıcıları ekleme ve yetkilendirme.

5. Veritabanı yedekleme ve yedekten geri dönme.

6. Veritabanı performans ayarları.

Şekil 6: Veritabanı Yöneticisi ve Tablolar

Page 24: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

11

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Page 25: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

12

Uygulama Soruları

1. Veritabanının tanımını yapınız.

2. Veritabanının faydalaları nelerdir? Açıklayınız.

3. Veritabanının Riskli Yönleri Nelerdir? Açıklayınız.

4. Bir kütüphane veritabanında hangi veriler saklanabilir? Açıklayınız.

5. Veritabanı bileşenleri nelerdir? Açıklayınız.

Page 26: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

13

Bu Bölümde Ne Öğrendik Özeti

Teknoloji çağında veritabanlarının hemen her yerde ve her kurumda olduğunu, bu

sayede verileri düzenli saklayabildiğimizi, daha sonra istediğimizde bu bilgilere rahat bir

şekilde erişebildiğimizi, Veritabanının faydalarını, veritabanı bileşenlerini öğrenmiş olduk.

Page 27: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

14

Bölüm Soruları

1. Veritabanı ile ilgili aşağıdaki kavramlardan hangisi yanlıştır?

A. Sistematik olarak verilere erişilebilir

B. Veriler yönetilebilir

C. Veriler güncellenebilir

D. Veriler taşınabilir

E. Veriler silinemez

2. Aşağıdakilerden hangisi veritabanı faydalarından değildir?

A. Veri tekrarları ortadan kaldırılır ya da en aza indirilir

B. Bellek alanı israfı önlenir

C. Veri paylaşmaya, diğer kullanıcılara veritabanını paylaşıma açmaya izin vermez

D. Veri bütünlüğünün bozulması önlenir

E. Standart bir sorgu dili kullanmak mümkündür.

3. Aşağıdakilerden hangisi bir kurumun veritabanında saklanması gereken bilgiler olamaz?

A. Kütüphane – Kitap Bilgileri, Personel Bilgileri

B. Hastane – Hastanın Sınav Notları, Başarı Durumu

C. Şirket – Müşteri, Ürün, Satış, Ödeme, Teslimat Bilgileri

D. Banka – Müşteri, Mevduat, Kredi Kartı, Kredi Bilgileri

E. Üniversite – Öğrenci İşleri Bilgi Sistemi (Öğrenci Kişisel Bilgileri Ve Ders, Not Bilgileri)

4. Bir kişiye, nesneye ya da ürüne ait detaylı verilerin bir düzen çerçevesinde saklandığı ortamlara ne denir?

A. Veritabanı

B. Dosya

C. Klasör

D. Grafik Programı

E. Kelime İşlemci Programı

Page 28: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

15

5. Aşağıdakilerden hangisi veritabanının riskli yönlerindendir?

A. Verilerin güncelleştirilebilir olması

B. Veritabanına yeni veri eklenebilmesi

C. Verilerin düzenli saklanması

D. Verilerin silinebilir olması

E. Veritabanının yedeği alınmadığında veritabanının silinmesi halinde tüm verilerin kaybolabilmesi

6. “İlişkisel veritabanına” aşağıdaki programlardan hangisi örnek olarak verilemez?

A. Word

B. Informix

C. MS SQL

D. MY SQL

E. Oracle

7. Aşağıdakilerden hangisi veritabanı bileşenlerinden değildir?

A. Tablolar

B. Sorgular

C. Formlar

D. Raporlar

E. Slaytlar

8. Aşağıdakilerden hangisi veritabanı yöneticisinin görevlerinden değildir?

A. Veritabanı oluşturulması

B. Veritabanı başlatma/durdurma

C. Veritabanında sorgu çalıştırma

D. Veritabanı performans ayarları

E. Veritabanı yedekleme ve yedekten geri dönme

Page 29: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

16

9. Aşağıdakilerden hangisi veritabanı programı ile oluşturulamaz?

A. Tablo

B. Sorgu

C. Form

D. Sunum

E. Rapor

10. Aşağıdakilerden hangisi veritabanı için yanlıştır?

A. Düzenli bilgi topluluğudur

B. Veri tekrarına yer vermez

C. Birbiriyle ilişkili verileri barındırır

D. Veri tekrarına yer verir

E. Veriler Güncellenebilir

Cevaplar

1)E 2)C 3)B 4)A 5)E 6)A 7)E 8)C 9)D 10)D

Page 30: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

17

2. İLİŞKİSEL VERİTABANI TASARIMI VE NORMALİZASYON

Page 31: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

18

Bu Bölümde Neler Öğreneceğiz?

2.1. İlişkisel Veritabanı

2.2. İlişkisel Veritabanı Yönetim Sistemleri

2.3 Bazı Veritabanı Yönetim Sistemlerinin Karşılaştırmaları

2.4. Veritabanı Dilleri

2.5. Veritabanı Yönetim Sistemlerinin Avantajları

2.6 Normalizasyon

Page 32: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

19

Bölüm Hakkında İlgi Oluşturan Sorular

1. İlişkisel Veritabanı Nedir?

2. İlişkisel Veritabanı Yönetim Sistemleri Nelerdir?

3. Veritabanı Dilleri Nelerdir?

4. Veritabanı Yönetim Sistemlerinin Avantajları Nelerdir?

5. Normalizasyon Nedir?

Page 33: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

20

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

İlişkisel Veritabanı İlişkisel Veritabanını

kavrayarak tarif eder ve

örneklendirebilir

Ders notları, Sunumlar,

Kaynaklar

İlişkisel Veritabanı Yönetim

Sistemleri

Kavrama Okuma- Anlama Ders

notları, Sunumlar, Kaynaklar

İlişkisel Veritabanı Yönetim

Sistemlerinin Faydaları

İlişkisel veritabanı yönetim

sistemlerinin faydalarını

kavrar

Okuma- Anlama Ders

notları, Sunumlar, Kaynaklar

Normalizasyon Normalizasyonu

Gerçekleştirme

Okuma- Anlama Ders

notları, Sunumlar, Kaynaklar

Page 34: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

21

Anahtar Kavramlar

İlişkisel Veritabanı, Access, MS SQL, Oracle, My SQL, PostgreSQL, SQL,

Normalizasyon

Page 35: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

22

Giriş

İlişkisel veritabanı; organize edilmiş verilerin tablolarda saklanması ve bu tablolar

arasında kurulan bağ ile oluşan veritabanı çeşididir. Tablolar satır ve sütunlardan oluşur,

üzerinde verileri saklayabilir, ekleyebilir, silebilir ve güncelleyebiliriz. Her satır aynı sütunlara

yani alanlara sahiptir. Her bir sütun o tabloda bulunması gereken ortak özellikleri yansıtır.

Tablo üzerindeki her bir satıra ise “Kayıt” denir. Örneğin aşağıdaki tabloda “Plaka” alanında

her kayıt için araçların plakaları bulunmaktadır. Her bir satırda bir araca yönelik bilgileri

tutmaktadır.

Şekil 7: Tablo ve Kayıtlar

Tablolar arasında kurulan ilişkiler ile verileri organize bir şekilde işlemek mümkündür.

İlişkiler, bir sorgu oluşturduğumuzda bir çok bilgiye aynı anda ulaşmamızı sağlar. Aşağıdaki

resimde birçok tablo arasında bir veya birden çok ilişki olduğu görülmektedir.

Şekil 8: İlişkili Tablolar

Page 36: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

23

2.1. İlişkisel Veritabanı Sistemleri Nelerdir?

1. MS Access (Microsoft Access)

2. MS SQL Server (Microsoft SQL Server)

3. My SQL

4. PostgreSQL

5. Oracle

6. Sybase

7. Berkeley

8. Firebird

9. IBM DB/2

10. Informix

11. Progress

Şekil 9: İlişkisel Veritabanı Sistemleri

2.2. Bazı Veritabanı Yönetim Sistemlerinin Karşılaştırmaları

MS Access

• Microsoft Office ürünüdür.

• Küçük ölçekli uygulamalar içindir.

• Tablo başına 2 GB’ a kadar veri depolayabilir.

• Aynı anda 255 bağlantıya izin verebilir.

• Windows işletim sistemleri dışında kullanılamaz.

Page 37: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

24

MS SQL Server

• Microsoft firmasına ait veritabanı sunucu yazılımıdır.

• Orta ve büyük ölçekli işlemler için kullanılır.

• Kullanım kolaylığı, güvenilirliği, işlem gücü yüksektir.

• Tablo başına 4 TB veri depolama.

• “Transaction logging”, “trigger” ve “stored procedure” özelliklerine sahiptir.

• Sadece Windows üzerinde çalışır (platform bağımlı).

MySQL

• Açık kaynak kodludur.

• Windows/Unix/Linux işletim sistemlerinde çalışır. (Platform bağımsız)

• Tablo başına 4 TB veri depolayabilir.

• Web uygulamalarında PHP ile çok sık kullanılır.

Oracle

• Oracle firması tarafından geliştirildi.

• Dünyanın en güçlü ve en güvenilir veritabanı olarak gösterilir.

• Birçok işletim sistemi üzerinde kullanılabilir.

• Çok yüksek ölçekli uygulamalar için tercih edilir.

• Oluşturulabilecek tablo sayısı sınırsızdır.

• Çok yüksek maliyet...!

IBM DB2

• IBM tarafından geliştirilmiştir.

• Windows/Unix/Linux işletim sistemlerinde çalışır.

• “Transaction logging”, “trigger”ve “stored procedure” özelliklerine sahiptir.

Informix

• Illustra firması tarafından geliştirildi.

• 2001 yılında IBM Informix’ i satın aldı.

• Ücretli ve güçlü bir veritabanı.

• Orta ölçekli işletmelerin yükünü kaldırabilecek kapasitedir.

Page 38: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

25

PostgreSQL

• UNIX, Linux ve Windows platformlarının hepsinde çalışır.

• Ücretsiz, açık kaynak kodlu.

• Çok güçlü işlem yapısı.

• Tablo başına 64 TB veri depolama.

• “Transaction”, “trigger” ve “stored procedure” özelliklerine sahiptir.

2.3. İhtiyaca Göre Veritabanı Seçimi

• Basit Ölçekli İşlemlerde: MS Access

• Orta Ölçekli İşlemlerde: MS SQL Server

• Büyük Ölçekli İşlemlerde: Oracle

2.4. Veritabanı dilleri nelerdir?

• Sql

• Pl/Sql

• Oql

Veritabanı Dilleri (SQL gibi) yapısal sorgulama dilleridir. Veritabanları için geliştirilmiştir.

Programcının gerek veri üzerinde işlem gerekse veri tanımlamasını kolaylaştıran bir dildir. Tüm

yazılım geliştiriciler SQL öğrenmek zorundadır. SQL bir programlama dili değil, sorgulama

dilidir.

2.5. Veritabanı Yönetim Sistemlerinin Avantajları Nelerdir?

1. Veri Tekrarı (“Data Redundancy”): Azaltılır ya da yok edilir.

2. Veri Tutarlılığı (“Data Consistency”): Aynı verinin değişik yerlerde birkaç kopyasının

bulunması “bakım” zorluluğu getirir. Bir yerde güncellenen bir adres bilgisi başka yerde

güncellenmeden kalabilir ve bu durum veri tutarsızlığına (“data inconsistency”) yol açar.

3. Veri Paylaşımı / Eşzamanlılık (“Concurrency”): Veritabanı yönetim sistemi (VTYS)

kullanılmadığı durumlarda veriye sıralı erişim yapılır. Yani birden çok kullanıcı aynı anda

veriye erişemez. Bir VTYS’de ise verinin tutarlılığını ve bütünlüğünü bozmadan aynı

veritabanlarına çok kısa zaman dilimlerinde yüzlerce, binlerce erişim yapılabilir.

Page 39: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

26

4. Veri Bütünlüğü (“Data Integrity”): Bir tablodan bir kayıt silinirse diğer tüm tablolardan

da silinmelidir.

5. Veri Güvenliği (“Data Securiy”): Verinin isteyerek ya da yanlış kullanım sonucu

bozulmasının önlenmesini sağlayan mekanizmalar mevcuttur. Veritabanına girmek için

kullanıcı adı ve şifreyle korumanın yanı sıra kişiler sadece kendilerini ilgilendiren tabloları

ya da tablo içinde belirli kolonları görebilir.

6. Veri Bağımsızlığı (“Data Independence”): Kullanıcı kullandığı verilerin yapısı ve

organizasyonu ile ilgilenmek durumunda değildir. Veri bağımsızlığı, VTYS’lerin en temel

özellikleridir.

2.6 Normalizasyon

İlişkisel veritabanları tasarlanırken verilerin gereksiz tekrarını, bilgilerin kaybını

önlemek amacıyla normalizasyon işlemi uygulanması gerekir. Normalizasyon işlemi

uygulanarak da ilişkilerin normal forma getirilmesi sağlanır.

Normalizasyon, taslak veritabanı üzerinde birtakım işlemler yapılarak taslağı son haline

yaklaştırma yöntemidir.

İyi tasarlanmamış olan bir veritabanında güncelleme, ekleme veya silmeden

kaynaklanan sapmalar nedeniyle birtakım kullanım zorlukları meydana gelmektedir.

Normalizasyon, veritabanı tasarımında bu tür sapmaların da ortadan kaldırılmasını sağlayan bir

süreç olarak da adlandırılabilir.

Page 40: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

27

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Page 41: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

28

Uygulama Soruları

1. İlişkisel veritabanı kavramının tanımını yapınız.

2. İlişkisel veritabanı sitemlerine 5 örnek veriniz.

3. Veritabanı dili nedir? Açıklayınız.

4. İhtiyaca göre hangi veritabanı yönetim sistemleriniz seçerdiniz? Açıklayınız.

5. Veritabanı yönetim sistemlerinin avantajları nelerdir? Açıklayınız.

6. Normalizasyon Nedir? Açıklayınız.

Page 42: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

29

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde ilişkisel veritabanının organize edilmiş verilerin tablolarda saklanması ve

bu tablolar arasında kurulan bağ ile oluşan veritabanı çeşidi olduğunu öğrendik. İlişkisel

veritabanı sistemlerinin neler olduğunu, ihtiyaca göre hagi veritabanını seçeceğimizi öğrendik.

Ayrıca SQL’in yapısal sorgulama dili olduğunu ve veritabanı yönetim sistemlerinin

avantajlarını öğrendik.

Page 43: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

30

Bölüm Soruları

1. Tablo üzerindeki her bir satır ne olarak adlandırılır?

A. Kayıt

B. Sorgu

C. İlişkili veri

D. Sütun

E. Hiçbiri

2. Aşağıdakilerden hangisi ilişkisel veritabanına örnek olarak verilemez?

A. MS SQL

B. My SQL

C. Oracle

D. MS Excel

E. MS Access

3. Microsoft firması tarafından geliştirilmiş olan ve aynı anda en fazla 255 kullanıcının

erişmesine imkân sağlayan veritabanı yönetim sistemi aşağıdakilerden hangisidir?

A. Oracle

B. My SQL

C. MS SQL

D. MS Access

E. Informix

4. Açık kaynak kodlu olan veritabanı yönetim sistemi aşağıdakilerden hangisidir?

A. My SQL

B. MS SQL

C. MS Access

D. Oracle

E. IBM DB2

Page 44: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

31

5. Basit ölçekli işlemlerde aşağıdaki hangi veritabanı yönetim sistemi kullanılabilir?

A. MS SQL

B. My SQL

C. MS Access

D. Oracle

E. PostgreSQL

6. Aşağıdakilerden hangisi ilişkisel veritabanı sitemleri için yanlıştır?

A. İlişkiler, bir sorgu oluşturduğumuzda birçok bilgiye aynı anda ulaşmamızı sağlar.

B. Her satır aynı sütunlara yani alanlara sahiptir.

C. Her bir sütun o tabloda bulunması gereken ortak özellikleri yansıtır.

D. Tablo üzerindeki her bir sütuna “kayıt” denir.

E. Tablolar arasında kurulan ilişkiler ile verileri organize bir şekilde işlemek

mümkündür.

7. Aşağıdakilerden hangisi Microsoft firmasına ait veritabanı yönetim sistemleridir?

I. Oracle

II. My SQL

III. MS SQL

IV. MS Access

A. I ve II

B. III ve IV

C. II ve III

D. II ve IV

E. I, II, III

8. Aşağıdakilerden hangisi Oracle veritabanı yönetim sistemi için yanlıştır?

A. Oracle firması tarafından geliştirildi.

B. Dünyanın en güçlü ve en güvenilir veritabanı olarak gösterilir.

C. Sadece Windows işletim sistemi üzerinde kullanılabilir.

D. Çok yüksek ölçekli uygulamalar için tercih edilir.

E. Oluşturulabilecek tablo sayısı sınırsızdır.

Page 45: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

32

9. Aşağıdakilerden hangisi My SQL veritabanı yönetim sistemi için yanlıştır?

A. Açık kaynak kodludur.

B. Windows/Unix/Linux işletim sistemlerinde çalışır. (Platform bağımsız)

C. Tablo başına 4 TB veri depolayabilir.

D. Web uygulamalarında PHP ile çok sık kullanılır.

E. Sadece açık kaynak kod olan Linux işletim sistemi üzerinde çalışır.

10. Verinin isteyerek ya da yanlış kullanım sonucu bozulmasının önlenmesini sağlayan

mekanizmalar veritabanı yönetim sisteminin hangi özelliği olarak nitelendirilir?

A. Veri Tutarlılığı (Data Consistency)

B. Veri Bütünlüğü (Data Integrity)

C. Veri Güvenliği (Data Securiy)

D. Veri Tekrarı (Data Redundancy)

E. Veri Bağımsızlığı (Data Independence)

Cevaplar

1)A 2)D 3)D 4)A 5)C 6)D 7)B 8)C 9)E 10)C

Page 46: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

33

3. VERİTABANI KAVRAMLARI

Page 47: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

34

Bu Bölümde Neler Öğreneceğiz?

3.1. Tablo

3.2. Satır

3.3. Sütun

3.4. Primary Key

3.5. Unique Key

3.6. Foreing Key

3.7. Zorlayıcı

3.8. Indeks

3.9. View

3.10. İlişkilendirme

3.11. Veritabanı ilişki türleri

Page 48: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

35

Bölüm Hakkında İlgi Oluşturan Sorular

1. Tablo Nedir?

2. Satır Satır?

3. Sütun Nedir?

4. Primary Key Nedir?

5. Unique Key Nedir?

6. Foreing Key Nedir?

7. Zorlayıcı Nedir?

8. Indeks Nedir?

9. View Nedir?

10. İlişkilendirme Nedir?

11. Veritabanı İlişki Türleri Nelerdir?

Page 49: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

36

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

Tablo, Satır, Sütun, Primary

Key, Foreing Key

Tablo, Satır, Sütun, Primary

Key’i tarif eder ve

örneklendirebilir

Ders notları, Sunumlar,

Kaynaklar

İlişkilendirme, Veritabanı

ilişki türleri

Kavrama Ders notları, Sunumlar,

Kaynaklar

Page 50: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

37

Anahtar Kavramlar

Tablo, Satır, Sütun, Primary Key, Foreing Key, İlişkilendirme

Page 51: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

38

Giriş

“Veritabanı yazılımı” veritabanının bilgiyi verimli bir şekilde düzenleyebilmesini,

gerektiği zaman bilgiye ulaşılabilmesini sağlayan, birden çok kullanıcıya bilgiye aynı anda

erişme olanağı tanıyan, verilerin düzenli bir şekilde saklanmasına imkan sağlayan yazılımlardır.

Veritabanı yazılımları kullanırken sıkça karşı karşıya geleceğimiz bazı kavramlar

vardır. Bu kavramların ne olduğunu bilmek gerekir. Bu bölümde bu kavramlar işlenecektir.

Page 52: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

39

3.1. Tablo (Table)

Tablolar verilerin saklandığı alanlardır. Tabloları Excel dosyalarına benzetebiliriz.

Hücrelerden oluşur ve hücrede veriler mantıksal olarak saklanır.

Şekil 10: Tablo, Satır ve Sütunlar

• Veritabanı içerisinde verilerin tutulduğu kısımdır.

• Tablolar satır ve sütunlardan oluşur.

• Her satır tablo içinde tekil bir değere sahip olmalıdır.

• Her tabloda bir PRIMARY KEY (Birincil Anahtar) tanımlanmalıdır.

• Tablolar arası gerekli ilişkiler kurulmalıdır.

• Veriler hücrelerde saklanır.

• Tablo içerisinde her satır bir kaydı ifade ederken , her sütun her bir kayıta ait bir

özelliği ifade eder aynı zamanda her bir sütuna “field” ya da “alan” denir.

3.2. Satır (Rows)

Satırlar tablolarda bulunan belirli bir kayda ait veriler bütünüdür. Satır sütuna ait veri

gurubudur. Örneğin bir aracın Plaka, Marka, Model, Renk bilgilerinin tamamı satırı ifade

etmektedir.

3.3. Sütun (Column)

Satırlara ait farklı bilgileri tutar. Örneğin bir araca ait plaka, marka, model, renk gibi

özelliklerin her biri ayrı sütunlardadır.

Page 53: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

40

3.4. Primary Key (Birincil Anahtar)

Her satırı tekil bir şekilde tanımlayan benzersiz anahtardır. Primary Key sayesinde tablolarda

bulunan satırlar birbirinden farklı olur ver her satırın Primary Key değeri farklı atanır.

1. Benzersizdir. Yani tekrar eden kayıtlar olamaz.

2. Boş geçilemez. Mutlaka değer almak zorundadır. Bir tabloda Primary Key olmak

zorunda değil. Fakat bazı veritabanı yönetim sistemlerinde bulunan satırlar birbirinden

faklı olur ve her satırın Primary Key değeri farklı atanır.

Şekil 11: Primary Key

Primary Key Seçerken Dikkat Edilmesi Gereken Hususlar

• Primary Key olacak olan sütun asla boş değer olmamalıdır.

• Primary Key mümkün olduğunca az sütunlardan oluşmalıdır.

• Primary Key sütunu mümkün olduğunca en küçük ve basit veri tipinde tanımlanmalıdır.

Integer idealdir.

• Primary Key olacak olan sütun tekrar etmeyen kayıtlardan oluşmalıdır. Örneğin T.C.

Kimlik No, Plaka, Öğrenci No vb.

3.5. Unique Key (Tekil Anahtar)

Unique Key olarak tanımlanan alan için bir değer sadece bir kere girilebilir. Bir başka

satıra daha aynı verinin girilmesine izin verilmez. Primary Key ’den farklı olarak Unique Key,

NULL (boşluk) değerini alabilir. Örneğin programda her personele ait bir sicil numarası olacağı

Page 54: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

41

için bu alan Unique key olarak tanımlanabilir. Ama isim alanı birden fazla aynı isme sahip

personel olabileceği için bir Unique key olarak tanımlanamaz. Ali isimli birden fazla personel

olabileceği gibi.

3.6. Foreing Key (Yabancı Anahtar)

Foreing Key, birbiri ile ilişkili olan tablolardan ilişki sütununu belirler. Bir tablodaki

sütundan başka tablodaki anahtara olan referansı belirler. Primary Key’den farklı olarak bir

tabloda birden fazla Foreing Key olabilir. Bir tablodaki Foreing Key tekrar edebilir. Çünkü aynı

kayda referans eden birden fazla kayıt olması doğaldır.

Şekil 12: Foreing Key

3.7. Zorlayıcı (Constraint)

Herhangi bir alan için girilebilecek verileri kısıtlayıcı kurallara zorlayıcılar denir. İlgili

alana girilebilecek değerleri sınırlayan bir deyim yazılır. Kullanımı bazen çok faydalıdır2 .

Özellikle yanlış bilgi girişini engeller ve verilerin doğru girilmesini zorunlu hale getirir.

Kullanıcı, zorlayıcıda belirtilen kural dışında bir veriyi tabloya yazmaya çalıştığında VTYS

hata verir. Böylelikle veritabanına kullanıcının keyfi değerler girmesi önlenmiş olunur ve

veritabanında tutarlılık sağlanmış olunur.

Örneğin, bir öğrencinin sınıf bilgisine ait değerler yazılırken bu alan için rakamsal 1 ile

6 arasında bir zorlayıcı değer tanımlanırsa; veri girişi sırasında 1 ile 6 arasındaki değer dışında

2 Veri Tabanı Yönetim Sistemleri, Yrd. Doç. Dr. Zehra ALAKIÇ BURMA, Seçkin Yayıncılık, 2009,

Ankara.

Page 55: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

42

bir değerin sınıf bilgisi alanına yazılması engellenmiş olunur. Dolayısı ile sınıf için yazılmaması

gereken bir değer; bilgi girişi başlangıcında kontrol edilmiş olunur.

Şekil 13: Zorlayıcı

Yukarıdaki resimde mavi çizgilerle çevrelenmiş alanda MS Access veritabanı

programında bir kısıtlayıcının tanımlanması yapılmış ve özellikle kullanıcı tarafından yanlış

bilgi girişi engellenmiş ve verilerin doğru yazılması zorunlu hale getirilmiştir.

3.8. Indeks (Index)

Kütüphanelerdeki kitapların raflardaki dizilişlerini ele alalım. Bir kitap arandığında,

kitaplar bir kurala göre dizilmemişlerse, her bir kitaba teker teker bakılması gerekir. Kitaplar

raflara alfabetik dizilirse, her bir kitap tek tek gözden geçirilmek zorunda kalınmaz. Aranılan

kitap ile bakılmakta olunan kitabın isimleri karşılaştırılır, sağa ya da sola yönelip aramaya

devam edilir. Aynı şekilde yazarlarına ya da kütüphane numarasına göre sıralanmış birer liste

olursa, bu kriterlere göre de aranılan kitap kolayca bulunur. Veritabanlarında indeks

oluşturularak, veriler veritabanındaki kayıtlı oldukları sıradan başka bir sırada gösterilebilir ve

tıpkı kütüphanedeki bir kitaba ulaşmada olduğu gibi istenilen veriye daha kısa sürede ve

kolayca ulaşılabilir.

Page 56: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

43

Şekil 14: Indeks

Temelde indekslerin ilişkisel veritabanında şu üç işlevi vardır:

1. Tekil indeksler, veri ilişkilerini ve veri bütünlüğünü sağlayan birincil anahtar alanlar oluşturmada kullanılır.

2. Indeks olan alanın değerine göre bir kaydın kayıtlar arasındaki sırasını gösterirler.

3. Index, veritabanı sorgularını hızlandırır.

Constraint’ler (zorlayıcılar) aslında index’lere benzerler ama indekslerden farklı olarak

bir tek tablo üstünde etkili olmayabilirler. Özellikle yabancı anahtar zorlayıcısı ilişkisel veri

girişi için oldukça etkili bir zorlayıcıdır. Ancak bir Foreign Key tanımı yapabilmek için,

FOREIGN KEY yabancı anahtarının asıl tablosunda birincil anahtar olması gerekir.

Özetle; Index sorguları hızlandırmak için kullanılan bir özelliktir.

3.9. View (Görüntü)

Bazen tabloları olduklarından farklı gösterecek filtrelere ihtiyaç duyulur. Bu türden

işlevler için VIEW kullanılır. VIEW’ler, saklanmış sorgulardan ibarettirler. Aslında tablo gibi

kullanılsa da halihazırda böyle bir tablo veritabanında bulunmaz, sadece view (görüntüsü)

bulunur.

VIEW’ler şu görevler için kullanılır:

• Kullanıcıların bazı kritik tabloların sadece belli sütunlarını veya satırlarını görmesi istenildiğinde

• Veri ulaşım performansını arttırmak

Page 57: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

44

• Halihazırdaki tablolarda var olan verilerin başka bir tablo formatında sunulması gerektiğinde

• Çok kompleks sorguları basitleştirmek için

• Birden çok tablo ile çalışırken gereksiz karmaşadan kurtulmak

Şekil 15: View

Özetle, View'ler bir veya birden fazla tablodan istenilen verilerin bir arada sunulmasını sağlayan tanımlanmış sorgulardır. Sanal bir tablo olarak da düşünülebilir.

3.10. İlişkilendirme (Joining)

Tek sorgu ile birden fazla tablodan bilgi alma işlemine ilişkilendirme denilir.

Şekil 16: İlişkilendirme

• Bazı veritabanı yazılımlarında sorgu kullanmadan ilişkilendirme yapılabilir. (MS

Access veritabanı gibi)

• Hazırlanan projede programlama dili kullanılıyorsa ilişkilendirme işlemi sorgu ile

yapılmalıdır.

Page 58: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

45

• Öğrenci ve bölüm bilgilerinin ayrı ayrı tablolarda tutulduğu bir veritabanında öğrenci

bilgileri ve öğrencinin kayıtlı olduğu bölümün adını öğrenmek için ilişki kurulması

gerekmektedir.

• İlişkilendirme ayrıca veri tutarlılığını sağlamak için de kullanılır. Örneğin, bölüm

tablosunda olmayan bölüm kodunu öğrenci tablosunda kullanılmasının engellenmesi, öğrenci

tablosundan öğrenci silindiğinde diğer tablolarda o öğrenciye ait tüm bilgilerin silinmesi veya

değiştirilmesi için kullanılabilir.

Şekil 17: Tablolar Arası İlişkilendirme

3.11. Veritabanı İlişki Türleri

Microsoft Access gibi ilişkili bir veritabanı sisteminin gücü, ayrı tablolarda saklanan

bilgileri hızla bulması ve bunları Sorgular, Formlar ve Raporlar kullanarak bir araya

getirmesidir. Bunu yapabilmek için her tablo, tabloda saklanan her kaydı tek olarak tanımlayan

bir alan veya alanlar kümesi içermelidir. Bu bilgi, tablonun Birincil Anahtarı olarak adlandırılır.

Bir tabloya birincil anahtar atadığınızda, Access yinelenmeyi veya birincil anahtar alanlara Null

(Boş) değerler girilmesini önleyecektir.

Access'te tanımlanabilecek üç tür Birincil Anahtar vardır;

• Otomatik Sayı Birincil Anahtarı

• Tek Alan Birincil Anahtarı

• Birden Fazla Alan Birincil Anahtarı

Page 59: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

46

Otomatik Sayı Birincil Anahtarı

Otomatik Sayı alanı, tabloya her kayıt eklenirken, otomatik olarak sırayı belirten sayının

girilmesi için ayarlanabilir. Tabloya böyle bir alanı birincil anahtar olarak atamak, birincil

anahtar oluşturmanın en kolay yoludur. Yeni oluşturulmuş bir tabloyu kaydetmeden önce

birincil anahtar ayarlamazsanız, Microsoft Access sizin için birincil anahtar oluşturmasını

isteyip istemediğinizi soracaktır. Yanıtınız Evet ise, Microsoft Access sizin için bir Otomatik

Sayı birincil anahtarı oluşturur.

Tabloya eklenen her kayıt için otomatik olarak benzersiz bir sayı depolayan Otomatik

Sayı alanı;

Uzun Tamsayı (Artan, Rasgele) ve (1,2,3 veya 1385153365, -1727810574)

Yineleme Kimliği ( {BD960141-3DDB-4A7E-9CFB-74A722B1885B} ) olarak iki

şekilde oluşturulabilir.

Tek Alan Birincil Anahtarı

Kimlik numaraları ve parça numaraları gibi benzersiz değerler içeren bir alanınız varsa, o alanı,

birincil anahtar olarak atayabilirsiniz.

Yinelenen veya Null değerler içermedikçe, önceden veri içeren bir alan için birincil anahtar

belirtebilirsiniz.

Şekil 18: Tek Alan Birincil Anahtarı

Page 60: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

47

Birden Fazla Alan Birincil Anahtarı

Herhangi bir alanın benzersizliğini garanti edemediğiniz durumlarda, birincil anahtar

olarak iki veya daha çok alan atayabilirsiniz. Bu sorunun ortaya çıktığı en yaygın durum Çok-

Çok ilişkideki diğer iki tablo ile ilgili kullanılan tablodur.

Örneğin; Notlar tablosu, Öğrenciler ve Dersler tablolarını ilişkilendirebilir. Bu tablonun

Birincil Anahtarı iki alan içermektedir: Öğrenci Numarası ve Ders Kodu. Notlar tablosu pek

çok Öğrenci ve Ders içerebilir, ancak her Ders her Öğrenci için yalnız bir kez listelenir, bu

nedenle Öğrenci Numarası ve Ders Kodu alanlarını birleştirmek, uygun bir birincil anahtar

oluşturur.

Şekil 19: Birden Fazla Alan Birincil Anahtarı

Page 61: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

48

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Page 62: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

49

Uygulama Soruları

1. Tablo Nedir? Açıklayınız.

2. Satır, Sütun Nedir? Açıklayınız.

3. Primary Key, Foreing Key Nedir? Açıklayınız.

4. İlişkilendirme Nedir? Örnekle Açıklayınız.

5. Veritabanı ilişki türleri nedir? Açıklayınız.

Page 63: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

50

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde veritabanında yapacağımız uygulamalar öncesinde bilmemiz gereken temel

kavramları öğrendik. Tablonun verilerin saklandığı alan olduğunu, tablonundsa satır ve

sütunlardan oluştuğunu, satırın tablolarda bulunan belirli bir kayda ait veriler olduğunu,

sütunun ise satırlara ait farklı bilgileri tutuğunu öğrenmiş olduk. Ayrıca bir tabloda olması

gereken Primark Key ve diğer kavramların önemini öğrenmiş olduk.

Page 64: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

51

Bölüm Soruları

1. Aşağıdakilerden hangisi tablo için yanlıştır? A. Tablolar satır ve sütunlardan oluşur B. Her satır tablo içinde tekil bir değere sahip olmalıdır C. Tablolar arası gerekli ilişkiler kurulmalıdır D. Veriler hücrelerde saklanır E. Her tabloda bir Foreing Key (Yabancı Anahtar) tanımlanmalıdır

2. Tabloda satırlara ait farklı bilgileri tutan alana ne ad verilir? A. Form B. Sütun (Column) C. Satır (Rows) D. Primary Key (Birincil Anahtar) E. Foreing Key (Yabancı Anahtar)

3. Tabloda her satırı tekil bir şekilde tanımlayan benzersiz anahtara ne ad verilir? A. Unique Key (Tekil Anahtar) B. Sütun (Column) C. Satır (Rows) D. Primary Key (Birincil Anahtar) E. Foreing Key (Yabancı Anahtar)

4. Bir tabloda herhangi bir alan için girilebilecek verileri kısıtlayıcı kurallara ne ad verilir?

A. Unique Key (Tekil Anahtar) B. Primary Key (Birincil Anahtar) C. Foreing Key (Yabancı Anahtar) D. Zorlayıcı (Constraint) E. Indeks (Index)

5. Aşağıdakilerden hangisi veritabanı ilişki türleri yanlıştır?

A. Otomatik Sayı alanı, tabloya her kayıt eklenirken, otomatik olarak sırayı belirten sayının girilmesi için ayarlanabilir

B. Herhangi bir alanın benzersizliğini garanti edemediğiniz durumlarda, birincil anahtar olarak iki veya daha çok alan atanabilir

C. Birincil anahtar oluşturmanın en kolay yolu Tek Alan Birincil Anahtarı Kullanmaktır

D. Access'te tanımlanabilecek üç tür Birincil Anahtar vardır; Otomatik Sayı Birincil Anahtarı, Tek Alan Birincil Anahtarı, Birden Fazla Alan Birincil Anahtarı

E. Bir tabloya birincil anahtar atadığında, Access yinelenmeyi veya birincil anahtar alanlara Null (Boş) değerler girilmesini önler

Page 65: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

52

6. Aşağıdakilerden hangisi veritabanı tablosundaki sütunlarla ilgili olarak doğrudur? A. Tabloya girilen her bir kayıttır B. Sütunlar oluşturulan tablonun konusuyla ilgilidir C. Yeni kayıt girildiğinde sütun sayısı da artar D. Bir tabloda sütunlar, satırlara ait aynı bilgileri tutar E. Hiçbiri

7. Aşağıdakilerden hangisi veritabanındaki tablo için doğrudur?

A. Tabloda en fazla iki tane birincil anahtar olmalıdır B. Tabloda birden fazla birincil anahtar olabilir C. Tabloda sadece bir tane birincil anahtar olur D. Tabloda sadece bir tane yabancı anahtar olur E. Hepsi

8. Aşağıdakilerden hangisi veritabanı oluşturmadan önce yapmanız gereken adımlardan

biri değildir? A. İhtiyaç duyulan tabloları belirleme B. Tablolar arasındaki ilişkileri belirleme C. Veritabanının amacını belirleme D. Veritabanı adını ve tablo adlarını belirleme E. İhtiyaç duyulan sorguları belirleme

9. Aşağıdakilerden hangisi veritabanındaki tabloda birincil anahtar alanı olarak uygun

değildir? A. TC Kimlik No B. Öğrenci No C. Araç Plaka No D. Kitap ISBN No E. Öğrenci Adı

10. Bir tablodaki bir sütuna ait verilerin başka bir tablonun sütunundan getirilmesini sağlayan anahtar aşağıdakilerden hangisidir?

A. Birincil Anahtar B. Yabancı Anahtar C. Sütunlar D. Unique Kısıtlaması E. Unique kısıtlaması

Cevaplar

1)E 2)B 3)D 4)D 5)C 6)D 7)C 8)E 9)E 10)B

Page 66: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

53

4. ACCESS VERİTABANINDA ALAN VE ÖZELLİKLERİ

Page 67: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

54

Bu Bölümde Neler Öğreneceğiz?

4.1. Veri Türü

4.2. Access Veritabanı Veri Türleri

4.3. İlişkilerde Ve Birleştirmelerde Alan Türleri

Page 68: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

55

Bölüm Hakkında İlgi Oluşturan Sorular

1. Veri Türü Nedir?

2. Kısa Metin ve Uzun Metin Veri Tipinin Farkı Nedir?

3. Access’teki En Önemli ve Sıkça Kullanılabileceğini Düşündüğünüz Veri Tiplerini

Örnekle Açıklayınız.

Page 69: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

56

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

Veri Türü Veri türünü tarif eder ve

örneklendirebilir

Ders notları, Sunumlar,

Kaynaklar

Access Veritabanı Veri

Türleri

Access’teki tüm veri türlerini

kavrar ve uygulama sırasında

kullanabilir

Ders notları, Sunumlar,

Kaynaklar, Uygulama

İlişkilerde Ve

Birleştirmelerde Alan Türleri

Access’te tablolar arası

ilişkilendirme yaparken

alanların aynı veri türüne

sahip olmasına

farkındalığına varır.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 70: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

57

Anahtar Kavramlar

Veri Türü, Metin, Sayı, Para Birimi, Tarih/Saat, Evet/Hayır, Otomatik Sayı

Page 71: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

58

Giriş

Access’teki her tablo alanlardan oluşur. Bir alanın özellikleri, o alana eklenen verilerin

özelliklerini ve davranışını açıklar. Alanın veri türü en önemli özelliktir, çünkü alanda ne tür

verilerin depolanabileceğini belirler. Bu bölümde, Access’te sağlanan veri türleri ve diğer alan

özellikleri açıklanmaktadır.

Page 72: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

59

4.1. Access Veritabanı Veri Türleri

Veri türü, bir değişken için ayrılacak bölgenin hangi formatta olacağını belirlemek için

kullanılır. Örneğin; sayısal bir değeri saklayacağımız değişken için sayısal bir veri tipi seçeriz

ya da metin tabanlı (adı, soyadı gibi) kavramları saklamak için metin tabanlı veri tipleri seçeriz.

Veri tipi (türü) belirlemede bir önemli nokta ise veri tipini seçmeden önce değişkene girilecek

değerin sınırlarını belirlemektir. Örneğin; sayısal bir değişken için girilecek verinin tam sayı ya

da ondalık sayı olduğuna karar vermek.

Veri türleri kafa karıştırıcı görünebilir, örneğin alanın veri türü Metin olduğunda, metin

veya sayısal karakterlerden oluşan verileri depolayabilir. Ama veri türü Sayı olan alanlarda

yalnızca sayısal veriler depolanabilir. Dolayısıyla, her veri türüyle hangi özelliklerin

kullanıldığını bilmeniz gerekir.

Şekil 20: Access Veritabanı Veri Türleri

Page 73: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

60

Veri türü, alanın aşağıdakiler gibi diğer birçok önemli niteliğini de belirler:

• Alanda hangi biçimlerin kullanılabileceği.

• Alan değerinin boyut üst sınırı.

• Alanın ifadelerde nasıl kullanılabileceği.

• Alanın dizine alınıp alınamayacağı.

Kısa Metin: Girilecek olan verilerin sadece metin veya hem metin hem de sayı olduğu

durumlarda kullanılan veri türüdür. Bu alana girilen veriler üzerinde aritmetik işlem

yapılmayacak olan sayılardan da oluşabilir. (Örneğin Telefon numarası, T.C. Kimlik gibi)

Girilecek olan metnin uzunluğu boşluklar da dahil olmak üzere en fazla 255 karakter olabilir.

Not: Ofis 2013-2016’dan önceki versiyonlardaki adı “Metin”dir.

Uzun Metin: Çok miktarda alfasayısal veri: tümceler ve paragraflar için kullanılır.

Girilecek olan metnin uzunluğu boşluklar da dahil olmak üzere en fazla 65.535 karakter olabilir.

Not: Ofis 2013-2016’dan önceki versiyonlardaki adı “Not”tur.

Sayı: Üzerinde aritmetik işlemler yapılabilen ve içinde parasal bilgi bulunmayan alanlar

için kullanılan sayısal veri türüdür. Bu alana girilecek olan sayıların boyutu ve türünün ne

olacağı (Bayt, tam sayı, uzun tam sayı, tek, çift, ondalık, yineleme kimliği) Genel sekmesinde

bulunan alan boyutları ile belirlenir.

• Bayt: 0 ile 255 arasındaki tam sayıları depolar.

• Tam Sayı: -32,768 ile 32,767 arasındaki tam sayıları depolar.

• Uzun Tam Sayı: -2,147, 483,648 ile +2,147, 483,648 arasındaki tam sayıların depolanmasını sağlar. Örnek: 60000

• Tek: -3.402823x1038 ile +3.402823x1038 arasındaki ondalıklı sayıların depolanmasını sağlar.

• Çift: -1.79769313486232x10308 ile +1.79769313486232x10308 arasındaki ondalıklı sayıların depolanması için kullanılır. Örnek: 50000,389

• Ondalık: -10^28–1 ile 10^28–1 arasındaki ondalıklı sayıların depolanması için kullanılır.

Page 74: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

61

• Çoğaltma Kimliği: Yineleme için gerekli olan genel benzersiz bir tanımlayıcıdır. 16 baytlık veri depolar.

Büyük Sayı: Bu veri türü, para olmayan sayısal değerleri depolar ve ODBC'deki

SQL_BIGINT veri türüyle uyumludur. Büyük sayıları verimli bir şekilde hesaplamak için bu

veri türü kullanılır.

Tarih/Saat: Tarih ve saat bilgisini tutmak için kullanılan veri türüdür. 100 ile 9999

arasındaki yıllar için bilgileri tutar.

Para Birimi: Parasal değerleri saklamak için kullanılan veri türüdür.

Otomatik Sayı: Tabloya yeni bir kayıt eklendiği zaman Veritabanı hazırlama programı

tarafından ardışık veya rastgele atanan benzersiz sayılardır. Otomatik sayı alanları kullanıcı

tarafından güncellenemez.

Evet/Hayır: İki değerden sadece bir tanesinin (Evet/Hayır, Doğru/Yanlış, Açık/Kapalı)

seçilmesi gerektiği durumlarda kullanılan veri türüdür.

OLE nesnesi: Veritabanındaki alanlara resim, ses, animasyon gibi nesneler eklenmesi

gerektiği durumlarda kullanılır. .accdb uzantılı dosyalarda, OLE Nesnesi alanları yerine Ek

alanları kullanılır.

Köprü: Tıklandığı zaman kullanıcıyı belirtilen adrese yönlendirmek için kullanılır.

İnternet adresleri veya farklı bir dosya gibi bağlantı kurulan bilgiler bu veri türünde tanımlanır.

Hesaplanmış (Hesaplanan Alan): Hesaplama sonuçlarını tutar. Hesaplama, aynı

tablonun başka alanlarına başvuru içermelidir. Örneğin [Miktar] * [Birim Fiyat] şeklinde

hesaplama yapılarak sonuç bu alandan saklanabilmektedir.

Not: Hesaplanmış (Hesaplanan Alan) ilk kez Access 2010'da kullanıma sunulmuştur.

Arama Sihirbazı: Birbirleri ile ilişkili alanlarda eğer tablodaki bilgi başka bir tablodan

alınacaksa kullanılan veri türüdür.

Ek: E-posta iletilerine eklenen dosyalara benzer biçimde, veritabanınızda kayıtlara

eklenen resimler, elektronik tablo dosyaları, grafikler ve desteklenen diğer dosya türleri.

Page 75: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

62

4.2. İlişkilerde Ve Birleştirmelerde Alan Türleri

Tablo ilişkisi, iki tablodaki ortak alanlar arasındaki ilişkidir. İlişki bire bir, bire çok veya

çoka çok olabilir. Birleştirme, iki kaynaktan verileri, belirtilen alanda yer alan ve kaynakları

ortak olan değerler temelinde sorgunun kayıt kümesindeki tek bir kayıtta birleştiren bir SQL

işlemidir. Birleştirme iç birleşim, sol dış birleşim veya sağ dış birleşim olabilir.

Tablo ilişkisi oluştururken veya sorguya birleştirme eklerken, birbirine bağladığınız

alanlar aynı veya uyumlu veri türlerinde olmalıdır. Örneğin, Sayı alanıyla Metin alanı arasında

(söz konusu alanların değerleri eşleşse bile) birleştirme oluşturamazsınız.

İlişki veya birleştirmelerde Otomatik Sayı veri türüne ayarlanmış alanlar, Alan Boyutu

özelliği Uzun Tamsayı olarak ayarlanmış Sayı veri türüne ayarlanmış alanlarla uyumludur.

4.3. Veri Türlerini Karşılaştırma

Access veri türleri, MS SQL Server veri türlerinden farklı adlandırılır. Örneğin, bit veri

türündeki bir MS SQL Server sütunu Access'e Evet/Hayır veri türünde bağlanır veya içeri

aktarılır. Aşağıdaki tabloda, MS SQL Server ve Access veri türleri karşılaştırılmıştır.

SQL Server veri türü Access veri türü Access alan boyutu bigint Büyük Sayı

binary (alan boyutu) İkili SQL Server alan boyutuyla aynı bit Evet/Hayır

char (alan boyutu); alan boyutu 255'ten küçük veya buna eşit olduğunda

Metin SQL Server alan boyutuyla aynı

char (alan boyutu); alan boyutu 255'ten büyük olduğunda Not

datetime Tarih/Saat

decimal (duyarlık, ölçek) Sayı Ondalık (Access Duyarlık ve Ölçek özellikleri, SQL Server'ın duyarlık ve ölçeğiyle eşleşir.)

float Sayı Çift image OLE Nesnesi

int Sayı Uzun Tamsayı money Para Birimi

nchar (alan boyutu); alan boyutu 255'ten küçük veya buna eşit olduğunda

Metin SQL Server alan boyutuyla aynı

Page 76: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

63

nchar (alan boyutu); alan boyutu 255'ten büyük olduğunda Not

ntext Not

numeric (duyarlık, ölçek) Sayı Ondalık (Access Duyarlık ve Ölçek özellikleri, SQL Server'ın duyarlık ve ölçeğiyle eşleşir.)

nvarchar (alan boyutu); alan boyutu 255'ten küçük veya buna eşit olduğunda

Metin SQL Server alan boyutuyla aynı

nvarchar (alan boyutu); alan boyutu 255'ten büyük olduğunda Not

nvarchar(MAX) Not

real Sayı Tek smalldatetime Tarih/Saat

smallint Sayı Tamsayı smallmoney Para Birimi

sql_variant Metin 255 text Not

timestamp İkili 8 tinyint Sayı Bayt uniqueidentifier Sayı Çoğaltma Kimliği varbinary İkili SQL Server alan boyutuyla aynı varbinary (MAX) OLE Nesnesi

varchar (alan boyutu); alan boyutu 255'ten küçük veya buna eşit olduğunda

Metin SQL Server alan boyutuyla aynı

varchar (alan boyutu); alan boyutu 255'ten büyük olduğunda Not

varchar(MAX) Not

xml Not

Tablo 1: Veri Türlerini Karşılaştırma

Page 77: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

64

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Access veritabanı üzerinde veri türleri incelenmeli

Page 78: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

65

Uygulama Soruları

1. Veri Türü Nedir?

2. Access üzerinde bir tablo oluşturarak alanları ve bu alanlara uygun veri türü

belirleyiniz.

3. Access’teki veri türlerini program üzerinde inceleyiniz.

Page 79: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

66

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde veri türünün ne olduğunu, Access veritabanında hangi veri türlerinin

olduğunu ve tablolar arasında ilişkilendirme yaparken ilişkilendirme yapılacak alanların veri

türlerininaynı ya da uyumlu olması gerektiğini öğrendik.

Page 80: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

67

Bölüm Soruları

1. Veri Türü için aşağıdakilerden hangisi yanlıştır? A. Veri türü, bir değişken için ayrılacak bölgenin hangi formatta olacağını

belirlemek için kullanılır B. Alan değerinin üst sınırı belirler C. Alanının ifadelerde nasıl kullanılacağını belirler D. Alan değeri sayısal bir ifadeyse Tam Sayı ya da Ondalıklı Sayı olacağını

belirler E. Hiçbiri

2. Veritabanında bir alana nasıl veri girileceğinin denetlenmesi gerektiği durumlarda kullanılan veri tipi alan özelliği aşağıdakilerden hangisidir?

A. Biçim B. Giriş Maskesi C. Resim Yazısı D. Varsayılan Değer E. Alan Boyutu

3. Aşağıdakilerden hangisi veritabanında tablolarda kullanılan veri türlerinden değildir?

A. Kısa Metin B. Sayı C. OLE Nesnesi D. Biçim E. Ek

4. Veritabanında tablonun bir alanında resim, ses veya grafik gibi nesnelerin saklanması söz konusu ise veri tipi olarak aşağıdakilerden hangisi kullanılmalıdır?

A. Uzun Metin B. Sayı C. OLE Nesnesi D. Köprü E. Arama Sihirbazı

5. Access veritabanında Uzun Metin veri türü en fazla kaç karakteri saklayabilir?

A. 255 B. 65535 C. 45000 D. 1000 E. 955

Page 81: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

68

6. Access veritabanında zaman bilgilerini saklamak için hangi veri türü kullanılır? A. Para Birimi B. Evet / Hayır C. Ole Nesnesi D. Tarih / Saat E. Köprü

7. Access veritabanında 0 ile 255 arasındaki tam sayıları saklamak için hangi veri türünü kullanmak gerekir?

A. Tam Sayı B. Uzun Tam Sayı C. Bayt D. Tek E. Ondalık

8. Access veritabanında ondalıklı sayıların saklanması kullanılması gereken veri türü

aşağıdakilerden hangisidir? A. Tam Sayı B. Uzun Tam Sayı C. Ondalık D. Çoğaltma Kimliği E. Büyük Sayı

9. Access veritabanında iki değerden sadece bir tanesinin (Doğru/Yanlış, Açık/Kapalı)

seçilmesi gerektiği durumlarda kullanılan veri türü aşağıdakilerden hangisidir? A. Arama Sihirbazı B. Ek C. Evet/Hayır D. Tarih/Saat E. Kısa Metin

10. Access veritabanında tıklandığı zaman kullanıcıyı belirtilen adrese yönlendirmek için

kullanılan veri türü aşağıdakilerden hangisidir? A. Arama Sihirbazı B. Köprü C. Ek D. Kısa Metin E. Ole Nesnesi

Cevaplar

1)E 2)B 3)D 4)C 5)B 6)D 7)C 8)C 9)C 10)B

Page 82: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

69

5. ACCESS VERİTABANINDA TABLO VE TABLO

İLİŞKİLENDİRMELERİ

Page 83: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

70

Bu Bölümde Neler Öğreneceğiz?

5.1. Veritabanı programında veritabanı ve yeni bir tablo oluşturmak

5.2. Önceden oluşturulmuş veritabanına tablo ve alan eklemek

5.3. Dış veri alarak tablo oluşturmak

5.4. Tabloda alan ekleme alan çıkarma

5.5. Access veritabanındaki oluştur menüsü altındaki bölümler

5.6. Access veritabanındaki Dış Veri sekmesi altındaki bölümler

5.7. Veritabanında tablo ve tablo ilişkilendirmeleri

5.8. İlişki türleri

Page 84: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

71

Bölüm Hakkında İlgi Oluşturan Sorular

1. Veritabanı programında veritabanı ve yeni bir tablo nasıl oluşturulur?

2. Önceden oluşturulmuş veritabanına tablo ve alan nasıl eklenir?

3. Access veritabanında dış ortamdan veri alarak tablo nasıl oluşturulur?

4. Tabloda alan ekleme yada alan çıkarma işlemi nasıl yapılır?

7. Veritabanında tablo ilişki türleri nelerdir? Açıklayınız.

Page 85: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

72

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

Veritabanı oluşturma Access’te veritabanı

oluşturabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Tablo oluşturma Access’te tablo oluşturur,

alan ekleyebilir, alan

çıkartabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Access Oluştur Sekmesi ve

Dış Veri Sekmesi

Access veritabanındaki

Oluştur sekmesi ve Dış Veri

Sekmesi altındaki bölümleri

kavrar, uygulama sırasında

kullanabilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Access Veritabanı Veri

Türleri

Access’teki tüm veri türlerini

kavrar ve uygulama sırasında

kullanabilir

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Veritabanında tablo ve tablo

ilişkilendirmeleri

İlişki türlerini kavrar,

tablolar arası ilişkilendirme

yapmaya hazır konuma gelir

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 86: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

73

Anahtar Kavramlar

Veritabanı oluşturma, tablo oluşturma, alan oluşturma, alan çıkarma, ilişki türleri

Page 87: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

74

Giriş

Tablolar, veritabanlarında bilgilerin tutulduğu veri gruplarıdır. Tablo içerisinde yer alan

her bilgi kayıt, sütunlar ise alan olarak adlandırılır. Kayıtlar adı, soyadı, adresi gibi alanlardan

oluşmaktadır.

Şekil 21: Veritabanı, tablo ve alanlar

Bir veritabanı tasarlanırken diğer veritabanı nesnelerini oluşturmadan önce yapılması

gereken ilk işlemin tablo oluşturma olması gerekmektedir.

Tablo oluşturmaya başlamadan önce hangi tablolara ihtiyaç olduğunu belirlemek için

veritabanı ihtiyaç analizini yapmış olmak gerekir.

Access veritabanının dosya uzandısı .mdb’dir. Ofis 2007 ve sonraki yıllarda piyasaya

sürülen paket içindeki Access veritabanı .accdb dosya uzantısını kullanmaktadır. Yeni alan

türlerini kullanmak için veritabanının .accdb olarak kaydetmek gerekir.

5.1. Yeni Bir Veritabanında Yeni Bir Tablo Oluşturmak

İlk olarak bir veritabanı oluşturmamız gerekiyor. Bunun için Microsoft Ofis Access’te

Yeni > Boş Veritabanı tıklanır. Gelen pencerede “Dosya Adı” kutusuna hazırlayacağınız

veritabanınızın ismi yazılır. Kaydetmek istediğiniz konum belirlendikten sonra Oluştur

düğmesine tıklanır.

Page 88: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

75

Şekil 22: Veritabanı Oluşturma

Oluştur düğmesine tıklandıktan sonra yeni bir veritabanı açılır ve Veri sayfası

görünümünde Tablo1 isimli tablo otomatik olarak oluşturulur.

Şekil 23: Access Veritabanından Otomatik Oluşan Tablo1 Adındaki Tablo

Veri Sayfası görünümünden Tasarım görünümüne geçmek için “Tablo 1” sağ tıklanıp

“Tasarım Görünüm”e tıklanır. Veri Sayfası görünümünden Tasarım görünümüne geçildiği

zaman tablo ismini kaydetmemizi isteyen aşağıdaki pencere ekrana gelecektir.

Page 89: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

76

Şekil 24: Tablo1 Adındaki Tabloyu Kaydetme

Tablo ismi yazılıp Tamam düğmesine tıklandıktan sonra Tasarım Görünümünde tablo

oluşturma penceresi ekranda görünecektir.

Şekil 25: Tablo1 Adındaki Tabloda Alan Oluşturma Arayüzü

Tasarım Görünümündeyken Ad, Soyad ve Adres Alanlarını ekleyip veri türlerini

belirleyelim.

Page 90: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

77

Şekil 26: Tablo1 Adındaki Tabloda Oluşturulan Alanlar

Böylelikle Tablo1 adında bir tablo ve Kimlik, Adı, Soyadı, Adres alanlarının olduğu bir

veritabanı oluşturmuş olduk.

5.2. Önceden Oluşturulmuş Veritabanında Yeni Bir Tablo

Oluşturmak

Daha önceden oluşturulmuş olan Veritabanında yeni bir tablo oluşturmak için

• Dosya > Aç menüleri kullanılarak var olan veritabanı dosyası açılır.

• Oluştur sekmesindeki Tablolar grubundan seçeneği seçilip yeni boş bir tablo

oluşturulur.

Şekil 27: Yeni Bir Tablo Oluşturma

• Tablo oluşturduktan sonra tablo alanlarınızı veri sayfası görünümünde

tanımlayabileceğiniz gibi tasarım görünümüne geçiş yaparak da bu işlemi

gerçekleştirebilirsiniz.

Page 91: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

78

5.3. Dış Verileri Alarak Yeni Bir Tablo Oluşturmak

Başka bir yerde depolanmış (Örneğin bir hesaplama tablosu programında, bir XML

dosyasında, başka bir veritabanında) bilgileri alarak veya bunlara bağlantı kurarak tablo

oluşturabilirsiniz. Bunu yaparken geçerli veritabanındaki yeni bir tabloda bilgilerin bir

kopyasını oluşturabiliriz. Bunun için;

• Yeni bir veritabanı oluşturulur veya mevcut veritabanlarından birisi açılır.

• Dış veri sekmesindeki Al grubundan nereden veri alınacaksa seçilerek işlem

gerçekleştirilir.

Şekil 28: Access Veritabanı Dış Veri Sekmesi

• Nereden veri alınacaksa seçildikten sonra açılan pencerelerdeki adımları

izleyerek tablo oluşturulmuş olunur.

5.4. Tabloda Alan Ekleme Alan Çıkarma

Bazı durumlarda tablonuza yeni bir sütun (alan) eklemeniz veya istemediğiniz bir

alanı silmeniz gereken durumlar olabilir.

Alan Ekleme

• Herhangi bir tabloya yeni bir alan eklemek için Tablo Veri Sayfası görünümünde iken

imleci tabloda sütun eklemek istediğimiz yere konumlandırıp Veri Sayfası sekmesi altında yer

alan Alanlar grubundan ne tür bir alan ekleyeceksek o seçilir.

Şekil 29: Alanlar Sekmesi

Page 92: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

79

• Sütun eklemek için kullanılan diğer yol ise tabloda sütun eklemek istediğiniz alan

seçilir. Farenin sağ tuşuna tıklanır ve açılan menüden seçeneği seçilir. Bu

işlem yapıldıktan sonra seçmiş olduğunuz alanın sol tarafına yeni bir sütun eklenmiş

olacaktır.

Şekil 30: Tabloya Yeni Bir Alan Ekleme

Alan Çıkarma (Silme)

• Silmek istediğiniz sütun seçildikten sonra farenin sağ tuşuna basılır. Açılan menüden

düğmesine tıklanır.

Şekil 31: Tablodan Alan Çıkarma

Page 93: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

80

• Diğer yöntem ise silmek istenilen sütun seçildikten sonra Tablo Araçları sekmesi

altında yer Alanlar grubundan simgesine tıklanılır.

Tablo tasarım görünümünde iken de tabloya yeni bir alan eklenip çıkartılabilir. Bunun için tablo

tasarım görünümündeyken yeni bir alan adı yazıp veri türünü belirlediğimizde yeni bir sütun

ekleme işlemi gerçekleştirmiş oluruz.

Tablo tasarım görünümündeyken bir alanı silmek istediğimizde silmek istediğimiz alanın

bulunduğu satırı seçtikten sonra Tasarım sekmesindeki Araçlar grubunda yer alan

düğmesine tıklanır. Diğer bir yol ise silmek istediğimiz alanın bulunduğu satırı seçip farenin

sağ tuşuna bastığımızda açılan menüden komutunu seçmek olacaktır.

Şekil 32: Tablo Tasarım Arayüzünden Alan Çıkarma

5.5. Oluştur Sekmesi Altındaki Bölümler

Şekil 33: Access Veritabanı Oluştur Sekmesi

Tablo: Veritabanında yeni bir tablo oluşturmak için kullanılır.

Page 94: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

81

Tablo Tasarımı: Tasarım görünümde tablo oluşturmak için kullanılır.

SharePoint Listeleri: SharePoint listelerinden veri alan veya verileri bu listelere ekleyen tablolar oluşturulur.

Şekil 34: Access Veritabanı Oluştur Sekmesindeki Nesneler

Form: Bir tabloya veri girmek, güncellemek veya görüntülemek için bir form ekler.

Form Tasarımı: Tasarım görünümünde bir form oluşturmak için kullanılır.

5.6. Dış Veri Sekmesi Altındaki Bölümler

Şekil 35: Access Veritabanı Dış Veri Sekmesi

Dış ortamdaki kaynaklardan veritabanımıza veri aktarmak için Dış Veri bölümü kullanılır.

5.7. Veritabanında Tablo ve Tablo İlişkilendirmeleri

İyi bir veritabanı tasarımı hedeflerinden biri veri fazlalığını (yinelenen verileri) ortadan

kaldırmaktır. Bu hedefe ulaşmak için, verilerinizi konu temelinde tablolara ayırarak her

konunun yalnızca bir kez temsil edilmesini sağlamak gerekir.

Page 95: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

82

5.8. İlişki Türleri

Bir-Bir İlişkisi (1-1)

Bir-Bir İlişkisinde, Tablo A'da Tablo B'deki her kayıtla eşleşen yalnızca BİR kayıt ve

Tablo B'de Tablo A'daki her kayıtla eşleşen sadece BİR kayıt olabilir.

Bu şekilde ilişkili olan çoğu bilgi tek bir tabloda olacağından, bu tür ilişki yaygın

değildir. Güvenlik nedenleriyle tablonun bir bölümünü yalıtmak veya ana tablonun yalnızca bir

alt kümesiyle ilgili bilgileri saklamak üzere, birçok alan içeren bir tabloyu bölmek için Bir-Bir

İlişkisi kullanılabilir.

Şekil 36: Bir-Bir İlişkisi

Bir-Çok İlişkisi (1 - n)

İlişkisel veritabanlarında en çok kullanılan ilişki türü, Bir–Çok İlişkisi’dir. Bir–Çok

İlişkisinde, “A” Tablosundaki bir kayıt, “B” tablosunda pek ÇOK eşleşen kayda sahiptir. Ancak

“B” Tablosundaki kayıt, “A” Tablosunda yalnızca BİR eşleşen kayda sahiptir.

Örneğin; bir yazar, birden ÇOK kitap yazabilir ancak her kitabın yalnızca BİR Yazarı

vardır. Birden çoğa ilişkide bir tablodaki anahtar ilişkili olduğu tabloda birden çok kez olabilir.

Şekil 37: Bir-Çok İlişkisi

Page 96: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

83

Yukarıdaki şekilde bir karikatürcünün birden fazla karikatüre sahip olabileceğini çıkartabiliriz.

Çünkü Karikatür tablosunda ilişkili olduğu tablonun anahtarı bulunuyor (Foreign Key). Bu

ilişki türü en çok kullanılan ilişki türüdür.

Çok – Çok İlişkisi (n-m)

Çok–Çok İlişkisinde, “A” Tablosundaki bir kayıt, “B” tablosunda bulunan pek ÇOK

kayıtla eşleşebilir ve “B” Tablosundaki bir kayıt, “A” Tablosunda bulunan pek ÇOK kayıtla

eşleşebilir.

Bu tür bir ilişki, birincil anahtarın birden fazla alanı içerdiği, birleşme tablosu olarak

adlandırılan, A ve B Tablolarından gelen yabancı anahtarların yer aldığı üçüncü bir tablonun

tanımlanması koşuluyla mümkündür.

Çoktan çoğa ilişkiler karmaşıklığı nedeniyle veritabanında birçok soruna neden olur. Soruna

neden temek olarak şudur; bir tablodaki anahtar ilişkili olduğu tabloda birden çok kez

olabilirken karşıtı da doğrudur. Bu yüzden istenilen ilişkiselliği sağlamak için ilişkiyi birden

çoğa indirgemek gerekir. Yani araya fazladan bir tablo koyarak karmaşıklıktan kurtulmuş

oluruz.

Örneğin; bir futbolcu birden fazla takımda oynayabilirken aynı takım birden fazla oyuncu

oynatabilir olduğunu varsayalım. Öncelikle Futbolcular ve Takımlar adında aşağıdaki şekildeki

gibi iki tane tablo oluşturalım:

Şekil 38: Çok – Çok İlişkisi

Anahtarı ilişkisel olduğu tabloya Foreign Key (Komşu Anahtar) ekleyerek çoktan çoğa ilişkiyi

sağlamak düşünürseniz mümkün değil. Bu yüzden araya aşağıdaki gibi bir tablo ekleyelim:

Page 97: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

84

Şekil 39: Çok – Çok İlişkiye Foreing Key Ekleme

Böylece ilişkisel veritabanı tasarımını yapmış olduk. Çoktan çoğa ilişkiyi birden çoğa

indirgediğimiz için iki tane birden çoğa ilişki elde ettik yine bu sebepten iki tane FK (Foreign

Key) ortaya çıktı. Dolayısıyla SQL sorgusu iki adet olacak. Birincisi bir futbolcunun oynadığı

takımlar, ikicisi ise bir takımda oynayan futbolcular olacak.

Page 98: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

85

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Access veritabanı üzerinde veritabanı oluşturma uygulaması yapılmalı

Access veritabanı üzerinde tablo oluşturma uygulaması yapılmalı

Access veritabanı üzerinde tabloya alan ekleme ve alan çıkarma uygulaması yapılmalı

Page 99: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

86

Uygulama Soruları

1. Access veritabanı üzerinde veritabanı oluşturunuz.

2. Access veritabanı üzerinde tablo oluşturarak uygun alanlar ekleyiniz.

3. Access veritabanı üzerinde varolan tabloda alan veri türünü değiştiriniz, yeni alan

ekleyip alan çıkartınız.

Page 100: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

87

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde Access veritabanı programı üzerinde veritabanı oluşturmayı, tablo

oluşturmayı, tabloda alan oluşturmayı, alanların veri türünü belirlemeyi öğrendik. Bunların

yanında Access veritabanında önemli işlevlere sahip olan Oluştur sekmesi ve Dış veri

sekmesindeki menülerin ne işe yaradığını öğrendik. Ayrıca ilişki türlerinin bir-bir, bir-çok ve

çok-çok olduğunu öğrenmiş olduk.

Page 101: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

88

Bölüm Soruları

1. Access veritabanı programında yeni bir veritabanı oluşturma adımları aşağıdakilerden hangisidir? A. Giriş -> Yeni -> Boş Veritabanı B. Oluştur -> Yeni -> Boş Veritabanı C. Dosya -> Yeni -> Boş Veritabanı D. Dış Veri -> Yeni -> Boş Veritabanı E. Veritabanı Araçları -> Yeni -> Boş Veritabanı

2. Access veritabanı programında yeni bir tablo oluşturma adımları aşağıdakilerden hangisidir? A. Dosya -> Tablo B. Giriş -> Tablo C. Dış Veri -> Tablo D. Oluştur -> Tablo E. Veritabanı Araçları -> Tablo

3. A tablosundaki bir kaydın B tablosundan bir kayda karşılık geldiği ilişki türü aşağıdakilerden hangisidir? A. Bir – Bir B. Bir – Çok C. Çok – Çok D. Bir - Üç E. Hiçbiri

4. A tablosundaki bir çok kaydın B tablosundan bir çok kayda karşılık geldiği ilişki türü aşağıdakilerden hangisidir? A. Bir – Bir B. Bir – Çok C. Çok – Çok D. Bir – Üç E. Hiçbiri

5. Access veritabanı dosya uzantısı aşağıdakilerden hangisidir? A. .mdf B. .mdb C. .doc D. .xls E. .ppt

Page 102: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

89

6. Access veritabanında bir tabloya veri girmek, güncellemek veya görüntülemek için aşağıdakilerden hangisi kullanılır? A. Tablo B. Sorgu C. Form D. Rapor E. Makro

7. Access veritabanında var olan veritabanını açmak için aşağıdaki yollardan hangisini kullanmak gerekir? A. Dosya -> Bilgi B. Dosya -> Aç C. Dosya ->Yeni D. Veritabanı Araçları -> Aç E. Dış Veri -> Aç

8. Access veritabanı programında Oluştur sekmesi altında hangi bölümler yoktur? A. Tablo Tasarımı B. Sorgu Tasarımı C. Form Tasarımı D. Rapor Tasarımı E. Plan Tasarımı

9. Access veritabanı programında Tablolar grubu hangi sekmede yer alır? A. Giriş B. Oluştur C. Dış Veri D. Veritabanı Araçları E. Dosya

10. Access veritabanında basit sorgu, çapraz sorgu, yinelenenleri bulma sorgusu veya eşleşmeyenleri bulma sorgusu oluşturmamızı sağlayan A. Sorgu Tasarımı B. Sorgu Sihirbazı C. Tablo Tasarımı D. Form Sihirbazı E. Rapor Sihirbazı

Cevaplar

1)C 2)D 3)A 4)C 5)B 6)C 7)B 8)E 9)B 10)B

Page 103: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

90

6. SQL - YAPISAL SORGULAMA DİLİ

Page 104: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

91

Bu Bölümde Neler Öğreneceğiz?

6.1. SQL Dilinin Yapısı

6.2. SQL Deyimleri

6.3. Sorgu Oluşturma

Page 105: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

92

Bölüm Hakkında İlgi Oluşturan Sorular

1. SQL Nedir? Açıklayınız.

2. Sorgu Niçin Oluşturulur? Açıklayınız.

3. Sorgu Türleri Nelerdir?Açıklayınız.

4. SQL Deyimleri Nelerdir? Açıklayınız.

Page 106: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

93

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

Sorgu Access veritabanında sorgu

oluşturabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

SQL Dilinin Yapısı SQL Dilinin yapısını kavrar,

Access’te uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

SQL Deyimleri SQL Deyimlerini kavrar,

Access veritabanında bu

deyimlerin uygulamasını

yapabilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 107: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

94

Anahtar Kavramlar

SQL, DDL, DML, Create, Alter, Drop, Insert Into, Delete, Update, Select

Page 108: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

95

Giriş

Veritabanında tablo oluşturma işleminden sonra önemli işlem “Sorgular”

oluşturmaktır. Tablolardaki kayıtlarda silme, ekleme, sıralama, seçme, değiştirme gibi

işlemlere ihtiyaç duyulduğunda sorguları kullanmak gerekir. Ayrıca, yapılan bir takım işlemleri

otomatikleştirmek ve verilerde yapılan değişiklikleri kaydetmeden önce gözden geçirmek

istendiği zaman da sorgular oluşturulur.

Tablonun yapısına ve verileri görüntüleme yöntemine göre değişik özelliklerde sorgular

hazırlanmaktadır. Seçme sorguları, parametre sorguları, çapraz sorgular, eylem sorguları ve

SQL sorguları kullanılan sorgu türleridir.

Ø Seçme Sorguları: En sık kullanılan sorgu türüdür. Seçme sorguları, bilgileri

“veri sayfası görünümü”nde gösteren veritabanı nesnesi türüdür. Sorgu, verileri

bir veya birden fazla tablodan, mevcut sorgulardan veya bunların her ikisinden

alabilmektedir.

Ø Parametre Sorguları: Parametre sorguları, çalıştırıldığı zaman bir ölçüt

girilmesini sağlayan iletişim kutusunu açan sorgulardır. Örneğin bir okuldaki

personelin ocak ayında sevk aldığı günleri görmek istiyorsak, açılan iletişim

kutusuna ölçüt olarak istenilen tarih aralıkları girilir ve bu tarihler arasındaki

veriler listelenir.

Ø Çapraz Sorgular: Bir tablodaki bilgileri analiz etmek, karşılaştırmak ve

tablonun özetini hazırlamak için kullanılan sorgu türüdür. Belirtilen iki alana

göre istenilen işlemi (toplama, ortalama, vs.) tablo şeklinde göstermekte

kullanılır.

Ø Eylem Sorguları: Tek işlemle birçok kayıtta değişiklik yapan sorgulardır. Silme

sorgusu, güncelleştirme sorgusu, ekleme sorgusu ve tablo yapma sorgusu olmak

üzere dört çeşit eylem sorgusu vardır.

Ø SQL Sorguları: SQL deyimlerini kullanarak veritabanını güncelleştirme ve

yönetme ile ilgili oluşturulan sorgulardır.

Page 109: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

96

6.1. SQL Dilinin Yapısı

SQL (Structured Query Language), veritabanındaki verileri okumak, güncellemek, yeni

veri eklemek, verileri silmek vb. gibi işlemleri yapan, program yazarken kolaylıklar sağlayan,

satırlarca kodun yaptığı işlemi tek bir sorguda yapabilen, yapısal bir sorgulama dilidir.

• Yapısal sorgulama dilidir.

• Veritabanları için geliştirilmiştir.

• Programcının gerek veri üzerinde işlem gerekse veri tanımlamasını kolaylaştıran

bir dildir.

• Tüm yazılım geliştiriciler SQL öğrenmek zorundadır.

• SQL bir programlama dili değil, sorgulama dilidir.

6.2. SQL Deyimleri

SQL komutları işlevlerine göre 3'e ayrılır:

1. DDL (Data Definition Language) Veri Tanımlama Dili:

Yeni tablo oluşturma, var olan tablo üzerinde değişiklik yapma ve tablo silme

işlemlerini yerine getirirler. (CREATE, ALTER, DROP)

2. DML (Data Manuplation Language) Veri Düzenleme Dili:

Bir tablo içerisinde bulunan veriler üzerinde sorgulama, ekleme, güncelleme ve silme

işlemlerini gerçekleştirir. (INSERT, DELETE, UPDATE, SELECT)

3. DCL (Data Control Language) Veri Kontrol Dili:

Bu gruptaki komutlar, kullanıcılara veritabanı üzerinde bazı haklar verme veya verilen

hakları geri alma gibi işlemlere olanak tanıyan komutlardır. (GRANT, DENY, REVOKE vb.)

Page 110: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

97

6.2.1. DDL (Data Definition Language) Veri Tanımlama Dili

CREATE (Nesne Oluşturmak)

Veritabanındaki nesnelerin oluşturulabilmesi için CREATE komutu kullanılır.

Oluşturulacak nesnenin özellikleri dikkate alınarak farklı parametreler kullanılmalıdır.

Örnek:

Create Table Ogrenci(

OgrNo int,

AD varchar(10),

SOYAD varchar(10))

/*Ogrenci adında tablo oluşturur. Tablo sütunları OgrNo, AD, SOYAD’dır. */

Şekil 40: Access Veritabanında Tablo Oluşturma

Çalıştır düğmesine basıldığında aşağıdaki sonuç elde edilir.

Şekil 41: Access Veritabanında Sorguyla Oluşturulan Tablo ve Alanlar

Page 111: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

98

ALTER (Nesnelerde Değişiklik Yapmak)

Mevcut veritabanı tablosunda alan ekler veya alan siler.

Örnek:

Alter Table Ogrenci add TCNo int /* Ogrenci tablosuna TCNo isimli alan ekler. */

Şekil 42: Mevcut Veritabanına Sorguyla Alan Ekleme

Şekil 43: Mevcut Veritabanına Sorguyla Eklenen Alan

Örnek:

Alter Table Ogrenci Drop Column OgrNo /*Ogrenci tablosundan OgrNo isimli alanı

siler.*/

Şekil 44: Tablodan Sorguyla Alan Silme

Şekil 45:Tablodan Sorguyla Silinen Alan

Page 112: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

99

DROP (Nesne Silmek)

Bir nesnenin silinmesini sağlayan komuttur.

Örnek:

drop table Ogrenci /* Ogrenci tablosunu siler*/

Şekil 46: Access Veritabanında Sorguyla Tablo Silme

Şekil 47: Access Veritabanında Sorguyla Silinen Tablo

6.2.2. DML (Data Manuplation Language) Veri Düzenleme Dili

INSERT INTO

Veritabanındaki tabloların belirtilen alanlarına veri eklemek (yeni kayıt) için kullanılır.

Page 113: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

100

Kullanımı:

INSERT INTO Tablo_Adı (Alan listesi) VALUES (Veri listesi)

Tablo_Adı: Kayıt eklenecek tablonun adı

Alan Listesi: Bilgi girişi yapılacak alanların listesi

Veri Listesi: Belirtilen alanlara girilecek bilgilerin listesi

Örnek:

Insert Into Ogrenci (OgrNo, AD, SOYAD) values (0914113056, 'Ali', 'Kaan') /*OgrNo

alanına 0914113056, AD Alanına Ali, SOYAD alanına Kaan ekler. Metin tipindeki alanlara

bilgi girişi yapılırken bilgiler tırnak işaretleri içinde belirtilir. Sayı tipindeki alanlarda ise

doğrudan sayısal ifade yazılır. */

Şekil 48: Tabloya Sorguyla Veri Ekleme

Şekil 49: Tabloya Sorguyla Eklenen Veri

Page 114: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

101

DELETE FROM

Tablodan belirtilen şarta göre veri siler.

Kullanımı:

DELETE FROM Tablo_Adı

Tablo_Adı: Silinecek tablo adı. Bu tablodaki tüm kayıtlar silinir.

Örnek

delete from Ogrenci /* Öğrenci tablosu ve içindeki veriler silinir. */

Ayrıca WHERE komutu kullanılarak süzme işlemine göre de silme işlemi yapılabilir.

Kullanımı

DELETE FROM Tablo_Adı [WHERE şart]

TabloAdı: Kayıtları silinmek istenen tablonun adı

Şart: Delete From deyiminde Where komutu kullanılırsa Şarta uyan kayıtlar silinir.

Örnek

delete from Ogrenci Where AD='Ali' /* Adı 'Ali' olan öğrencilerin verilerini siler. */

Page 115: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

102

UPDATE

Tablodaki verileri güncellemek için kullanılır.

Kullanımı

UPDATE Tablo_Adı Set Alan = İşlem [WHERE Koşul]

Tablo_Adı: Güncelleme yapılacak tablonun adı

Alan: Güncelleme yapılacak alan adı

Koşul: Update deyimi ile Where komutu kullanılırsa koşula uyan kayıtlarda güncelleme

işlemi yapılır.

Örnek

Şekil 50: Update Deyimini Kullanmadan Önce Tablodaki Bilgileri

update Ogrenci set AD='Veli' where SOYAD='Kaan' /* Soyadı Kaan olanların Adını

Veli olarak değiştirir. */

Şekil 51: Update Deyiminin Uygulanması

Page 116: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

103

Şekil 52: Update Deyimini Kullandıktan Sonra Tablodaki Bilgileri

Örnek

update Ogrenci set Notu=Notu*1.20

Ogrenci tablosundaki Not alanındaki değer 1.20 ile çarpılıp tekrar Not alanına

kaydedilir. Yani öğrenci notlarına %20’si kadar eklenmiş olunur.

Örnek

update Ogrenci set Notu=Notu + 20 Where EskiOgr='1'

EskiOgr alanında 1 değeri olan kayıtlara Not alanındaki değere 20 ekler.

SELECT

Veritabanındaki verilere erişmenin diğer bir deyişle onları görmenin yada onları elde

etmenin en sık kullanılan yöntemidir. Genellikle bir yada daha çok tablonun bütün alanları yada

belli alanları için SELECT deyimi kullanılır.

Temel Yapısı:

SELECT [ALL] [DISTINCT] [TOP n [PERCENT]] Liste [INTO yeni tablo] FROM

Tablo

[WHERE ifade]

[GROUP BY ifade]

[ORDER BY ifade]

[HAVING ifade]

Page 117: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

104

Deyimlerin Anlamları:

ALL: Bütün satırların sonuç listesinde görünmesini sağlar.

DISTINCT: Sadece tek olan (unique) kayıtların sonuç listesinde yer almasını sağlar.

Liste: Tablolarda yer alan ve listede yer alması istenen alan listesi

INTO: Yeni bir tablo oluşturmayı sağlar

Yeni Tablo: Sorgu sonucu oluşturulacak tablonun adı

FROM: belli tablonun seçilmesini sağlar. FROM'dan sonra tablo isimleri ve diğer

işlemler gelir.

Tablo: Sorguda kullanılacak tablo adı

WHERE: bu komuttan sonra belirtilen koşula uyan kayıtları listeler.

GROUP BY: kayıtların gruplandırılmasını sağlar. HAVING komutuyla da ara

toplamların alınmasını sağlar.

HAVING: Group By komutu ile SQL Toplama fonksiyonları beraber kullanıldığında

hesaplanan kayıtlarda kısıtlama yapar

ORDER BY: Belirtilen alana göre kayıtları sıralamayı sağlar. ASC kullanılırsa

sıralama artan, DESC kullanılırsa azalan olur.

Örnek

select * from Ogrenci /*Bu ifade de * işareti tüm alanları belirtmektedir. Yani sorguda

tüm alanlar gösterilecekse her alanı tek tek yazmak yerine * işareti kullanılabilir.*/

Şekil 53: Select Deyimi İle Tablodaki Bilgileri Seçme

Page 118: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

105

Şekil 54: Select Deyimi İle Seçilen Tablodaki Bilgiler

Örnek

select AD, SOYAD from Ogrenci /*Sadece Ad ve soyadı listeler*/

Örnek

select AD,[Telefon No] from Ogrenci /*Bu SQL ifadesinde alan isimleri içinde boşluk

karakteri kullanıldığı için köşeli parantezler içinde yazılmıştır.*/

Örnek

SELECT AD, SOYAD,[Telefon No], Vize, Final, Vize * 0.4 + Final * 0.6 As [Başarı

Notu] FROM Ogrenci /*Bu SQL ifadesinde ise Vize ve Final alanlarından sonra görünümde

yeni bir alan eklenmiştir. Bu alan Vize ve Final alanlarını kaynak alarak hesaplanmış ve Alan

adı olarak ta Başarı Notu verilmiştir.*/

Page 119: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

106

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Access veritabanı üzerinde veritabanı oluşturma uygulaması yapılmalı

Access veritabanı üzerinde sorgularla tablo oluşturma uygulaması yapılmalı

Access veritabanı üzerinde tabloya alan ekleme ve alan çıkarma uygulaması sorgu ile

yapılmalı

Access veritabanı üzerinde SQL Deyimleri uygulanmalı

Page 120: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

107

Uygulama Soruları

1. Access veritabanında örnek bir tablo ve alanlarını oluşturunuz..

2. Access veritabanında var olan bir tabloya yeni bir alan ekleyiniz.

3. Access veritabanında var olan bir tablodan bir alan siliniz.

4. Access veritabanında oluşturmuş olduğunuz tabloya sorguyla veri girişi yapınız.

5. Access veritabanında oluşturmuş olduğunuz tablodaki bir kaydı güncelleyiniz.

6. Access veritabanında oluşturmuş olduğunuz tablodaki bir kaydı siliniz.

7. Access veritabanında oluşturmuş olduğunuz tabloya siliniz.

Page 121: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

108

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde tablolardaki kayıtlarda silme, ekleme, sıralama, seçme, değiştirme gibi

işlemlere ihtiyaç duyulduğunda sorguları kullanmak gerektiğini, bu işlemler için kullanmamız

gereken komutların insert into, delete, update ve select olduğunu öğrendik. Ayrıca sorguyla

beraber tablo oluşturmayı, tablo içindeki alanları (sütunları) oluşturmayı öğrendik.

Page 122: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

109

Bölüm Soruları

1. Aşağıdakilerden hangisi DML (Data Manuplation Language) Veri Düzenleme Dili komutlarından değildir?

A. Insert B. Delete C. Create D. Update E. Select

2. Aşağıdakilerden hangisi bir nesnenin silinmesini sağlayan SQL deyimidir? A. Alter B. Create C. Drop D. Update E. Select

3. Aşağıdakilerden hangisi veritabanındaki tabloların belirtilen alanlarına veri eklemek (yeni kayıt) için kullanılan SQL deyimidir? A. Insert Into B. Delete From C. Create D. Update E. Select

4. Aşağıdakilerden hangisi tablodan belirtilen şarta göre veri silme işlemini yapan SQL deyimidir? A. Insert Into B. Delete From C. Create D. Update E. Select

5. Aşağıdakilerden hangisi tablodaki verileri güncellemek için kullanılan SQL deyimidir? A. Insert Into B. Delete From C. Create D. Update E. Select

6. Aşağıdakilerden hangisi veritabanındaki bir veya birden fazla tablodan veri almak için kullanılan SQL deyimidir? A. Insert Into

Page 123: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

110

B. Delete From C. Create D. Update E. Select

7. Aşağıdakilerden hangisi veritabanında kayıtları belirtilen alanda büyükten küçüğe veya küçükten büyüğe göre sıralama işlemi yapan SQL deyimidir? A. Ordey By B. Having C. Group By D. Where E. Distinct

8. Aşağıdakilerden hangisi Select deyimiyle kullanılınca yeni bir tablo oluşturmayı sağlar? A. Distinct B. All C. From D. Into E. Where

9. Birden fazla sütun içinde gruplama yapmak için aşağıdaki SQL deyimlerinden hangisi kullanılır? A. Order By B. Group By C. Select By D. From By E. Into By

10. Aşağıdaki hangi komuttan sonra belirtilen koşula uyan kayıtları listelemek için bu komut kullanılır? A. Distinct B. All C. From D. Into E. Where

Cevaplar

1)C 2)C 3)A 4)B 5)D 6)E 7)A 8)D 9)B 10)E

Page 124: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

111

7. ACCESS'TE SQL FONKSİYONLARI

Page 125: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

112

Bu Bölümde Neler Öğreneceğiz?

7.1. SQL’de Kullanılan İşaretler

7.2. SQL’de Kullanılan Komutlar

7.3. SQL Fonksiyonları

Page 126: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

113

Bölüm Hakkında İlgi Oluşturan Sorular

1. SQL’de Kullanılan işaretler nelerdir? Açıklayınız.

2. SQL’de kullanılan komutlar nelerdir? Hangi ne işe yarar? Açıklayınız.

3. SQL’de kullanılan hazır fonksiyonlar nelerdir? Açıklayınız.

Page 127: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

114

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

SQL’de Kullanılan İşaretler SQL’de Kullanılan İşaretleri

Kavrar, Access veritabanında

bu işaretleri sorgu ile

kullanabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

SQL’de Kullanılan Komutlar SQL’de Kullanılan

Komutları Kavrar, Access

veritabanında bu komutları

sorgu ile kullanabilir,

uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

SQL Fonksiyonları SQL Fonksiyonlarını Kavrar,

Access veritabanında bu

fonksiyonları sorgu ile

kullanabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 128: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

115

Anahtar Kavramlar

DISTINCT, WHERE, ORDER BY, GROUP BY, HAVING, SELECT INTO, LIKE,

BETWEEN, AVG, COUNT, SUM, MAX, MIN, UCASE, LCASE,MID, LEFT, RIGHT, LTRIM,

RTRIM

Page 129: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

116

Giriş

Bu bölümde SQL’de kullanılan işaretler, operatörler, SQL’de kullanılan Komutlar ve

SQL Fonksiyonları işlenecektir. Bu konuların öğrenilmesiyle beraber sorgu oluşturulması

kolaylaşacak, veritabanındaki verileri işleme daha anlaşılır hale gelecektir.

Page 130: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

117

7.1. SQL’de Kullanılan İşaretler

* İşareti

SQL deyimlerinde * işareti iki farklı amaç için kullanılır.

• Matematiksel işlemlerde çarpma işlemi olarak görevi vardır.

• Select * From ifadesinde kullanıldığında ise tüm alanların görünümde yer

alacağını belirtir.

+ İşareti

SQL deyimlerinde + işareti, metinleri birleştirmek için kullanılır.

Örnek:

Adı alanı ile Soyadı Alanındaki bilgiler birleştiriliyor.

select AD+' ' +SOYAD from Ogrenci /*Adı alanındaki bilgi alınır, bir adet boşluk

karakteri eklenir ve Soyadı alanındaki bilgi eklenir. Böylece yeni oluşan alanda Adı ve Soyadı

arasında bir adet boşluk bırakılmış olur.*/

Şekil 55: Artı Operatörü İle Birleştirme Sorgusu

Şekil 56: Artı Operatörü İle Birleştirme Sorgusu Sonucu

Page 131: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

118

As Komutu

SQL deyimleri ile oluşturulan görünüm sorgularında alan ve tablo isimlerini

değiştirmek için kullanılır.

Not: As komutu ile adı değiştirilen alanların ve tabloların gerçekte adı değişmez. Sadece

oluşturulan görünümde değişir.

Örnek

select ad+soyad as AdıSoyadı from Ogrenci

Şekil 57: As Komutunun Kullanımı

[ ] Köşeli Parantezler

SQL deyimlerinde köşeli parantezler Alan ve Tablo isimlerinde kullanılır. Normalde

tüm tablo ve alan isimleri köşeli parantezler içinde yazılmalıdır. Fakat tek parçadan oluşan alan

ve tablo isimleri için köşeli parantez gerekmez.

Örnek

select AD,[Telefon No] from Ogrenci /*Bu SQL ifadesinde alan isimleri içinde boşluk

karakteri kullanıldığı için köşeli parantezler içinde yazılmıştır.*/

Page 132: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

119

( ) Parantezler

SQL deyimlerinde normal Parantezler;

• Hazır fonksiyonlarda parametreler için kullanılır.

• Matematiksel işlemlerde işlemleri gruplandırarak işlem önceliği vermek için

kullanılır.

• SQL ifadelerini gruplandırmak için kullanılır.

7.2. SQL’de Kullanılan Komutlar

DISTINCT Komutu

Alan içinde yer alan kayıtlarda aynı olan bilgilerden sadece bir adet gösterir.

Kullanımı

Select Distinct AlanAdı from TabloAdı

Örnek

select ad from Ogrenci

Şekil 58: Select Deyiminin Kullanımı

Page 133: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

120

select distinct ad from Ogrenci

Şekil 59: DISTINCT Komutunun Kullanımı

WHERE Komutu

SELECT FROM cümlesine ilave olarak kullanılır. WHERE komutu ile belirtilen koşula

uygun olan kayıtların gösterilmesi sağlanır. WHERE komutundan sonra Şart ifadesi gelmelidir.

Kullanım Yerleri

SELECT Alanlar FROM Tablo_Adı WHERE Şart

DELETE FROM Tablo_Adı WHERE Şart

UPDATE Tablo_Adı Set Alan = .... WHERE Şart

Örnek

SELECT * FROM Musteri WHERE Bakiye > 400

Veritabanında bulunan Musteri tablosunun görünümü oluşturulmaktadır. Bu

görünümde Bakiye alanındaki değer 400'ün üzerinde olan kayıtlar listelenmektedir.

Aşağıda WHERE komutu ile koşul oluştururken kullanılabilecek operatörler

listelenmiştir.

Page 134: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

121

Operatör Anlamı Örnek

> Büyüktür Bakiye > 400

< Küçüktür Bakiye < 400

>= Büyük eşit Bakiye >= 400

<= Küçük eşit Bakiye <= 400

<> Eşit değil Bakiye <> 400

Like içerir

Adı Like 'A*' A ile başlayan

Adı Like '*a*' içinde a harfi geçen

Adı Like '*a' A harfi ile biten

BETWEEN . AND . Arasında Bakiye between 200 and 300

NOT Değil NOT Bakiye > 400

AND Ve birleştirme operatörü Bakiye > 400 AND Adı = 'Mehmet'

OR Veya birleştirme operatörü Bakiye > 400 OR Adı = 'Mehmet'

Tablo 2: SQL’de Kullanılan Operatörler

ORDER BY Komutu

Sorgu sonuçlarını belirtilen alanlara göre artan veya azalan şekilde sıralar

Kullanım şekli

SELECT Alanlar FROM tablo WHERE Şart [ORDER BY Alan1 [ASC | DESC ][,

Alan2 [ASC | DESC ]][, ...]]]

Not: İki veya daha fazla alana göre sıralama yapılıyorsa, ilk alana göre kayıtlar sıralanır,

ilk alanda aynı değeri içeren kayıtlar ise kendi içinde ikinci alana göre sıralanırlar.

Örnekler:

Aşağıdaki örneklerde Musteriler tablosundaki kayıtlar Soyadı alanına göre artan şekilde

sıralanıyor. Sıralama ölçütü ASC ve DESC ile belirtilmesze ASC olduğu kabul edilir.

SELECT Adı, Soyadı FROM Musteriler ORDER BY Soyadı;

Page 135: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

122

SELECT Adı, Soyadı FROM Musteriler ORDER BY Soyadı ASC;

Aşağıdaki örnekte Musteriler tablosundaki kayıtlar Maas alanına göre azalan ve ikinci

sıralama ölçütü olarak Soyadı alanına göre sıralanır.

SELECT Soyadı, Maaş FROM Musteriler ORDER BY Maas DESC, Soyadı;

Aşağıdaki örnekte Notlar tablosundaki kayıtlarda Başarı Notu adında yeni bir alan

tanımlanıyor ve bu alanda "Vize*0.4+Final*0.6" hesabı yapılıyor. Bu oluşan "Başarı Notu"

alanına göre kayıtlar Büyükten küçüğe doğru sıralanıyor.

SELECT Vize, Final, Vize*0.4+Final*0.6 as [Başarı Notu] FROM Notlar ORDER BY

Vize*0.4+Final*0.6 DESC;

Örnek

select OgrNo,AD, SOYAD, Vize from Ogrenci order by Vize desc /*Öğrencileri

ÖğrenciNo, Ad, Soyad, Vize alanların arasında vize notuna göre azalan şeklinde sıralar.*/

GROUP BY Komutu

Bir veritabanı tablosunda seçilmiş olan alanlarda aynı değeri içeren kayıtlardan birer

adet gösterilmesini sağlayan komuttur. Bu komutla birlikte SQL'de toplama fonksiyonları

(Örneğin Sum, Avg, Min vb) kullanılır.

Kullanımı

SELECT alanlar FROM tablo WHERE şart ifadesi GROUP BY gruplanacak alanlar

Örnek

select SOYAD from Ogrenci Group By SOYAD /*Ogrenci tablosundaki SOYADlardan

aynı olanlardan birer tane gösterir.*/

HAVING Komutu

Group By komutu ile gruplandırma oluşturulup, bu gruplandırmada SQL Toplama

fonksiyonları kullanıldıysa, bu fonksiyonlarla çıkan sonuçlar üzerinde bir süzme işlemi

Page 136: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

123

uygulanacaksa HAVING komutu kullanılır. Normal süzme işleminde WHERE komutu

kullanılır.

Kullanımı

SELECT Alanlar FROM tablo WHERE NormalSeçmeŞartı GROUP BY GrupListesi

HAVING GrupSeçmeŞartı

Örnek

Musteri tablosunda Sehir adında bir alan bulunmaktadır. Hangi sehirde kaç müşteri

olduğunu bulan ve 10 müşteriden az olan şehirlerin listesini veren SQL deyimi

SELECT Sehir, Count(Sehir) FROM Musteri Group By Sehir HAVING Count(Sehir)< 10

Örnek

select AD, COUNT (AD) from Ogrenci group by AD having COUNT(AD)<=2

/*Ogrenci tablosundaki AD alanına bakarak hangi addan kaç tane öğrenci var ve ogrenci

sayısı 2 ye eşit ve ikiden az olanları lisyteler.*/

SELECT … INTO Deyimi

Sorgu sonucunu Yeni bir tablo olarak kaydeder.

Kullanımı

SELECT Alanlar INTO YeniTabloAdı FROM KaynakTablo

Örnek

Musteriler tablosundaki maas alanındaki değerler 1000 ve üzerinde olan kayıtlar

yenitablo ismindeki bir tabloya kaydediliyor.

SELECT * INTO YeniTablo FROM Musteriler WHERE Maas >= 1000

Page 137: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

124

Örnek

Select * into YeniOgrenci from Ogrenci where AD='Ali' /*Adı Ali olan öğrencileri

YeniOgrenci adında tablo oluşturarak kaydeder. */

TOP n [PERCENT] Komutu

Sorgu sonucunda baştan veya Order By .. Desc kullanılarak sondan belirtilen sayıda

veya oranda kaydı gösterir.

Örnek

Öğrenciler tablosunda 2005 yılında mezun olan öğrencilerden ilk 25 adedinin listesini

veren SQL ifadesi

SELECT TOP 25 OgrNo, Adı, Soyadı FROM Ogrenciler WHERE MezunYılı=2005

Örnek

select top 3 OgrNo, BasariNotu from Ogrenci where BasariNotu>2 order by

BasariNotu asc /*Öğrenci tablosunda başarı notu 2 den büyük olanlardan 3 adetini en küçükten

büyüğe doğru (artan) şeklinde OgrNo ve Başaarı notunu yazarak listeler. */

select top 10 percent OgrNo, BasariNotu from Ogrenci where Mezuniyet=2005 order

by BasariNotu desc /*Ogrenciler tablosundaki mezuniyet yılı 2005 olanlar arasında başarı

notu bakımından %10 ‘a girenleri listeler. */

Page 138: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

125

LIKE Komutu

Where deyimi ile birlikte kullanılır. Aramak istenilen alanda (sütunda) bulunan veriler

içerisinde belirli kayıtları listelemek için kullanılır.

Karakter Açıklama

* Tüm İfadeler

? Tek Karakter

Tablo 3: Like Komutunda Kullanılan Operatörler

Select <Sütun_Adı> from <Tablo_Adı> where <Sütun_Adı>Like <Koşul_İfadesi>

Karakter Açıklama Like ‘*a’ Son karakteri “a” olan tüm veriler Like ‘*a*’ İçerisinde “a” olan tüm veriler Like ‘a*’ “a” ile başlayan veriler Like ‘?a’ İkinci karakteri “a” olan ve iki karakterli tüm veriler Like ‘a??’ İkinci karakteri “a” olan toplam 3 karakterli tüm veriler

Tablo 4: Like Komutunun Kullanımı İle İlgili Örnekler

Örnek

select * from Ogrenciler where Ad Like 'a*' /* Ogrenciler tablosunda Adres sütununda

"a" ile başlayan tüm veriler*/

Şekil 60: Like Komutunun Kullanımı

Page 139: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

126

Şekil 61: Like Komutunun Kullanım Sonucu

BETWEEN Komutu

Belirlenen sütun içerisinde iki değer arasındaki bilgileri getirmek için kullanılır.

Select <sütuna_adı> from <Tablo_adı> where <sütun_adi> between <ilk_değer> and

<İkinci_değer>

Örnek

select * from Notlar where F Between 25 and 50 /* Notlar tablosunda F sütununda final

notları 25 ve 50 arasında olanları listeler.*/

IN Komutu

Sütun içerisinde sadece istediğimiz değerleri içeren verileri getirecektir.

Select <sütuna_adı> from <Tablo_adı> where <sütun_adi> IN (<değer1,değer2>)

Örnek

select * from Ogrenciler where Adi IN ('Erkan','Mustafa','Selçuk') /* Öğrenciler

tablosunda Adi sütununda Erkan, Mustafa, Selçuk ismindeki öðrencilere ait bilgileri listeler.*/

NEWID Komutu

Tablo içerisinde yer alana verilerden rastgele satırlar getirmek için kullanılır.

Select <sütuna_adı> from <Tablo_adı> order by NEWID()

Page 140: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

127

Örnek

select * from Ogrenciler order by NEWID() /* Ogrenciler tablosundaki verileri rastgele

listeler*/

7.3. SQL Fonksiyonları

AVG () – AVERAGE

Sütundaki değerlerin ortalamasını almak için kullanılır.

Select AVG (<sütun_adi>) from <tablo_adi>

Örnek

Şekil 62: AVG Fonksiyonun Kullanılacağı Tablo

select AVG(Final) from Tablo4 /* Tablo4 tablosundaki Final sütunundaki yani final

notlarının ortamalasını alır.*/

Şekil 63: AVG Fonksiyonun Kullanılması İle Gösterilen Sonuç

COUNT()

Seçilmiş olan sütundaki boş olmayanların kayıtların adedini verir.

Select COUNT (<sütun_adi>) from <tablo_adi>

Page 141: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

128

Örnek

Şekil 64: COUNT Fonksiyonun Kullanılacağı Tablo

select COUNT(Vize) from Tablo4 /* Tablo4 tablosundaki Vize sütununda kaç kayıt

olduğunu listeler.*/

Şekil 65: COUNT Fonksiyonun Kullanılması İle Gösterilen Sonuç

SUM ()

Seçilmiş olan sütundaki kayıtları toplar.

Select SUM (<sütun_adi>) from <tablo_adi>

Örnek

Şekil 66: SUM Fonksiyonun Kullanılacağı Tablo

select SUM(Vize) from Tablo4 /* Tablo4 tablosundaki Vize sütunundaki kayıtları toplar

ve sonucu listeler.*/

Şekil 67: SUM Fonksiyonun Kullanılması İle Gösterilen Sonuç

Page 142: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

129

MAX ()

Seçilmiş olan sütundaki en büyük değeri listeler.

Örnek

Şekil 68: MAX Fonksiyonun Kullanılacağı Tablo

select MAX(Vize) from Tablo4 /* Tablo4 tablosundaki Vize sütunundaki kayıtlar

arasından en büyük olan değeri listeler.*/

Şekil 69: MAX Fonksiyonun Kullanılması İle Gösterilen Sonuç

MIN ()

Seçilmiş olan sütundaki en küçük değeri listeler.

Örnek

Şekil 70: MIN Fonksiyonun Kullanılacağı Tablo

select MIN(Final) from Tablo4 /* Tablo4 tablosundaki Final sütunundaki kayıtlar

arasından en küçük olan değeri listeler.*/

Page 143: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

130

Şekil 71: MIN Fonksiyonun Kullanılması İle Gösterilen Sonuç

UCASE ( )

Belirtilen sütundaki tüm verileri büyük harfle göstermek için kullanılır.

Örnek

Şekil 72: UCASE Fonksiyonun Kullanılacağı Tablo

select ucase(Ad) from Ogrenci /* Ogrenci tablosundaki Ad sütunundaki tüm verileri

büyük harfle gösterir*/

Şekil 73: UCASE Fonksiyonun Kullanılması İle Gösterilen Sonuç

Page 144: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

131

LCASE ( )

Belirtilen sütundaki tüm verileri küçük harfle göstermek için kullanılır.

Örnek

Şekil 74: LCASE Fonksiyonun Kullanılacağı Tablo

Select lcase (Ad) from Ogrenci /* Ogrenci tablosundaki Ad sütunundaki tüm verileri

küçük harfle gösterir*/

Şekil 75: LCASE Fonksiyonun Kullanılması İle Gösterilen Sonuç

MID ( )

Belirtilen sütundaki verilerin belirlenen karakterleri göstermek için kullanılır.

Select MID (<Sütun_adı>, <Başlangıç>, <Kaç_Karakter>) from <tablo_adı>

Örnek

select mid (Ad,1,4) from Ogrenci /* Ogrenci tablosundaki Ad sütunundaki verilerin 1.

karakterinden 4. karakterine kadar tüm verileri listeler*/

Page 145: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

132

Şekil 76: MID Fonksiyonunun Kullanımı

LEFT ( )

Verilen metinden belirtilen sayıda soldan karakter geriye döndürür.

Örnek

select ad, LEFT(ad,3) from Ogrenci /* Ogrenci tablosundaki Ad alanındaki verileri

listelerken sadece ilk 3 karakteri listeler.*/

Şekil 77: LEFT Fonksiyonunun Kullanımı

RIGHT ( )

Verilen metinden belirtilen sayıda sağdan karakter geriye döndürür.

Örnek

select ad, RIGHT(ad,4) from Ogrenci /* Ogrenci tablosundaki Ad alanındaki verileri

listelerken sadece son 4 karakteri listeler.*/

Page 146: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

133

Şekil 78: RIGHT Fonksiyonunun Kullanımı

LEN ( )

Verilen Metnin karakter sayısını geriye döndürür.

Örnek

select ad, len (Ad) from Ogrenci /* Ogrenci tablosundaki Ad alanındaki verilerin

karakter sayısını listeler.*/

Şekil 79: LEN Fonksiyonunun Kullanımı

LTRIM ( )

Verilen metnin sol tarafındaki boşluk karakterlerini silerek kalan kısmı geriye döndürür.

Örnek

select ad, ltrim (Ad) from Ogrenci /* Ogrenci tablosundaki Ad alanındaki verilerin sol

tarafındaki boşlukları silerek listeler.*/

Page 147: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

134

Şekil 80: LTRIM Fonksiyonunun Kullanımı

RTRIM ( )

Verilen metnin sağ tarafındaki boşluk karakterlerini silerek kalan kısmı geriye döndürür.

Örnek

select Ad, rtrim (Ad) from Ogrenci /* Ogrenci tablosundaki Ad alanındaki verilerin sağ

tarafındaki boşlukları silerek listeler.*/

Şekil 81: RTRIM Fonksiyonunun Kullanımı

7.4. Access Veritabanında Kullanılan Fonksiyonlar

Aşağıda Access veritabanında kullanılan fonksiyonlar gruplara ayrılarak sıralanmıştır.

Alfa sayısal fonksiyonlar

• Asc : Alfasayısal bilginin Ascii kodunu verir.

• Chr : Sayısal bilgi karşılığı olan karakteri verir.

• Str : Sayısal bilgiyi alfa sayısala değiştirir.

Page 148: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

135

• Val : Alfa sayısal bilgiyi sayısala çevirir.

• Format : Verilen bilgiyi belirtilen format yapısına çevirir.

• InStr : 2 alfa sayısal bilginin arasında 2.‟de tanımlanan duruma göre

karşılaştırma yapar.

• Left : Alfa sayısal bilginin sol tarafında belirtilen miktarda karakter alır.

• Right : Alfa sayısal bilginin sağ tarafında belirtilen miktarda karakter alır.

• Mid : Alfa sayısal bilginin belirtilen konumundan tanımlanan miktarda karakter

alır.

• Len : Alfa sayısal bilgi uzunluğunu hesaplar.

• LTrim : Alfa sayısal bilginin sol tarafındaki boşlukları atar.

• RTrim : Alfa sayısal bilginin sağ tarafındaki boşlukları alır.

• Trim : Alfa sayısal bilginin sağ ve solundaki boşlukları alır.

• LCase : Alfabetik bilgileri küçük harfe çevirir.

• UCase : Alfabetik bilgileri büyük harfe çevirir.

Karşılaştırma Fonksiyonu

• IIF: Karşılaştırma işleminde iki şıktan birinin yapılmasını sağlar.

Tarih Fonksiyonları

• Day : Verilen tarihteki gün rakamını saptar.

• Weekday : Verilen tarihteki iş gününün rakamını saptar.

• Month : Verilen tarihteki ay rakamını saptar.

• Year : Verilen tarihteki yılı saptar.

• Date : Sistem tarihini verir.

• Now : Sistemin tarih ve saatini verir.

• Time : Sistem saatini verir.

• DateDiff : İki tarih arasındaki gün, ay, yıl farkını saptar.

Örnekler:

• DateDiff (“d”, baĢ.tarihi, bit.tarihi) : iki tarih arası gün farkını verir.

• DateDiff (“m”, baĢtarihi, bittarihi) : iki tarih arası ay farkını verir.

• DateDiff (“yyyy”, baĢtarihi, bittarihi) : iki tarih arası yıl farkını verir.

Page 149: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

136

• DateDiff (“q”, baĢtarihi, bittarihi) : iki tarih arası dönem farkını verir.

• DateDiff (“y” , baĢtarihi, bittarihi) : yıl içindeki gün farkını verir.

• DateDiff (“w”,baĢtarihi, bittarihi) : iş günleri farkını verir.

• DateDiff(“ww”,baĢtarihi, bittarihi) : iş hafta farkını verir.

• DateDiff(“h”,baĢtarihi, bittarihi) : iş saat farkını verir.

• DateDiff(“m”,baĢtarihi, bittarihi) : iş dakika farkını verir.

• DateDiff(“s”,baĢtarihi, bittarihi) : iş saniye farkını verir.

• DateAdd : Verilen bir tarihe gün, ay, yıl ekleyerek yada çıkararak yeni bir tarih

elde edilir.

• DatePart : Tanımlanan bir tarihi belirtilen süre koduna göre parçalayarak verir.

Sayısal Bilgilere Dönüştürme Fonksiyonları

• CCur : Sayısal bilgileri para birimi yapısına çevirir.

• CDbl : Sayısal bilgileri çift duyarlıklı yapıya çevirir.

• CInt : Sayısal bilgileri tamsayı yapısına çevirir.

• CLng : Sayısal bilgileri uzun tamsayı yapısına çevirir.

• CSng : Sayısal bilgileri tek duyarlıklı yapıya çevirir.

• CStr : Sayısal bilgileri alfa sayısal yapıya çevirir.

• CVal : Alfa sayısal bilgileri sayısal yapıya çevirir.

• CVDate : Sayısal bilgileri tarih yapısına çevirir.

Matematiksel Fonksiyonlar

• Abs : sayısal bilginin mutlak değerini verir

• Atn : verilen tan açı değerini raydan değere çevirir.

• Cos : kosinüsünü hesaplar.

• Exp : sayısal değeri üssel değere çevirir.

• Fix : ondalıklı sayının tam sayı kısmını verir.

• Int : ondalıklı sayıyı tam sayıya yuvarlar.

• Log : ondalıklı değerin e tabanına göre logaritmasını alır.

Page 150: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

137

• Rnd : rasgele sayı üretir.

• Sgn : sayısal değerin işaretini verir.

• Sin : sinüsünü hesaplar.

• Tan : tanjantı hesaplar.

SQL Fonksiyonları

• Avg: referans edilen alan bilgilerinin aritmetik ortalamasını alır.

• Count: referans edilen alandaki sayısal bilgi adedini saptar.

• First: referans edilen alandaki ilk kayıt bilgisini saptar.

• Last: referans edilen alandaki son kayıt bilgisini saptar.

• Max: referans edilen alandaki en büyük değeri saptar.

• Min: referans edilen alandaki en küçük değeri saptar.

• Sum: referans edilen alan bilgilerinin toplamını alır.

• StDer: referans edilen alandaki değerlerin standart sapmasını alır.

• StDerp: referans edilen alandaki verilerin statiksel standart sapmasını alır.

• Var: referans edilen alandaki değerlerin varyansını alır.

• Varp: referans edilen alandaki değerlerin statik varyansını alır.

Bilgi Kontrol Fonksiyonları

• IsDate: tanımlanan alan bilgisinin tarih yapısına çevrilip çevrilemeyeceğini

kontrol eder.

• IsEmpty: tanımlanan alan bilgisinin boş olup olmadığını kontrol eder.

• IsNull: bilgilerin okutulmasında son kayıttan sonraki boş alan durumunu kontrol

eder.

• IsNumeric: tanımlanan alan bilgisinin rakam olup olmadığını kontrol eder.

• VarType: varyant değişken bilgisinin tipini kod olarak verir.

Page 151: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

138

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Access veritabanı üzerinde sorgularla beraber öğrenilen işaret ve operatörler kullanılmalı

Access veritabanı üzerinde öğrenilen komutlar sorgularla beraber kullanılmalı

Access veritabanı üzerinde öğrenilen fonksiyonlar sorgularla beraber kullanılmalı.

Page 152: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

139

Uygulama Soruları

1. SQL’de kullanılan işaret ve operatörler nelerdir? Açıklayınız.

2. SQL’de kullanılan komutlardan 5 tanesini yazarak açıklayınız. Nasıl

kullanıldığını örnek üzerinde gösteriniz.

3. SQL’de kullanılan fonksiyonlardan 5 tanesini yazarak açıklayınız. Nasıl

kullanıldığını örnek üzerinde gösteriniz.

Page 153: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

140

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde SQL’de kullanılan işaret ve operatörlerin neler olduğunu öğrendik. Bu

operatörleri Access veritabanında uygulamasını yapmış olduk. Bununla beraber SQL’deki

komutlardan Where’i şartlı sorgularda kullanabileceğimizi, Order By’ı sorgu sonuçlarını

belirtilen alanlara göre artan veya azalan şekilde sıralayabileceğimizi, Like’ı veriler içerisinde

belirli kayıtları listeleyebileceğimizi öğrenmiş olduk. Ayrıca SQL fonksiyonlardan AVG ile

alanın (sütunun) ortalamasını alabileceğimizi, SUM ile alandaki sayısal ifadeleri

toplayabileceğimizi, MAX-MIN ile alan içindeki en büyük ve en küçük değerlerin ne olduğunu

öğrenebileceğimizi görmüş olduk.

Page 154: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

141

Bölüm Soruları

1. Aşağıdakilerden hangisi SQL deyimlerinde metinleri birleştirmek için kullanılır? A. / işareti B. * işareti C. + işareti D. – işareti E. % işareti

2. Aşağıdakilerden hangisi SQL deyimleri ile oluşturulan görünüm sorgularında alan ve tablo isimlerini değiştirmek için kullanılır?

A. As komutu B. In Komutu C. Between Komutu D. All Komutu E. Like Komutu

3. Aşağıdakilerden hangisi Alan içinde yer alan kayıtlarda aynı olan bilgilerden sadece

bir adet gösteren SQL komutudur? A. DISTINCT Komutu B. WHERE Komutu C. ORDER BY Komutu D. GROUP BY Komutu E. HAVING Komutu

4. Aşağıdakilerden hangisi tablo içerisinde yer alana verilerden rastgele satırlar getirmek için kullanılan SQL komutudur?

A. IN Komutu B. WHERE Komutu C. BETWEEN Komutu D. GROUP BY Komutu E. NEWID Komutu

5. Aşağıdakilerden seçilmiş olan sütundaki kayıtları toplayan SQL fonksiyonudur? A. COUNT () B. AVG () C. SUM () D. MAX () E. MID ()

Page 155: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

142

6. Aşağıdakilerden hangisi seçilmiş olan sütundaki en küçük değeri gösteren SQL fonksiyonudur?

A. MIN () B. AVG () C. SUM () D. MAX () E. MID ()

7. Aşağıdakilerden hangisi belirtilen sütundaki tüm verileri küçük harfle göstermek için kullanılan SQL fonksiyonudur?

A. UCASE () B. LCASE () C. SUM () D. MAX () E. MID ()

8. Aşağıdakilerden hangisi belirtilen sütundaki belirtilen sayıda sağdan karakter geriye döndürmek için kullanılan SQL fonksiyonudur?

A. UCASE () B. LCASE () C. LEFT () D. RIGHT () E. MID ()

9. Aşağıdakilerden hangisi belirtilen sütundaki karakter sayısını geriye döndürmek için kullanılan SQL fonksiyonudur?

A. LEN () B. LTRIM () C. RTRIM () D. RIGHT () E. MID ()

10. Aşağıdakilerden hangisi belirtilen sütundaki metnin sağ tarafındaki boşluk karakterlerini silerek kalan kısmı geriye döndürmek kullanılan SQL fonksiyonudur?

A. LEN () B. LTRIM () C. RTRIM () D. RIGHT () E. LEFT ()

Cevaplar

1)C 2)A 3)A 4)E 5)C 6)A 7)B 8)D 9)A 10)C

Page 156: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

143

8. ACCESS'TE SORGU TASARIMI UYGULAMASI

Page 157: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

144

Bu Bölümde Neler Öğreneceğiz?

8.1. Bu bölümde geride kalan 7 bölümü içeren Access veritabanı ile uygulama

yapılacaktır.

8.2 Sorgu oluşturma

8.3 SQL Deyimlerini ve Fonksiyonlarının veritabanı üzerinde uygulaması

yapılacaktır.

Page 158: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

145

Bölüm Hakkında İlgi Oluşturan Sorular

1. Veritabanı Nedir?

2. İlişkisel Veritabanı Yönetim Sistemleri Nelerdir?

3. Veritabanı dilleri Nelerdir?

4. Tablo Nedir?

5. Veri Türü Nedir?

6. Veritabanı programında veritabanı ve yeni bir tablo nasıl oluşturulur?

7. SQL Nedir? Açıklayınız.

8. Sorgu Niçin Oluşturulur? Açıklayınız.

9. Sorgu Türleri Nelerdir?Açıklayınız.

10. SQL Deyimleri Nelerdir? Açıklayınız.

11. SQL’de Kullanılan işaretler nelerdir? Açıklayınız.

12. SQL’de kullanılan komutlar nelerdir? Hangi ne işe yarar? Açıklayınız.

13. SQL’de kullanılan hazır fonksiyonlar nelerdir? Açıklayınız.

Page 159: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

146

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

SQL’de Kullanılan İşaretler,

Deyimler, Fonksiyonlar

SQL’de Kullanılan İşaretleri,

Deyimleri, Fonksiyonları

Kavrar, Access veritabanında

bu konuları sorgu ile

kullanabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 160: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

147

Anahtar Kavramlar

SQL, CREATE, ALTER, DROP, INSERT INTO, DELETE, UPDATE, SELECT,

WHERE, ORDER BY, GROUP BY, HAVING, SELECT INTO, LIKE, BETWEEN, AVG,

COUNT, SUM, MAX, MIN, UCASE, LCASE, MID, LEFT, RIGHT, LTRIM, RTRIM

Page 161: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

148

Giriş

SQL deyimleri veritabanları üzerinde çeşitli işlemleri yerine getirirler. Veritabanından

sorgulama yapmak için SELECT, ekleme yapmak için INSERT güncelleme yapmak için

UPDATE, silme yapmak için DELETE, yeni tablo oluşturmak için CREATE TABLE gibi

komutlara sahiptir. SQL içinde veriler üzerinde işlemler yapmak üzere hazır fonksiyonlar

bulunur.

Bu bölümde bundan önceki bölümlerde anlatılan konuların uygulaması yapılacaktır.

Access veritabanı üzerinde SQL Deyimleri, İşaret ve Fonksiyonları, Fonksiyonları kullanılarak

sorgular oluşturulacaktır.

Page 162: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

149

8.1. Access Veritabanı İle SQL Uygulaması

Aşağıdaki 22 adımlık SQL uygulaması Access veritabanı üzerinde yapılacaktır. 22

adımlık uygulamanın cevabı aynı tabloda yer almaktadır. Siz uygulamayı yaparken mümkün

olduğunca cevabına bakmadan kendiniz soruları yazmaya çalışınız. Sorgu yazmada

takıldığınızda cevabına bakmayı yeğleyiniz.

Page 163: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

150

Uygulama

Soru Cevap

1) Access veritabanı üzerinde “topluluk” adında veritabanı oluşturunuz?

Dosya -> Yeni -> Boş Veritabanı menüleri

kullanılarak “Topluluk” adında veritabanı oluşturulur.

2)Access veritabanında otomatik

oluşan Tabloyu kapatarak Sorgu

yazarak “uyeler” diye tablo

oluşturunuz. Tablo içine aşağıdaki

alanları ekleyiniz.

uyeno, ogrno, ad, soyad,

fak_yuksekokul, bolum,sinif,

sube, dogumtarihi , dogumyeri,

adres, ilce, il, kayityili,

EtkinlikPuani

Not: Veri tiplerini kendiniz

belirleyiniz.

Etkinlik puanı, üyenin topluluk içerisinde

yaptığı çalışmaya göre aldığı puanı gösterip 10

üzerinden değerlendirilmektedir. Ayrıca puan

virgüllü (5,6) olabilmektedir.

create table uyeler ( uyeno int, ogrno int, ad varchar(25), soyad varchar(25), fak_yuksekokul varchar(25), bolum varchar(15), sinif varchar(2), sube varchar(2), dogumtarihi datetime, dogumyeri varchar(15), adres varchar(100), ilce varchar(20), il varchar(15), kayityili varchar(4), EtkinlikPuani float )

3)Sorgu oluşturarak en az 5 üyeye ait

veri girişi yapınız. Kişi bilgileri üstteki

tabloda yer almaktadır.

insert into uyeler( uyeno, ogrno, ad, soyad, fak_yuksekokul, bolum, sinif, sube, dogumtarihi, dogumyeri, adres, ilce, il, kayityili, EtkinlikPuani) values (1001, 14151601, 'Okan', 'KURTULUŞ', 'Teknik Bilimler MYO', 'Bilgisayar Programcılığı', '2', 'A', #05/02/1995#, 'İSTANBUL', 'Bahçelievler Mah, Hisar Sok. No:6', 'Merkez', 'BURDUR', '2017', 8.6)

insert into uyeler( uyeno, ogrno, ad, soyad, fak_yuksekokul, bolum, sinif, sube, dogumtarihi, dogumyeri, adres, ilce, il, kayityili, EtkinlikPuani) values (1002, 14151602, 'Orçun',

Page 164: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

151

'KURT', 'Teknik Bilimler MYO', 'Bilgisayar Programcılığı', '2', 'A', #05/02/1993#, 'ANKARA', 'Bahçelievler Mah, Hisar Sok. No:6', 'Gölhisar', 'BURDUR', '2016', 9.6)

insert into uyeler( uyeno, ogrno, ad, soyad, fak_yuksekokul, bolum, sinif, sube, dogumtarihi, dogumyeri, adres, ilce, il, kayityili, EtkinlikPuani) values (1003, 14151603, 'Mehmet', 'MADRAN', 'Eğitim Fakültesi', 'Bilgisayar ve Öğr. Tek. Öğretmenliği', '4', 'G', #05/05/1992#, 'BURSA', 'Aydınlıkevler Mah, Umut Sok. No:8', 'Merkez', 'BURDUR', '2015', 9.9)

insert into uyeler( uyeno, ogrno, ad, soyad, fak_yuksekokul, bolum, sinif, sube, dogumtarihi, dogumyeri, adres, ilce, il, kayityili, EtkinlikPuani) values (1004, 14151604, 'Ahmet', 'TÜRKÖZ', 'Eğitim Fakültesi', 'Sınıf Öğretmenliği', '3', 'B', #06/03/1994#, 'BURSA', 'Aydınlıkevler Mah, Yeşil Sok. No:8', 'Gölhisar', 'BURDUR', '2017', 5.2)

insert into uyeler( uyeno, ogrno, ad, soyad, fak_yuksekokul, bolum, sinif, sube, dogumtarihi, dogumyeri, adres, ilce, il, kayityili, EtkinlikPuani) values (1005, 14151605, 'Hasan', 'KEBAPÇI', 'Mühendislik Fakültesi', 'Bilgisayar Mühendisliği', '2', 'G', #06/08/1997#, 'ISPARTA', 'Şirinevler Mah, Mavi Sok. No:7', 'Merkez', 'BURDUR', '2017', 7.2)

4) Doğum Yeri Bursa olan öğrencileri

listeleyiniz.

select * from uyeler where dogumyeri='Bursa'

5)Üyelerin hangi ilçelerde ikâmeti

ettiklerini listeleyiniz.

select ilce from uyeler group by ilce

6)Hangi ilçelerden kaç adet olduğunu

listeleyiniz.

select ilce, COUNT(ilce) from uyeler group by

ilce

veya

select ilce, COUNT(ilce) from uyeler group by

ilce having COUNT(ilce)<10

Page 165: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

152

7)Burdur’un Gölhisar ilçesinde

olanları ayrı bir tabloda

(Golhisarli_Uyeler) adlı tablo)

saklayınız.

select * into Golhisarli_Uyeler from uyeler where

ilce='Gölhisar'

8)Kayıt yılı 2017 olanlardan son 2’sini

listeleyiniz.

select top 2 * from uyeler where kayityili='2017'

9)Etkinlik puanına göre üyeler

arasında %30’a girenleri

listeleyiniz.

select top 30 percent * from uyeler order by

(EtkinlikPuani) desc

10)Etkinlik puanı 7’den büyük 7’ye en

yakın 3 kişinin notunu listeleyiniz.

select top 3 * from uyeler where EtkinlikPuani>7

order by (EtkinlikPuani) asc

11) Üyeleri “ogrno, ad, soyad”

alanları arasında soyadına göre

artan şeklinde sıralayınız.

select ogrno,ad,soyad from uyeler order by soyad

asc

12)”dogumtarihi” alanını siliniz.

alter table uyeler drop column dogumtarihi

13)”uyeler” tablosuna “hobileri” diye

alan ekleyiniz. Veri türünü kendiniz

belirleyiniz.

alter table uyeler add hobileri varchar(25)

14) İlçesi “Gölhisar” olan üyeleri

siliniz.

delete from uyeler where ilce='Gölhisar'

15)Kayıtlı olan tüm üyelerin hobilerine

“Bilgisayar, Teknoloji” ekleyiniz.

Update uyeler set hobileri='Bilgisayar, Teknoloji'

16)Üye Numarası 1003 olan üyenin

Adını Mesut Soyadını Bahtiyar

yapınız.

update uyeler set ad='Mesut', soyad='BAHTİYAR'

where uyeno=1003

Page 166: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

153

17) Adres alanındaki bilgileri büyük

harfe dönüştürerek listeleyiniz.

select ucase(Adres) from uyeler

18) Adres alanındaki tüm karakterleri

büyük harf dönüştürerek

güncelleyiniz.

update uyeler set Adres=ucase(Adres)

19) Kayıt yılı “2017” olanların Bölüm

bilgilerinin tümünü büyük harfe

dönüştürünüz

update uyeler set bolum=ucase(bolum) where

kayityili='2017'

20) Tablodaki tüm kayıtların adres

alanındaki karakter sayısını

listeleyiniz.

select adres, len(adres) from uyeler

21) Uyeler tablosunu bilgileri siliniz. delete from uyeler

22)“topluluk” veritabanındaki

“uyeler” tablosunu siliniz.

drop table uyeler

Page 167: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

154

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Access veritabanı üzerinde bu uygulama gerçekleştirilmeli

Page 168: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

155

Uygulama Soruları

1. Bu derste yaptığımız uygulama gibi bir soru hazırlayarak sorgularla uygulama

yaparak sorunuzu cevaplandırınız, uygulama yapınız.

Page 169: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

156

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde önceki 7 bölümü kapsayan Access veritabanı programı üzerinde SQL

sorgularını içeren uygulama gerçekleştirmiş olduk.

Page 170: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

157

Bölüm Soruları

1. Bir tabloda öğrencilere ait bilgilerin tutulduğunu varsayalım. Onlarca öğrencinin farklı ilçelerden olduğunu düşünürsek ve bu öğrencilerin hangi ilçelerden geldiğini sorgulamak istesek (tüm ilçeleri değil sadece tekrarlamayan ilce isimlerini) aşağıdaki sorgulardan hangisi yazmak gerekir?

A. select ilce from ogrenciler group by ilce B. select il from ogrenciler group by ilce C. select ilce from ogrenciler group by il D. select ilce from ogrenciler Where ilce E. select ilce from ogrenciler

2. Bir tabloda öğrencilere ait bilgilerin tutulduğunu varsayalım. Doğum yeri “Bursa” olan öğrencileri seçmek için aşağıdaki hangi sorguyu yazmak gerekir?

A. select * from ogrenciler group by dogumyeri='Bursa' B. select * from ogrenciler where dogumyeri='Bursa' C. select * from ogrenciler where Bursa D. select * from ogrenciler having by dogumyeri='Bursa' E. select * from ogrenciler Bursa

3. Bir tabloda öğrencilere ait bilgilerin tutulduğunu varsayalım. Onlarca öğrencinin farklı ilçelerden olduğunu düşünürsek ve Gölhisar ilçesinden olanların tüm bilgilerini “Golhisarli_Ogrenciler” diye ayrı tabloda saklamak istersek hangi sorguyu yazmak gerekir?

A. select ad, soyad into Golhisarli_Ogrenciler from ogrenciler where ilce='Gölhisar'

B. select * into Golhisarli_Ogrenciler from ogrenciler where il='Gölhisar' C. select * into Golhisarli_Ogrenciler from ogrenciler where ilce='Gölhisar' D. select * into ogrenciler from into Golhisarli_Ogrenciler where ilce='Gölhisar' E. insert * into Golhisarli_Ogrenciler from ogrenciler where ilce='Gölhisar'

4. Bir tabloda öğrencilerin başarı notlarına ait bilgilerin saklandığını varsayalım. Bu başarı notuna göre sınıfta 30%’a giren öğrencileri gösteren sorgu aşağıdakilerden hangisidir?

A. select top 3 percent * from uyeler order by (BasariNotu) asc B. select top 40 percent * from uyeler order by (BasariNotu) desc C. select top 3 percent * from uyeler order by (BasariNotu) desc D. select top 30 percent * from uyeler order by (BasariNotu) desc E. select top 30 percent * from uyeler order by (BasariNotu) asc

5. Ogrenciler tablosundaki “ogrno, ad, soyad” alanları arasında soyadına göre artan şeklinde sıralayan sorgu aşağıdakilerden hangisidir?

A. select ogrno,ad,soyad from Ogrenciler order by ad asc B. select * from Ogrenciler order by soyad desc C. select * from Ogrenciler order by soyad asc

Page 171: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

158

D. select ogrno,ad,soyad from Ogrenciler order by soyad desc E. select ogrno,ad,soyad from Ogrenciler order by soyad asc

6. Ogrenciler tablosundaki “dogumtarihi” alanı silen sorgu aşağıdakilerden hangisidir? A. alter table ogrenciler drop column dogumtarihi B. alter table uyeler drop column dogumtarihi C. alter table ogrenciler drop dogumtarihi D. alter table ogrenciler add column dogumtarihi E. alter table ogrenciler column dogumtarihi

7. ”uyeler” tablosuna “hobiler” diye metinsel veri türünde alan ekleyen sorgu aşağıdakilerden hangisidir?

A. alter table uyeler add hobiler int B. alter table uyeler add hobiler varchar(25) C. alter table uyeler add hobiler float D. alter table uyeler add hobiler datetime E. alter table uyeler drop hobiler varchar(25)

8. Ogrenciler tablosundaki ilçesi “Gölhisar” olan öğrencileri silen sorgu aşağıdakilerden hangisidir?

A. delete from Ogrenciler where il='Gölhisar' B. update from Ogrenciler where ilce='Gölhisar' C. delete from Ogrenciler where ilce='Gölhisar' D. delete from Ogrenciler E. delete from Ogrenciler ilce='Gölhisar'

9. Ogrenciler tablosundaki tüm kayıtların “Hobiler” alanını “Bilgisayar, Teknoloji” olarak değiştiren sorgu aşağıdakilerden hangisidir?

A. Update Ogrenciler where hobiler='Bilgisayar, Teknoloji' B. İnsert intoOgrenciler set hobiler='Bilgisayar, Teknoloji' C. delete Ogrenciler set hobiler='Bilgisayar, Teknoloji' D. Update Ogrenciler set hobiler='Bilgisayar, Teknoloji' E. Update Ogrenciler set hobi='Bilgisayar, Teknoloji'

10. Ogrenciler tablosu Öğrenci Numarası 1003 olan öğrencinin Adını Mesut, Soyadını Bahtiyar yapan sorgu aşağıdakilerden hangisidir?

A. update Ogrenciler set ad='Mesut', soyad='BAHTİYAR' where ogrno=1002 B. update Ogrenciler set soyad='Mesut', ad='BAHTİYAR' where ogrno=1003 C. update Ogrenciler set ad='Mesut', soyad='BAHTİYAR' ogrno=1003 D. update Ogrenciler set ad='Mesut', soyad='BAHTİYAR' E. update Ogrenciler set ad='Mesut', soyad='BAHTİYAR' where ogrno=1003

Cevaplar

1)A 2)B 3)C 4)D 5)E 6)A 7)B 8)C 9)D 10)E

Page 172: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

159

9. MSSQL SERVER VERİTABANINDA ALAN VE ÖZELLİKLERİ

Page 173: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

160

Bu Bölümde Neler Öğreneceğiz?

9.1. Veri Türü

9.2. MSSQL Server Veritabanı Veri Türleri

Page 174: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

161

Bölüm Hakkında İlgi Oluşturan Sorular

1. Veri Türü Nedir?

2. Varchar Ve Nvarchar Veri Tipinin Farkı Nedir?

3. MSSQL Server Veritabanında En Önemli ve Sıkça Kullanılabileceğini Düşündüğünüz

Veri Tiplerini Örnekle Açıklayınız.

Page 175: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

162

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

Veri Türü Veri türünü tarif eder ve

örneklendirebilir

Ders notları, Sunumlar,

Kaynaklar

MSSQL Server Veritabanı

Veri Türleri

MSSQL’deki tüm veri

türlerini kavrar ve uygulama

sırasında kullanabilir

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 176: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

163

Anahtar Kavramlar

Veri Türü, Metinsel Veri Tipleri, Sayısal Veri Tipleri, Parasal Veri Tipleri, Tarih-Zaman

Veri Tipleri, Binary Veri Tipleri,

Page 177: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

164

Giriş

MSSQL Server veritabanında her tablo alanlardan oluşur. Bir alanın özellikleri, o alana

eklenen verilerin özelliklerini ve davranışını açıklar. Alanın veri türü en önemli özelliktir,

çünkü alanda ne tür verilerin depolanabileceğini belirler. Bu bölümde, MSSQL veritabanında

kullanılan veri türleri ve diğer alan özellikleri açıklanmaktadır.

Page 178: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

165

9.1. MSSQL Server Veritabanı Veri Türleri

MSSQL Server (Microsoft SQL Server), Microsoft firmasının oluşturduğu bir

veritabanı türüdür. Çoğu zaman MYSQL ile karıştırılabilir. MYSQL açık kaynak kodlu bir

yazılım iken MSSQL bu anlamda kullanıcılara maliyetli gelebilir.

Microsoft SQL Server en çok kullanılan veritabanı sunucu yazılımıdır. Veritabanlarının

oluşturulmasını ve yönetilmesini sağlayan kurumsal çaplı Veritabanı Yönetim Sistemidir.

Dünyada en yoğun kullanılan yönetim sistemi SQL Server’dır. SQL Server’ı kullanarak

verilerinizi dilediğiniz şekilde yönetebilir ve Stored Prosedürleri kullanarak çok sayıda ve

komplike sonuçlar döndürebiliriz. Böylece istediğimiz verileri raporlayarak elde edebiliriz.

Veri türü, bir değişken için ayrılacak bölgenin hangi formatta olacağını belirlemek için

kullanılır. Örneğin; sayısal bir değeri saklayacağımız değişken için sayısal bir veri tipi seçeriz

ya da metin tabanlı (adı, soyadı gibi) kavramları saklamak için metin tabanlı veri tipleri seçeriz.

Veri tipi (türü) belirlemede bir önemli nokta ise veri tipini seçmeden önce değişkene girilecek

değerin sınırlarını belirlemektir. Örneğin; sayısal bir değişken için girilecek verinin tam sayı ya

da ondalık sayı olduğuna karar vermek.

MSSQL Server veritabanında kullanılan veri tipleri aşağıda yer almaktadır.

Tam Sayı Veri Tipleri Veri Tipi Aldığı Değer Aralığı Tanımı

Bigint -9, 223, 372, 036, 854, 775, 808, 9, 223, 372, 036, 854, 775, 807

8 bayt yer kaplar. Aralık çerçevesinde yer alan tam sayıları tutar.

Int -2, 147, 483, 648, 2, 147, 483, 647

4 bayt yer kaplar. En çok kullanılan tam sayıları tutan veri tipidir.

Smallint -32, 768, 32, 767

2 bayt yer kaplar. Aralık çerçevesinde yer alan tam sayıları tutar.

Tinyint 0-255 1 bayt yer kaplar. Aralık çerçevesinde yer

alan tam sayıları tutar.

Bit 0-1

1 byte yer kaplar. True, False değerler için

kullanılır.

Decimal -10^38 +1 10^38 -1

Ondalık veya tam sayıları tutar.

Page 179: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

166

Money -922,337,203,685,477.5808 922,337,203,685,477.5807

8 bayt yer kaplar. Parasal değerleri tutmak

için kullanılır.

Smallmoney -214, 748.3648 214,748.3647

4 bayt yer kaplar. Parasal değerleri tutmak

için kullanılır.

Tablo 5: Tam Sayı Veri Tipleri

Kesirli Sayı Veri Tipleri

Veri Tipi Aldığı Değer Aralığı Tanımı Float -1,79E + 308

1,79E + 308 Aralık çerçevesinden hassas değerler içeren ondalık sayıları tutar.

Real -3.40E + 38 3.40E + 38

Aralık çerçevesinden hassas değerler içeren ondalık sayıları tutar.

Tablo 6: Kesirli Sayı Veri Tipleri

Tarih Veri Tipleri

Veri Tipi Aldığı Değer Aralığı Tanımı Datetime 1 Ocak 1753-31 Aralık 9999 8 bayt yer kaplar.

3,33 milisaniye hassasiyetle belirtilen aralık çerçevesinde tarihleri tutar.

Datetime2 1 Ocak 0001-31 Aralık 9999 6-8 bayt yer kaplar. 100 nano saniye hassasiyetle belirtilen aralık çerçevesinde tarihleri tutar.

Smalldatetime 1 Ocak 1900-6 Haziran 2079 4 bayt yer kaplar.

Date 1 Ocak 0001-31 Aralık 9999 3 bayt yer kaplar. Aralık çerçevesinde sadece tarih tutar.

Time 3-5 bayt yer kaplar. Bölgesel saat farklılıklarının da tutulduğu veri tipidir. 21-01-20010 23:53:27.0369476 +02:00

Tablo 7: Tarih Veri Tipleri

Karakter Veri Tipleri

Veri Tipi Aldığı Değer Aralığı Tanımı Char En fazla 8000 karakter Unicode desteği olmayan karakter tutar.

Gireceğimiz karakter sayısı belli olduğunda kullanılır.

Varchar En fazla 8000 karakter Unicode desteği olmayan karakter tutar. Gireceğimiz karakter sayısı belli olmadığında kullanılır.

Page 180: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

167

Varchar(max) En fazla 231 karakter (2 GB karakter)

Unicode desteği olamayan karakter tutar. Gireceğimiz karakter sayısı belli olmadığında kullanılır.

Text En fazla 2,147,483,647 karakter

Unicode desteği olmayan karakter tutar. Gireceğimiz karakter sayısı belli olmadığında kullanılır.

Tablo 8: Karakter Veri Tipleri

Unicode Karakter Veri Tipleri

Veri Tipi Aldığı Değer Aralığı Tanımı Nchar En fazla 4000 karakter Unicode karakterleri de tutar. Gireceğimiz karakter sayısı

belli olduğunda kullanılır. Nvarchar En fazla 4000 karakter Unicode karakterleri de tutar. Gireceğimiz karakter sayısı

belli olmadığında kullanılır. Nvarchar(max) En fazla 230 karakter (2

GB karakter) Unicode karakterleri de tutar. Gireceğimiz karakter sayısı belli olmadığında kullanılır.

Ntext En fazla 1,73,741,823karakter

Unicode karakterleri de tutar. Gireceğimiz karakter sayısı belli olmadığında kullanılır.

Tablo 9: Unicode Karakter Veri Tipleri

Binary Veri Tipleri

Veri Tipi Aldığı Değer Aralığı Tanımı Binary En fazla 8000 Byte Gireceğimiz Byte miktarı aynı olduğu durumlarda

kullanılır. Varbinary En fazla 8000 Byte Gireceğimiz Byte miktarının değişken olması

durumlarında kullanılır. Varbinary (max) En fazla 231 Byte (2GB) Gireceğimiz Byte miktarının değişken olması

durumlarında kullanılır. Image 2,147,483,647 Byte Gireceğimiz Byte miktarının değişken olması

durumlarında kullanılır. Tablo 10: Binary Veri Tipleri

Diğer Veri Tipleri

Veri Tipi Aldığı Değer Aralığı Tanımı Sql_Variant En fazla 8000 Byte Sütuna girilen değerler belli olmadığı zaman

kullanılır. Yani resim, string, sayı girilebilir. Xml - XML veri saklamak için kullanılır. Geometry - 2 boyutlu koordinat düzleminde nokta, doğru,

çember, çokgen gibi geometrik cisimlerin X ve Y eksenindeki koordinat bilgilerini tutar.

Geography - Objelerin geometik (dünyanın şeklinden dolayı aldığı isim) düzlemde ifade eden enlemsel ve boylamsal koordinatlar için kullanılır.

Hierarchyid - Hiyerarşik yapılar için kullanılır.

Tablo 11: Diğer Veri Tipleri

Page 181: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

168

Not: VARCHAR ile CHAR arasındaki fark; Her ikisinde de maksimum ayrılan alan kadar yazı

girişi yapılabilir ama VARCHAR ile belirtilen alan hafızada yazılan karakter sayısı kadar yer

tutar, CHAR ile belirtilen alan ise ne kadar yazılırsa yazılsın, belirtilen alanın tamamını

kullanmış olur. Örneğin isim alanı VARCHAR(25) ile belirtilmiş olsun, bu durumda isim için

“Ali” girilirse hafızada 3 karakter yer tutar, “Mehmet” girilirse 6 karakter yer tutacaktır.

Örneğin isim alanı CHAR(25) ile belirtilmiş olsun, bu durumda isim için “Ali” de girilirse

“Mehmet” te girilirse veya “Mustafa Furkan” da girilirse yine de hafızada 25 karakter yer

tutacaktır. Bunlara rağmen CHAR(25) te olursa VARCHAR(25) te olursa maksimum 25

karakter uzunluğunda bir isim girilebilir.

9.2. Veri Türlerini Karşılaştırma

Access veri türleri, MS SQL Server veri türlerinden farklı adlandırılır. Örneğin, bit veri

türündeki bir MS SQL Server sütunu Access'e Evet/Hayır veri türünde bağlanır veya içeri

aktarılır. Aşağıdaki tabloda, MS SQL Server ve Access veri türleri karşılaştırılmıştır.

SQL Server veri türü Access veri türü Access alan boyutu bigint Büyük Sayı

binary (alan boyutu) İkili SQL Server alan boyutuyla aynı bit Evet/Hayır

char (alan boyutu); alan boyutu 255'ten küçük veya buna eşit olduğunda

Metin SQL Server alan boyutuyla aynı

char (alan boyutu); alan boyutu 255'ten büyük olduğunda Not

datetime Tarih/Saat

decimal (duyarlık, ölçek) Sayı Ondalık (Access Duyarlık ve Ölçek özellikleri, SQL Server'ın duyarlık ve ölçeğiyle eşleşir.)

float Sayı Çift image OLE Nesnesi

int Sayı Uzun Tamsayı money Para Birimi

nchar (alan boyutu); alan boyutu 255'ten küçük veya buna eşit olduğunda

Metin SQL Server alan boyutuyla aynı

nchar (alan boyutu); alan boyutu 255'ten büyük olduğunda Not

ntext Not

Page 182: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

169

numeric (duyarlık, ölçek) Sayı Ondalık (Access Duyarlık ve Ölçek özellikleri, SQL Server'ın duyarlık ve ölçeğiyle eşleşir.)

nvarchar (alan boyutu); alan boyutu 255'ten küçük veya buna eşit olduğunda

Metin SQL Server alan boyutuyla aynı

nvarchar (alan boyutu); alan boyutu 255'ten büyük olduğunda Not

nvarchar(MAX) Not

real Sayı Tek smalldatetime Tarih/Saat

smallint Sayı Tamsayı smallmoney Para Birimi

sql_variant Metin 255 text Not

timestamp İkili 8 tinyint Sayı Bayt uniqueidentifier Sayı Çoğaltma Kimliği varbinary İkili SQL Server alan boyutuyla aynı varbinary (MAX) OLE Nesnesi

varchar (alan boyutu); alan boyutu 255'ten küçük veya buna eşit olduğunda

Metin SQL Server alan boyutuyla aynı

varchar (alan boyutu); alan boyutu 255'ten büyük olduğunda Not

varchar(MAX) Not

xml Not

Tablo 12: Veri Türlerini Karşılaştırma

Page 183: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

170

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

MSSQL Server veritabanı üzerinde veri türleri incelenmeli

Page 184: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

171

Uygulama Soruları

1. Veri Türü Nedir?

2. MSSQL Server veritabanı üzerinde bir tablo oluşturarak alanları ve bu alanlara

uygun veri türü belirleyiniz.

3. MSSQL Server’daki veri türlerini program üzerinde inceleyiniz.

Page 185: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

172

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde veri türünün ne olduğunu, MSSQL Server veritabanında hangi veri

türlerinin olduğunu ve tablolar arasında ilişkilendirme yaparken ilişkilendirme yapılacak

alanların veri türlerininaynı ya da uyumlu olması gerektiğini öğrendik.

Page 186: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

173

Bölüm Soruları

1. MSSQL Server veritabanında True/False değerlerini saklamak için hangi veri türü kullanılmalıdır? A. Bigint B. Decimal C. Bit D. Float E. Int

2. MSSQL Server veritabanında zaman bilgisini saklamak için hangi veri türü

kullanılmalıdır?

A. Datetime B. Decimal C. Bit D. Float E. Bigint

3. MSSQL Server veritabanında parasal değerleri saklamak için hangi veri türü

kullanılmalıdır?

A. Datetime B. Money C. Real D. Nvarchar E. Int

4. MSSQL Server veritabanında VARCHAR(25) veri türü kullanılarak bir değişken tanımlandığı varsayılarak bu değişkene de “Mert” diye bir değer girildiği düşünülürse bu değişken kaç karakterlik yer kaplamış olur? A. 25 B. 28 C. 29 D. 4 E. 1

5. MSSQL Server veritabanında CHAR(10) veri türü kullanılarak bir değişken

tanımlandığı varsayılarak bu değişkene de “İstanbul” diye bir değer girildiği

düşünülürse bu değişken kaç karakterlik yer kaplamış olur?

A. 1 B. 5 C. 8 D. 10 E. 18

Page 187: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

174

6. MSSQL Server veritabanındaki “float” veri tipi Access veritabanındaki hangi türüne karşılık gelir? A. Sayı/Çift B. Sayı/Uzun Tamsayı C. TarihSaat D. OLE Nesnesi E. Metin

7. Öğrenci notlarının (0-100 arası) MSSQL Server veritabanında saklandığını varsayarsak

notlar için kullanılan veri türü ne olmalıdır?

A. tinyint B. bit C. int D. float E. varchar

8. “4010925689” öğrenci numarasını saklamak için MSSQL Server veritabanında aşağıdaki veri tiplerinden hangi sayısal veri tipi kullanılmalıdır? A. tinyint B. char C. varchar D. bit E. int

9. “AUZEF2020” bilgisini MSSQL Server veritabanında saklamak için aşağıdaki hangi veri türü kullanılabilir? A. Int B. Bigint C. Varchar D. Bit E. Decimal

10. “456,25” ondalıklı sayıyı sayısal veri olarak saklamak için MSSQL Server veritabanında hangi veri tipini kullanmak gerekir? A. Int B. Tinyint C. Float D. Bit E. varchar

Cevaplar

1)C 2)A 3)B 4)D 5)D 6)A 7)A 8)E 9)C 10)D

Page 188: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

175

10. MSSQL SERVER VERİTABANINDA TABLO VE TABLO

İLİŞKİLENDİRMELERİ

Page 189: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

176

Bu Bölümde Neler Öğreneceğiz?

10.1. Veritabanı programında veritabanı ve yeni bir tablo oluşturmak

10.2. Önceden oluşturulmuş veritabanına tablo ve alan eklemek

10.3. Tabloda alan ekleme alan çıkarma

10.4. Veritabanında tablo ve tablo ilişkilendirmeleri

Page 190: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

177

Bölüm Hakkında İlgi Oluşturan Sorular

1. Veritabanı programında veritabanı ve yeni bir tablo nasıl oluşturulur?

2. Önceden oluşturulmuş veritabanına tablo ve alan nasıl eklenir?

3. Tabloda alan ekleme yada alan çıkarma işlemi nasıl yapılır?

Page 191: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

178

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

Veritabanı oluşturma MSSQL Server’da veritabanı

oluşturabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Tablo oluşturma MSSQL Server’da tablo

oluşturur, alan ekleyebilir,

alan çıkartabilir,

uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 192: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

179

Anahtar Kavramlar

Veritabanı oluşturma, tablo oluşturma, alan oluşturma, alan çıkarma, ilişki türleri

Page 193: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

180

Giriş

Tablolar, veritabanlarında bilgilerin tutulduğu veri gruplarıdır. Tablo içerisinde yer alan

her bilgi kayıt, sütunlar ise alan olarak adlandırılır. Kayıtlar adı, soyadı, adresi gibi alanlardan

oluşmaktadır.

Bir veritabanı tasarlanırken diğer veritabanı nesnelerini oluşturmadan önce yapılması

gereken ilk işlemin tablo oluşturma olması gerekmektedir.

Tablo oluşturmaya başlamadan önce hangi tablolara ihtiyaç olduğunu belirlemek için

veritabanı ihtiyaç analizini yapmış olmak gerekir.

Page 194: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

181

10.1. Yeni Bir Veritabanında Kod İle Yeni Bir Tablo Oluşturmak

MSSQL Server veritabanında kod ile tablo oluşturma işlemi için kullanılan yapı aşağıda

belirtildiği gibidir.

CREATE TABLE tablo_adı ( Alan_adı1 VERI_TİPİ , Alan_adı2 VERİ_TİPİ , … Alan_adıN VERİ_TİPİ

)

MSSQL Server veritabanında tablo oluşturabilmek için öncelikle ya yeni bir veritabanı

oluşturmak lazım ya da var olan bir veritabanının olması lazım. Veritabanı üzerinde birden fazla

veritabanı varsa ve hangi veri tabanı üzerinde çalışılacaksa “use” komutuyla beraber o

veritabanının kullanılacağı önceden belirtilmedir.

Şekil 82: MSSQL Server Veritabanı Sorgu Ekranı

Örnek

create database AUZEF // AUZEF adında veri tabanı oluşturuldu. use AUZEF // AUZEF veri tabanını kullan. CREATE TABLE OGRENCILER ( OGRNO INT ,

Page 195: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

182

ADI VARCHAR(50) , SOYADI VARCHAR(50) , BOLUM_KODU CHAR(4) , CINSIYET CHAR(5) , TELEFON CHAR(16) , EPOSTA CHAR(25) )

/*Burada OGRENCİLER adında bir tablo oluşturur. OGRNO alanı tamsayı tipinde olacak, ADI ve SOYADI ile belirtilen alanlar maksimum 50 karakter alabilecek, ancak hafızada kullanılan karakter sayısı kadar yer tutacaktır. BOLUM_KODU, CINSIYET, TELEFON ve EPOSTA ile belirtilen alanlar maksimum 4, 5, 16 ve 25 karakter alabilen alanlar olacaktır.*/

10.2. Veritabanında Arayüz İle Yeni Bir Tablo Oluşturmak

Arayüz kullanarak tablo oluşturmak için veritabanı altında bulunan Tables sekmesine

sağ tıklanır, açılan pencereden New seçeneğine gelip Table’a tıklanır.

Şekil 83: MSSQL Server Veritabanında Arayüz İle Tablo Oluşturma

Page 196: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

183

Açılan pencerede Column Name alanına kolon ismi (alan), Data Type alanına o kolonun (alan)

veri tipi yazılır. Allow Null alanı ise o kolonun boş geçilip geçilemeyeceğini seçmemizi sağlar.

İşaretli ise Null değer alabilir işaretli değil ise Null olamaz anlamına gelir.

Şekil 84: MSSQL Server Veritabanında Arayüzle Alan ve Veri Türü Belirleme

10.3. Tablo İle İlgili Bazı Özellikler

Kısıtlamalar (Constraints)

Bir tablo oluştururken bazı alanlar zorunlu bazı alanların ise isteğe bağlı olması istenir. Bazı

alanlar tekrarlanmamalı, bazı alanlar ise istenilen kadar tekrar edilebilmeli. Bazı alanlar tabloya

girilmeden önce bazı kurallara uyuyor mu diye kontrol edilmeli. Bazı alanlar ise aslında başka

tablodan referans alan alanlar olabiliyor. Bazı alanların ise başlangıçta varsayılan değerlerinin

olmasını isteriz. İşte bütün bunları sağlamak için tablo oluştururken bazı kurallar uygulanır.

NULL, NOT NULL: tablo oluştururken boş bırakılabilecek alanlar NULL ile boş

bırakılamayacak yani zorunlu olan alanlar ise NOT NULL ile işaretlenmelidir. NULL ifadesi

opsiyoneldir. Her hangi bir şey yazılmazsa NULL geçerlidir. Yani o alan istenirse boş

bırakılabilecek.

ÖRNEK

CREATE TABLE BOLUMLER ( BOLUM_KODU CHAR(4) NOT NULL, BOLUM_ADI VARCHAR(50) NOT NULL,

Page 197: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

184

BOLUM_DETAY VARCHAR(50) NULL )

/* Burada BOLUMLER adında bir tablo oluşturulacak. BOLUM_KODU ile belirtilen

alan maksimum 4 karakter alabilen bir karakter olabilecek ve boş bırakılamayacak.

BOLUM_ADI ile belirtilen alan ise maksimum 50 karakter alabilecek, ancak hafızada

kullanılan karakter sayısı kadar yer tutacaktır. Bu alanda BOLOM_KODU gibi boş

bırakılamayacak. Çünkü her ikisi de NOT NULL ile işaretlenmişler. BOLOM_DETAY

ile belirtilen alan ise maksimum 50 karakter alabilecek ve isterse boş bırakılabilecek.

Çünkü NULL ile işaretlenmiş. Adres alanı da BOLUM_ADI gibi kullanılan karakter

sayısı kadar hafızada yer tutacaktır.*/

PRIMARY KEY: Yukarıdaki BOLUMLER tablosuna dikkat edilirse BOLUM_KODU ile

belirtilen alan aslında her bölüm için özeldir ve tekrarlanmamalıdır. Geçen dönemden

hatırlayacağınız üzere buna birincil anahtar diyorduk. (Birincil Anahtar: tablodaki bir kaydı

diğer kayıtlardan ayıran ve tekrara izin vermeyen alan). Tabloyu oluştururken aslında bunu

belirtebiliriz. Bir alanın birincil anahtar olduğunu belirtmek için o alan için tip belirtecinden

sonra PRIMARY KEY anahtar sözcüğü kullanılır.

Örnek CREATE TABLE BOLUMLER2 ( [BOLUM KODU] CHAR(4)PRIMARY KEY NOT NULL, [BOLUM ADI] VARCHAR(50) NOT NULL, [BOLUM DETAY] VARCHAR(50) NULL )

Yukarıda dikkat edilirse [BOLUM KODU] alanı tanımlanırken veri tipi belirtildikten sonra

PRIMARY KEY kullanılmıştır. Bu durum, [BOLUM KODU] alanının birincil anahtar

olduğunu ifade ediyor.

NOT: SQL’de eğer tablo adı veya alan adı iki kelimeden oluşuyorsa isterse kelimeler arasına

_ (alt çizgi) yerine kelimeler köşeli [ ] arasına yazılabilir. Yani BOLUM_KODU yerine

[BOLUM KODU] kullanılabilir.

Bir tabloda sadece bir tane birincil anahtar bulunabilir. Ama bu bir tane birincil anahtar birden

fazla alandan oluşa bilir. Böyle bir durumda PRIMARY KEY tanımlaması aşağıdaki gibi

yapılır.

Page 198: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

185

Örnek

CREATE TABLE SINAVLAR ( [DERS KODU] CHAR(6) NOT NULL, [OGRENCI NO] INT NOT NULL, VIZE TINYINT NULL, FINAL TINYINT NULL, CONSTRAINT PK_SINAVLAR PRIMARY KEY([DERS KODU], [OGRENCI NO]) )

FOREIGN KEY: Şimdi de aşağıdaki öğrenciler tablosunu düşünün. Bu tabloda dikkat edilirse

BÖLÜM alanı aslında başka bir tablodan referans alıyor. Geçen dönemden de hatırlayacağınız

üzere buna referans anahtar veya dış anahtar diyorduk. Yani OGRENCI tablosundaki

BÖLÜM alanı aslında BÖLÜMLER tablosundaki birincil anahtar olan [BOLUM KODU]

alanına referans ediyor. Öğrenciler tablosu için SQL kodunu yazacak olursak aşağıdaki gibi

olacaktır.

Şekil 85: Tablolar Arası İlişkilendirme

Örnek CREATE TABLE OGRENCI ( NUMARA INT PRIMARY KEY NOT NULL, İSİM VARCHAR(25) NOT NULL, SOYİSİM VARCHAR(25) NOT NULL, BÖLÜM CHAR(4) FOREIGN KEY REFERENCES BOLUMLER2([BOLUM

KODU]) ON DELETE CASCADE ON UPDATE CASCADE NOT NULL, TELEFON CHAR(16) NULL )

Page 199: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

186

Yukarıdaki örnekte referans verilirken FOREIGN KEY kısmı isteğe bağlıdır. Yazılmazsa da

olur. Önemli olan REFERENCES anahtar sözcüğünün yazılmış olmasıdır.

Bir tabloda sadece bir tane birincil anahtar bulunabilir, fakat birden fazla yabancı anahtar

bulunabilir. Bu durumda her referans için ayrı referans verilir. Yukarıdaki örnekte BÖLÜM

alanının referansı belirtildikten sonra “ON DELETE CASCADE” ve “ON UPDATE

CASCADE” ifadeleri kullanılmış. Bunun anlamı: eğer referans edilen kayıt silinirse veya

güncellenirse bu tabloda da aynı değişikliği yap demektir. Örneğin bölümler tablosundaki

bölüm kodu BPR1 olan bölüm silinirse BPR1 bölümüne kayıtlı bütün öğrencilerde silinecektir.

Eğer BPR1 olan bölüm kodu BBP1 olarak değiştirilirse öğrenciler tablosunda bölüm kodu

BPR1 olan bütün öğrenciler için bölüm BBP1 olarak güncellenecektir.

Eğer böyle bir durum istemiyorsak, yani bölümler tablosundan bir bölüm sildiğimizde

öğrenciler tablosundaki o bölüme ait öğrencilerin silinmesini istemiyorsak “ON DELETE

CASCADE” yerine “ON DELETE NO ACTION” yazmalıyız. Aynı durum güncelleme için

de geçerlidir. Yani bölümler tablosundan bir bölüm kodu güncellenince, öğrenciler

tablosundaki o bölüme kayıtlı öğrencilerin bölüm kodu güncellenmesin istiyorsak “ON

UPDATE CASCADE” yerine “ON UPDATE NO ACTION” yazmamız gerekecektir. Eğer

bölümler tablosundaki bir kayıt silinince öğrenciler tablosunda o bölüme kayıtlı öğrenciler

silinmesin fakat bölüm kodu güncellenince öğrenciler tablosundaki o bölümün kodları

güncellensin istiyorsak bu durumda “ON DELETE NO ACTION ON UPDATE

CASCADE” şeklinde yamalıyız. Aynı mantık tersi için de geçerlidir. Referans anahtar

tanımlanırken aşağıdaki kural göz önüne alınır.

ALAN_ADI VERİ_TİPİ [FOREIGN KEY] REFERENCES REFERANS_TABLO_ADI(REFERANS_ALAN_ADI)

ON DELETE { CASCADE | NO ACTION} ON UPDATE { CASCADE | NO ACTION}

Foreign Key (Yabancı anahtar) tanımlanırken alan tanımından sonra yazılabildiği gibi daha

sonrada aşağıdaki gibi de yazılabilirdi.

CONSTRAINT FK_BÖLÜM FOREIGN KEY (BÖLÜM) REFERENCES BÖLÜMLER([BÖLÜM KODU])

ON DELETE CASCADE ON UPDATE CASCADE

Page 200: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

187

CHECK: Öğrenciler tablosunda TELEFON alanına dikkat edin. Telefon numarası için 16

karakter yer ayrılmış. Telefon yazılırken maksimum 16 karakterlik yer kullanıldıktan sonra

istenildiği şekilde girilebilir. Aslında bu istenen bir durum değildir. Örneğin kimisi numaralar

arasına nokta, kimisi tire veya bir başkası boşluk bıraka bilir. Dahası, kimisi şehir kodlarını

parantezler arasına alırken kimisi almaz, kimisi başına sıfır eklerken kimisi de eklemez. Bütün

bunlar aslında istenmeyen durumlardır. Sıralamaların veya aramaların doğru şekilde

yapılabilmesi için kayıtların aynı tipte olması gerekmektedir. Böyle durumlarda kontroller

(CHECK) kullanılmaktadır. Aşağıda telefon için örnek bir kontrol yazılmıştır.

Örnek

TELEFON CHAR(16) CHECK (TELEFON LIKE '([0][0-9][0-9][0-9]) [0-9][0-9][0-9] [0-

9][0-9] [0-9][0-9]')

Bir başka örnek olarak kan gruplarını verebiliriz. Bilindiği gibi bir insanın kan grubu A, B, 0

veya AB olabilir. Bir diğer örnek olarak ta cinsiyet olabilir. Cinsiyet sadece bay, bayan şeklinde

yazılsın istiyorsak bunları veritabanına girmeden önce bunlar haricinde bir şeyin yazılmış olup

olmadığını aşağıdaki gibi kontrol edebiliriz.

Örnek

KANGRUBU CHAR(2) CHECK(KANGRUBU IN ('A','B','0','AB')) NOT NULL

CİNSİYET CHAR(5) CHECK(CİNSİYET IN ('BAY', 'BAYAN')) NOT NULL

Bir alan kontrollü oluşturulmak istenince aşağıdaki kural göz önüne alınmalıdır.

ALAN_ADI VERİ_TİPİ CHECK({KOŞUL İFADESİ})

Koşul ifadeleri daha sonra ayrıntılı bir şekilde işlenecektir.

CHECK anahtar sözcüğü alan tanımlanırken yazılabildiği gibi aşağıdaki şekilde de

tanımlanabilir. Görüldüğü gibi koşul ifadesi maaş alanı tanımladıktan sonra başka bir satırda

yazılmış.

Page 201: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

188

Örnek CREATE TABLE KISILER ( NUMARA INT PRIMARY KEY , ADI VARCHAR(25) NOT NULL, SOYADI VARCHAR(25) NOT NULL, MAAS SMALLMONEY NOT NULL, TELEFON CHAR(16) NULL, CONSTRAINT CKH_MAAS CHECK(MAAS BETWEEN 1000 AND 2000) , CINSIYET BIT NULL )

UNIQUE: Aşağıdaki örneği inceleyiniz. Çalışanlar tablosunda görüldüğü gibi [TC NO] alanı

için veri tipi tanımlamasından sonra UNIQUE anahtar sözcüğü yazılmıştır. Bunun anlamı;

birincil anahtar olmayan ancak yine de tekrarlanmaması gereken alanların sadece bir defa

girilmesine izin verir.

CREATE TABLE CALISANLAR ( NUMARA INT PRIMARY KEY NOT NULL, [TC NO] DECIMAL(11) UNIQUE NOT NULL, ISIM VARCHAR(25) NOT NULL, SOYISIM VARCHAR(25) NOT NULL, CINSIYET CHAR(5) CHECK(CINSIYET IN ('BAY', 'BAYAN')) NOT NULL, TELEFON CHAR(16) NULL, MAAS MONEY CHECK(MAAS > 1000) NULL )

DEFAULT: bazen bazı alanların varsayılan değerlerinin olmasını isteriz. Yani eğer farklı bir

şey belirtmiyorsak varsayılan değer otomatik olarak kayıt için girsin isteriz.

Örnek CREATE TABLE KISILER ( NUMARA INT PRIMARY KEY , ADI VARCHAR(25) NOT NULL, SOYADI VARCHAR(25) NOT NULL, BÖLÜM CHAR(4) DEFAULT 'BPR1' NOT NULL )

Page 202: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

189

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

MSSQL Server veritabanı üzerinde veritabanı oluşturma uygulaması yapılmalı

MSSQL Server veritabanı üzerinde tablo oluşturma uygulaması yapılmalı

MSSQL Server veritabanı üzerinde tabloya alan ekleme ve alan çıkarma uygulaması

yapılmalı

Page 203: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

190

Uygulama Soruları

1. MSSQL Server veritabanı üzerinde veritabanı oluşturunuz.

2. MSSQL Server veritabanı üzerinde tablo oluşturarak uygun alanlar ekleyiniz.

3. MSSQL Server veritabanı üzerinde varolan tabloda alan veri türünü değiştiriniz,

yeni alan ekleyip alan çıkartınız.

Page 204: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

191

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde MSSQL Server veritabanı programı üzerinde veritabanı oluşturmayı, tablo

oluşturmayı, tabloda alan oluşturmayı, alanların veri türünü belirlemeyi öğrendik.

Page 205: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

192

Bölüm Soruları

1. Aşağıdakilerden hangisi Personel verilerinin tutulduğu bir veritabanında Primary Key olması gereken alandır? A. Ad B. Soyad C. Departman D. Sicil Numarası E. Cinsiyet

2. Adres bilgisini saklamak için aşağıdaki veri türlerinden hangisi seçilmelidir? A. Image B. Datetime C. Integer D. nvarchar E. float

3. Aşağıdakilerden hangisi MSSQL Server kurulunca üzerinde varsayılan olarak kurulan veritabanlarından değildir? A. master B. model C. defaultdb D. msdb E. tempdb

4. Birbiriyle ilişki kurulan 2 tabloda silme işlemi yapıldıktan referans edilen kaydında silinmesini istiyorsak ilgili alana hangi komut yazılmalıdır? A. ON DELETE CASCADE B. ON UPDATE CASCADE C. ON INSERT CASCADE D. ON DELETE NO ACTION E. ON UPDATE NO ACTION

5. Birbiriyle ilişki kurulan 2 tabloda silme işlemi yapıldıktan referans edilen kaydında

silinmesini istiyorsak ilgili alana hangi komut yazılmalıdır? A. ON DELETE CASCADE B. ON UPDATE CASCADE C. ON INSERT CASCADE D. ON DELETE NO ACTION E. ON UPDATE NO ACTION

Page 206: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

193

6. Birbiriyle ilişki kurulan 2 tabloda güncelleme işlemi yapıldıktan referans edilen kaydında güncellenmesini istiyorsak ilgili alana hangi komut yazılmalıdır? A. ON DELETE CASCADE B. ON UPDATE CASCADE C. ON INSERT CASCADE D. ON DELETE NO ACTION E. ON UPDATE NO ACTION

7. Birbiriyle ilişki kurulan 2 tabloda güncelleme işlemi yapıldıktan referans edilen kaydında güncellenmesini istemiyorsak ilgili alana hangi komut yazılmalıdır? A. ON DELETE CASCADE B. ON UPDATE CASCADE C. ON INSERT CASCADE D. ON DELETE NO ACTION E. ON UPDATE NO ACTION

8. “BR1515” kodlu bir kayıt aşağıdaki veri tiplerinden hangisi ile tanımlanması gerekmektedir? A. tinyint B. Image C. varchar D. Datetime E. float

9. MSSQL Server veritabanında boş bırakabilecek alanlar için hangi komut yazılmalıdır? A. NOT NULL B. CHECK C. ALLOW NULL D. NO NULL E. NULL

10. MSSQL Server veritabanında boş bırakılamayacak alanlar için hangi komut

yazılmalıdır? A. NOT NULL B. CHECK C. ALLOW NULL D. NO NULL E. NULL

Cevaplar

1)D 2)D 3)C 4)A 5)D 6)B 7)E 8)C 9)E 10)A

Page 207: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

194

11. MSSQL SERVER'DA FONKSİYONLAR

Page 208: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

195

Bu Bölümde Neler Öğreneceğiz?

11.1. SQL’de Kullanılan İşaretler

11.2. SQL’de Kullanılan Komutlar

11.3. SQL Fonksiyonları

Page 209: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

196

Bölüm Hakkında İlgi Oluşturan Sorular

1. SQL’de Kullanılan işaretler nelerdir? Açıklayınız.

2. SQL’de kullanılan komutlar nelerdir? Hangi ne işe yarar? Açıklayınız.

3. SQL’de kullanılan hazır fonksiyonlar nelerdir? Açıklayınız.

Page 210: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

197

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

SQL’de Kullanılan İşaretler SQL’de Kullanılan İşaretleri

Kavrar, MSSQL Server

veritabanında bu işaretleri

sorgu ile kullanabilir,

uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

SQL’de Kullanılan Komutlar SQL’de Kullanılan

Komutları Kavrar, MSSQL

Server veritabanında bu

komutları sorgu ile

kullanabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

SQL Fonksiyonları SQL Fonksiyonlarını Kavrar,

MSSQL Server

veritabanında bu

fonksiyonları sorgu ile

kullanabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 211: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

198

Anahtar Kavramlar

DISTINCT, WHERE, ORDER BY, GROUP BY, HAVING, SELECT INTO, LIKE,

BETWEEN, AVG, COUNT, SUM, MAX, MIN

Page 212: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

199

Giriş

Bu bölümde SQL’de kullanılan işaretler, operatörler, SQL’de kullanılan Komutlar ve

SQL Fonksiyonları MSSQL Server veritabanı üzerinde uygulamalı olarak işlenecektir. Bu

konuların öğrenilmesiyle beraber sorgu oluşturulması kolaylaşacak, veritabanındaki verileri

işleme daha anlaşılır hale gelecektir.

Page 213: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

200

11.1. SQL’de Kullanılan İşaretler

* İşareti

SQL deyimlerinde * işareti iki farklı amaç için kullanılır.

• Matematiksel işlemlerde çarpma işlemi olarak görevi vardır.

• Select * From ifadesinde kullanıldığında ise tüm alanların görünümde yer alacağını

belirtir.

+ İşareti

SQL deyimlerinde + işareti, metinleri birleştirmek için kullanılır.

Örnek: Adı alanı ile Soyadı Alanındaki bilgiler birleştiriliyor. select AD+' ' +SOYAD from Ogrenci

Adı alanındaki bilgi alınır, bir adet boşluk karakteri eklenir ve Soyadı alanındaki bilgi eklenir.

Böylece yeni oluşan alanda Adı ve Soyadı arasında bir adet boşluk bırakılmış olur.

As Komutu

SQL deyimleri ile oluşturulan görünüm sorgularında alan ve tablo isimlerini değiştirmek için kullanılır.

Not: As komutu ile adı değiştirilen alanların ve tabloların gerçekte adı değişmez. Sadece oluşturulan görünümde değişir.

Örnek

select ad+soyad as AdıSoyadı from Ogrenci

Şekil 86: As Komutu Uygulaması

Page 214: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

201

[ ] Köşeli Parantezler

SQL deyimlerinde köşeli parantezler Alan ve Tablo isimlerinde kullanılır. Normalde tüm tablo

ve alan isimleri köşeli parantezler içinde yazılmalıdır. Fakat tek parçadan oluşan alan ve tablo

isimleri için köşeli parantez gerekmez.

Örnek select AD,[Telefon No] from Ogrenci /*Bu SQL ifadesinde alan isimleri içinde boşluk karakteri kullanıldığı için köşeli parantezler içinde yazılmıştır.*/

( ) Parantezler

SQL deyimlerinde normal Parantezler;

• Hazır fonksiyonlarda parametreler için kullanılır.

• Matematiksel işlemlerde işlemleri gruplandırarak işlem önceliği vermek için kullanılır.

• SQL ifadelerini gruplandırmak için kullanılır.

11.2. SQL’de Kullanılan Komutlar

DISTINCT Komutu

Alan içinde yer alan kayıtlarda aynı olan bilgilerden sadece bir adet gösterir.

Kullanımı

Select Distinct AlanAdı from TabloAdı

Örnek select ad from Ogrenci

select distinct ad from Ogrenci

Şekil 87: Distinct Komutu Uygulaması

Page 215: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

202

WHERE Komutu

SELECT FROM cümlesine ilave olarak kullanılır. WHERE komutu ile belirtilen koşula uygun

olan kayıtların gösterilmesi sağlanır. WHERE komutundan sonra Şart ifadesi gelmelidir.

Kullanım Yerleri

SELECT Alanlar FROM Tablo_Adı WHERE Şart

DELETE FROM Tablo_Adı WHERE Şart

UPDATE Tablo_Adı Set Alan = .... WHERE Şart

Örnek

SELECT * FROM Musteri WHERE Bakiye > 400

Veri tabanında bulunan Musteri tablosunun görünümü oluşturulmaktadır. Bu görünümde

Bakiye alanındaki değer 400'ün üzerinde olan kayıtlar listelenmektedir.

Aşağıda WHERE komutu ile koşul oluştururken kullanılabilecek operatörler listelenmiştir.

Operatör Anlamı Örnek

> Büyüktür Bakiye > 400

< Küçüktür Bakiye < 400

>= Büyük eşit Bakiye >= 400

<= Küçük eşit Bakiye <= 400

<> Eşit değil Bakiye <> 400

Like içerir

Adı Like 'A*' A ile başlayan

Adı Like '*a*' içinde a harfi geçen

Adı Like '*a' A harfi ile biten

BETWEEN . AND Arasında Bakiye between 200 and 300

NOT Değil NOT Bakiye > 400

AND Ve birleştirme operatörü Bakiye > 400 AND Adı = 'Mehmet'

OR Veya birleştirme operatörü Bakiye > 400 OR Adı = 'Mehmet'

Tablo 13: SQL’de Kullanılan Operatörler

Page 216: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

203

ORDER BY Komutu

Sorgu sonuçlarını belirtilen alanlara göre artan veya azalan şekilde sıralar

Kullanım şekli

SELECT Alanlar FROM tablo WHERE Şart [ORDER BY Alan1 [ASC | DESC ][, Alan2

[ASC | DESC ]][, ...]]]

Not: İki veya daha fazla alana göre sıralama yapılıyorsa, ilk alana göre kayıtlar sıralanır, ilk

alanda aynı değeri içeren kayıtlar ise kendi içinde ikinci alana göre sıralanırlar.

Örnekler:

Aşağıdaki örneklerde Musteriler tablosundaki kayıtlar Soyadı alanına göre artan şekilde

sıralanıyor. Sıralama ölçütü ASC ve DESC ile belirtilmesze ASC olduğu kabul edilir.

SELECT Adı, Soyadı FROM Musteriler ORDER BY Soyadı;

SELECT Adı, Soyadı FROM Musteriler ORDER BY Soyadı ASC;

Aşağıdaki örnekte Musteriler tablosundaki kayıtlar Maas alanına göre azalan ve ikinci sıralama

ölçütü olarak Soyadı alanına göre sıralanır.

SELECT Soyadı, Maaş FROM Musteriler ORDER BY Maas DESC, Soyadı;

Aşağıdaki örnekte Notlar tablosundaki kayıtlarda Başarı Notu adında yeni bir alan tanımlanıyor

ve bu alanda "Vize*0.4+Final*0.6" hesabı yapılıyor. Bu oluşan "Başarı Notu" alanına göre

kayıtlar Büyükten küçüğe doğru sıralanıyor.

SELECT Vize, Final, Vize*0.4+Final*0.6 as [Başarı Notu] FROM Notlar ORDER BY

Vize*0.4+Final*0.6 DESC;

Örnek

select OgrNo,AD, SOYAD, Vize from Ogrenci order by Vize desc /*Öğrencileri .öğrenci No,

Ad, Soyad, Vize alanların arasında vize notuna göre azalan şeklinde sıralar.*/

Page 217: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

204

Şekil 88: Select Komutu Uygulaması

GROUP BY Komutu

Bir veritabanı tablosunda seçilmiş olan alanlarda aynı değeri içeren kayıtlardan birer adet

gösterilmesini sağlayan komuttur. Bu komutla birlikte SQL'de toplama fonksiyonları (Örneğin

Sum, Avg, Min vb) kullanılır.

Kullanımı

SELECT alanlar FROM tablo WHERE şart ifadesi GROUP BY gruplanacak alanlar

Örnek

select SOYAD from Ogrenci Group By SOYAD /*Ogrenci tablosundaki SOYADlardan aynı

olanlardan birer tane gösterir.*/

Şekil 89: Group By Komutu Uygulaması

HAVING Komutu

Group By komutu ile gruplandırma oluşturulup, bu gruplandırmada SQL Toplama

fonksiyonları kullanıldıysa, bu fonksiyonlarla çıkan sonuçlar üzerinde bir süzme işlemi

uygulanacaksa HAVING komutu kullanılır. Normal süzme işleminde WHERE komutu

kullanılır.

Page 218: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

205

Kullanımı

SELECT Alanlar FROM tablo WHERE NormalSeçmeŞartı GROUP BY GrupListesi

HAVING GrupSeçmeŞartı

Örnek

Musteri tablosunda Sehir adında bir alan bulunmaktadır. Hangi sehirde kaç müşteri olduğunu

bulan ve 10 müşteriden az olan şehirlerin listesini veren SQL deyimi

SELECT Sehir, Count(Sehir) FROM Musteri Group By Sehir HAVING Count(Sehir)< 10

Örnek

select AD, COUNT (AD) from Ogrenci group by AD having COUNT(AD)<=2

/*Ogrenci tablosundaki AD alanına bakarak hangi addan kaç tane öğrenci var ve ogrenci

sayısı 2 ye eşit ve ikiden az olanları lisyteler.*/

Şekil 90: Having Komutu Uygulaması

SELECT … INTO Deyimi

Sorgu sonucunu Yeni bir tablo olarak kaydeder.

Kullanımı

SELECT Alanlar INTO YeniTabloAdı FROM KaynakTablo Örnek

Musteriler tablosundaki maas alanındaki değerler 1000 ve üzerinde olan kayıtlar yenitablo

ismindeki bir tabloya kaydediliyor.

SELECT * INTO YeniTablo FROM Musteriler WHERE Maas >= 1000

Örnek

Page 219: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

206

Select * into YeniOgrenci from Ogrenci where AD='Ali' /*Adı Ali olan öğrencileri

YeniOgrenci adında tablo oluşturarak kaydeder. */

Şekil 91: Select Into Komutu Uygulaması

TOP n [PERCENT] Komutu

Sorgu sonucunda baştan veya Order By .. Desc kullanılarak sondan belirtilen sayıda veya

oranda kaydı gösterir.

Örnek

Öğrenciler tablosunda 2005 yılında mezun olan öğrencilerden ilk 25 adedinin listesini veren

SQL ifadesi

SELECT TOP 25 OgrNo, Adı, Soyadı FROM Ogrenciler WHERE MezunYılı=2005 Örnek

select top 3 OgrNo, BasariNotu from Ogrenci where BasariNotu>2 order by

BasariNotu asc/*Öğrenci tablosunda başarı notu 2 den büyük olanlardan 3 adetini en

küçükten büyüğe doğru (artan) şeklinde OgrNo ve Başaarı notunu yazarak listeler. */

Şekil 92: Top Komutu Uygulaması

Örnek select top 10 percent OgrNo, BasariNotu from Ogrenci where Mezuniyet=2005 order

by BasariNotu desc/*Ogrenciler tablosundaki mezuniyet yılı 2005 olanlar arasında başarı

notu bakımından %10 ‘a girenleri listeler. */

Page 220: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

207

Şekil 93: Top n Komutu Uygulaması

LIKE Komutu

Where deyimi ile birlikte kullanılır. Aramak istenilen alanda (sütunda) bulunan veriler

içerisinde belirli kayıtları listelemek için kullanılır.

Karakter Açıklama

% Tüm İfadeler

? Tek Karakter

Select <Sütun_Adı> from <Tablo_Adı> where <Sütun_Adı>Like <Koşul_İfadesi>

Karakter Açıklama Like ‘%a’ Son karakteri “a” olan tüm veriler Like ‘%a%’ İçerisinde “a” olan tüm veriler Like ‘a%’ “a” ile başlayan veriler Like ‘?a’ İkinci karakteri “a” olan ve iki karakterli tüm veriler Like ‘a??’ İkinci karakteri “a” olan toplam 3 karakterli tüm veriler

Örnek select * from Ogrenciler where Adres Like 'a%' /* Ogrenciler tablosunda Adres sütununda "a" ile başlayan tüm veriler*/

Şekil 94: Like Komutu Uygulaması

Page 221: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

208

BETWEEN Komutu

Belirlenen sütun içerisinde iki değer arasındaki bilgileri getirmek için kullanılır.

Select <sütuna_adı> from <Tablo_adı> where <sütun_adi> between <ilk_değer> and

<İkinci_değer>

Örnek

select * from Notlar where F Between 25 and 50 /* Notlar tablosunda F sütununda final notları

25 ve 50 arasında olanları listeler.*/

Şekil 95: Between Komutu Uygulaması

IN Komutu

Sütun içerisinde sadece istediğimiz değerleri içeren verileri getirecektir.

Select <sütuna_adı> from <Tablo_adı> where <sütun_adi> IN (<değer1,değer2>)

Örnek

select * from Ogrenciler where Adi IN ('Erkan','Mustafa','Selçuk') /* Öðrenciler tablosunda Adi sütununda Erkan, Mustafa, Selçuk ismindeki öðrencilere ait bilgileri listeler.*/

Şekil 96: In Komutu Uygulaması

Page 222: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

209

NEWID Komutu

Tablo içerisinde yer alana verilerden rastgele satırlar getirmek için kullanılır.

Select <sütuna_adı> from <Tablo_adı> order by NEWID()

Örnek select * from Ogrenciler order by NEWID() /* Ogrenciler tablosundaki verileri rastgele listeler*/

Şekil 97: Newid Komutu Uygulaması

11.3. SQL Fonksiyonları

AVG () – AVERAGE

Sütundaki değerlerin ortalamasını almak için kullanılır.

Select AVG (<sütun_adi>) from <tablo_adi>

Örnek select AVG(F) from Notlar /* Notlar tablosundaki F sütunundaki yani final notlarının ortamalasını alır.*/

Şekil 98: Avg Fonksiyonu Uygulaması

COUNT()

Seçilmiş olan sütundaki boş olmayanların kayıtların adedini verir.

Select COUNT (<sütun_adi>) from <tablo_adi>

Örnek

select COUNT(V) from Notlar /* Notlar tablosundaki V sütununda kaç kayıt olduğunu listeler.*/

Page 223: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

210

Şekil 98: Count Fonksiyonu Uygulaması

SUM ()

Seçilmiş olan sütundaki kayıtları toplar.

Select SUM (<sütun_adi>) from <tablo_adi Örnek

select SUM(V) from Notlar /* Notlar tablosundaki V sütunundaki kayıtları toplar ve sonucu

listeler.*/

Şekil 99: Sum Fonksiyonu Uygulaması

MAX ()

Seçilmiş olan sütundaki en büyük değeri listeler.

Örnek select MAX(V) from Notlar /* Notlar tablosundaki V sütunundaki kayıtlar arasından en büyük olan değeri listeler.*/

Şekil 100: Max Fonksiyonu Uygulaması

MIN ()

Seçilmiş olan sütundaki en küçük değeri listeler.

Örnek select MIN(V) from Notlar /* Notlar tablosundaki V sütunundaki kayıtlar arasından en küçük olan değeri listeler.*/

Page 224: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

211

Şekil 101: Min Fonksiyonu Uygulaması

UPPER()

Belirtilen sütundaki tüm verileri büyük harfle göstermek için kullanılır.

Örnek select upper (Adi) from Ogrenciler /* Ogrenciler tablosundaki Adi sütunundaki tüm verileri büyük harfle gösterir*/

Kayıtlı Olan Veri

Sorgu Sonucu

Şekil 102: Upper Fonksiyonu Uygulaması

LOWER ()

Belirtilen sütundaki tüm verileri küçük harfle göstermek için kullanılır.

Örnek select lower (Adi) from Ogrenciler /* Ogrenciler tablosundaki Adi sütunundaki tüm verileri küçük harfle gösterir*/

Kayıtlı Olan Veri

Sorgu Sonucu

Şekil 103: Lower Fonksiyonu Uygulaması

Page 225: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

212

SUBSTRING ()

Belirtilen sütundaki verilerin belirlenen karakterleri göstermek için kullanılır.

Select SUBSTRING (<Sütun_adı>, <Başlangıç>, <Kaç_Karakter>) from <tablo_adı>

Örnek select SUBSTRING (Adi,1,4) from Ogrenciler /* Ogrenciler tablosundaki Adi

sütunundaki verilerin 1. karakterinden 4. karakterine kadar tüm verileri listeler*/

Şekil 104: Substring Fonksiyonu Uygulaması

FLOOR(), CEİLİNG(), ROUND()

Bu fonksiyonlar yuvarlama fonksiyonlarıdır.

Floor() : Verilen sayısal ifadeyi kendisine en yakın ve kendisinden küçük olan tam sayıya

yuvarlar. Kullanımı : Floor(sayisal_ifade) şeklindedir.

Örnek Kullanım :

Select Floor(24.9)

ifadesi sonuç olarak 24 görüntüler

Ceiling() : Verilen sayısal ifadeyi kendisine en yakın ve kendisinden büyük olan tam sayıya

yuvarlar. Kullanımı : Ceiling(sayisal_ifade)

Örnek Kullanım :

Select Ceiling(24.1)

Page 226: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

213

ifadesi sonuç olarak 25 değerini görüntüler

Round() : Verilen sayısal ifadeyi yuvarlamak için kullanılır. yuvarlama işlemi 5 ten küçük

değerler için aşağı 5 ve 5 ten büyük değerler için yukarı olur. kullanım şekli : ROUND (

numeric_expression , length [ , function ] ) ondalık kısımda length parametresiyle belirtilen

kadar basamak kalır

Örnek Kullanım :

Select Round(24.23,1)

şeklinde bir kullanım 24.2 sonucunu gösterir.

LEFT

Verilen metinden belirtilen sayıda soldan karakter geriye döndürür.

Örnek select adi, LEFT(adi,3) from Ogrenciler /* Ogrenciler tablosundaki Adi alanındaki verileri listelerken sadece ilk 3 karakteri listeler.*/

Şekil 105: Left Fonksiyonu Uygulaması

RIGHT

Verilen metinden belirtilen sayıda sağdan karakter geriye döndürür.

Örnek select adi, RIGHT(adi,4) from Ogrenciler /* Ogrenciler tablosundaki Adi alanındaki verileri listelerken sadece son 4 karakteri listeler.*/

Page 227: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

214

Şekil 106: Right Fonksiyonu Uygulaması

LEN

Verilen Metnin karakter sayısını geriye döndürür.

Örnek

select adi, len (Adi) from Ogrenciler /* Ogrenciler tablosundaki Adi alanındaki verilerin

karakter sayısını listeler.*/

Şekil 107: Len Fonksiyonu Uygulaması

LTRIM

Verilen metnin sol tarafındaki boşluk karakterlerini silerek kalan kısmı geriye döndürür.

Örnek

select adi, ltrim (Adi) from Ogrenciler /* Ogrenciler tablosundaki Adi alanındaki verilerin sol

tarafındaki boşlukları silerek listeler.*/

Page 228: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

215

Şekil 108: Ltrim Fonksiyonu Uygulaması

RTRIM

Verilen metnin sağ tarafındaki boşluk karakterlerini silerek kalan kısmı geriye döndürür.

Örnek

select adi, rtrim (Adi) from Ogrenciler /* Ogrenciler tablosundaki Adi alanındaki verilerin sağ

tarafındaki boşlukları silerek listeler.*/

Page 229: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

216

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

MSSQL Server veritabanı üzerinde sorgularla beraber öğrenilen işaret ve operatörler

kullanılmalı

MSSQL Server veritabanı üzerinde öğrenilen komutlar sorgularla beraber kullanılmalı

MSSQL Server veritabanı üzerinde öğrenilen fonksiyonlar sorgularla beraber kullanılmalı.

Page 230: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

217

Uygulama Soruları

1. SQL’de kullanılan işaret ve operatörler nelerdir? Açıklayınız.

2. SQL’de kullanılan komutlardan 5 tanesini yazarak açıklayınız. Nasıl

kullanıldığını örnek üzerinde gösteriniz.

3. SQL’de kullanılan fonksiyonlardan 5 tanesini yazarak açıklayınız. Nasıl

kullanıldığını örnek üzerinde gösteriniz.

Page 231: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

218

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde SQL’de kullanılan işaret ve operatörlerin neler olduğunu öğrendik. Bu

operatörleri Access veritabaında uygulamasını yapmış olduk. Bununla beraber SQL’deki

komutlardan Where’i şartlı sorgularda kullanabileceğimizi, Order By’ı sorgu sonuçlarını

belirtilen alanlara göre artan veya azalan şekilde sıralayabileceğimizi, Like’ı veriler içerisinde

belirli kayıtları listeleyebileceğimizi öğrenmiş olduk. Ayrıca SQL fonksiyonlardan AVG ile

alanın (sütunun) ortalamasını alabileceğimizi, SUM ile alandaki sayısal ifadeleri

toplayabileceğimizi, MAX-MIN ile alan içindeki en büyük ve en küçük değerlerin ne olduğunu

öğrenebileceğimizi görmüş olduk.

Page 232: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

219

Bölüm Soruları

1. Aşağıdakilerden hangisi “Gökhan” ve “TURAN” ifadelerini birleştirip “GökhanTURAN” şeklinde yazma işlemi için kullanılan SQL deyimidir?

A. / işareti B. * işareti C. % işareti D. – işareti E. + işareti

2. MSSQL Server veritabanında SQL deyimleri ile oluşturulan görünüm sorgularında alan ve tablo isimlerini değiştirmek için kullanılır?

A. Like B. In C. Between D. All E. As

3. MSSQL Server veritabanında Ad alanı içinde birden fazla aynı isimde olan kayıtların olduğunu varsayarsak ve bu kayıtların tamamını değil de aynı olan bilgilerden sadece birer adet göstermesini istiyorsak hangi komutu kullanmalıyız?

A. SUM B. LIKE C. GROUP BY D. DISTINCT E. LEFT

4. Aşağıdakilerden hangisi MSSQL Server veritabanında tablo içerisinde yer alan kayıtlardan rastgele satırlar getirmek için kullanılan SQL komutudur?

A. IN B. WHERE C. BETWEEN D. GROUP BY E. NEWID

5. Aşağıdakilerden hangisi bir sütunda yer alan tüm arasınav notlarını toplamak için kullanabilecek SQL fonksiyonudur?

A. LTRIM () B. SUM () C. AVG () D. MAX () E. RIGHT ()

Page 233: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

220

6. Aşağıdakilerden hangisi “AUZEF” şeklindeki ifadeyi “auzef” olarak dönüştüren SQL fonksiyonudur?

A. MIN () B. UPPER () C. LOWER () D. MAX () E. SUM ()

7. Aşağıdakilerden hangisi belirtilen sütundaki tüm verileri küçük harfle göstermek için kullanılan SQL fonksiyonudur?

A. UPPER () B. LOWER () C. SUM () D. MAX () E. MID ()

8. Aşağıdakilerden hangisi “AUZEF” kelimesindeki sağdan 3 harfi olan “ZEF” harflerini geriye döndürmek için kullanılan SQL fonksiyonudur?

A. UCASE () B. LCASE () C. LEFT () D. RIGHT () E. MID ()

9. Aşağıdakilerden hangisi “AUZEF2020” ifadesinde olduğu gibi karakter sayısı olarak geriye 9 değerinin döndürmek için kullanılan SQL fonksiyonudur?

A. MID () B. RIGHT () C. LTRIM () D. RTRIM () E. LEN ()

10. Aşağıdakilerden hangisi “AUZEF ” metninde olduğu gibi sağ tarafındaki boşluk karakterlerini silerek kalan kısmı “AUZEF” olarak geriye döndürmek kullanılan SQL fonksiyonudur?

A. RTRIM () B. LEN () C. LTRIM () D. RIGHT () E. LEFT ()

Cevaplar

1)E 2)E 3)D 4)E 5)B 6)C 7)B 8)B 9)E 10)A

Page 234: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

221

12. MSSQL SERVER VERİ İŞLEMLERİ

Page 235: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

222

Bu Bölümde Neler Öğreneceğiz?

12.1. View Kullanımı

12.2. Stored Procedure Oluşturma

12.3. Trigger Kullanımı

Page 236: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

223

Bölüm Hakkında İlgi Oluşturan Sorular

1. Bir çok tablodan bilgi çekme işlemini tek bir noktadan kontrol etmek için ne yapmak

gerekir? Açıklayınız.

2. Stored Procedure Nedir? Açıklayınız.

3. Trigger Nedir? Açıklayınız.

4. Trigger Türleri Nelerdir? Açıklayınız.

Page 237: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

224

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

View Kullanımı Bir çok tablodan bilgi çekme

işlemini tek bir noktadan

kontrol etmek için view

kullanabilir.

Okuma- Anlama Ders

notları, Sunumlar,

Kaynaklar, Uygulama

Stored Procedure Oluşturma Veritabanımız için dışarıdan

parametre alan tekli ya da

çoklu değer döndürebilen,

içerisinde SQL sorgularımızı

gerçekleştirdiğimiz

programlama birimleri

oluşturabilir.

Okuma- Anlama Ders

notları, Sunumlar,

Kaynaklar, Uygulama

Trigger Oluşturma Trigger (tetikleyici), SQL

Server üzerinde herhangi bir

işlem gerçekleştiğinde başka

bir işlemin tetiklenmesi

işlemini gerçekleştirebilir.

Okuma- Anlama Ders

notları, Sunumlar,

Kaynaklar, Uygulama

Page 238: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

225

Anahtar Kavramlar

View, Stored Procedure, Trigger, SQL

Page 239: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

226

Giriş

Bir çok tablodan bilgi çekme işlemlerini tek bir noktadan kontrol etmek için View

kullanılır. Tablolar üzerinde insert, update ve delete işlemlerinin öncesinde veya sonrasında

işlem yapmayı sağlamak için trigger kullanılır. Veritabanları için dışarıdan parametre alan tekli

ya da çoklu değer döndürebilen, içerisinde SQL sorgularının gerçekleştirildiği program

birimlerine Stored Procedure denilmektedir. Bu bölümde view, trigger ve stored procedure ile

veri işleme işlemleri yapılacaktır.

Page 240: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

227

12.1. View

Bir çok tablodan bilgi çekme işlemini tek bir noktadan kontrol etmemizi sağlar. İçersinde veri

bulunmaz sadece tabloların görünümleridir.

View’in Kullanıldığı Durumlar

• View’ler SQL Server açık olduğu sürece hazırda beklerler. Bu yüzden performans

sağlamış oluruz.

• Bir projede birden fazla tablo kullanılır ve sürekli union, join gibi sorguları kullanırız.

Bu tarz sorguları yazmak her zaman uzun büyük vakit kaybı olur.

• Tablolarımızda fiziksel bir değişiklik yapmak gerekebilir veya tablo içinde olmayan

geçici kolonlar oluşturmak istenebilir.

Örnek create database Ogrenciler use Ogrenciler create table TblSehir ( ID int identity(1,1) primary key, Sehir varchar (20) ) Create table TblCinsiyet ( ID int identity(1,1) primary key, Cinsiyet varchar(5) ) Create table TblOgrenci ( ID int identity(1,1) primary key, Ad Varchar(20), Soyad varchar(20), SehirID int references TblSehir(ID), CinsiyetID int references TblCinsiyet(ID) ) insert into TblSehir values ('Burdur') insert into TblSehir values ('Isparta') insert into TblSehir values ('Antalya') insert into TblCinsiyet values ('Erkek') insert into TblCinsiyet values ('Kadın') insert into TblOgrenci values ('Ali','Kaan',1,2)

Page 241: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

228

insert into TblOgrenci values ('Ayþe','Sakar',3,2) insert into TblOgrenci values ('Asu','Bakar',2,1) insert into TblOgrenci values ('Hasan','Yanbasan',3,1) insert into TblOgrenci values ('Mehmet','Okçu',1,1)

Şimdide view oluşturalım. Bu view’de TblOgrenci tablosundaki bilgileri TblSehir ve Tbl

Cinsiyet tablosundan gerekli bilgileri alarak tablonun oluşmasını sağlayacaktır.

use Ogrenciler go Create View OgrenciGetir as select TblOgrenci.ID, TblOgrenci.Ad,TblOgrenci.Soyad, TblCinsiyet.Cinsiyet,

TblSehir.Sehir from TblOgrenci join TblSehir on TblSehir.ID=TblSehir.ID join TblCinsiyet on TblCinsiyet.ID=TblCinsiyet.ID

Oluşturduğumuz view’i çalıştırmak için select sorgusunu kullanacağız.

select * from OgrenciGetir

12.2. Stored Procedure

Veritabanımız için dışarıdan parametre alan tekli ya da çoklu değer döndürebilen, içerisinde

SQL sorgularımızı gerçekleştirdiğimiz programlama birimleridir. Stored procedureler veri

tabanı sunucusunda saklandığından daha hızlı çalışırlar. Stored Procedure birimine

baktığımızda; hız, güvenlik, performans, işlem yükünün düşmesi, ağ trafiğinin azalması olarak

Stored Procedure kullanmamız için nedenlerdendir.

Kullanımı

Create proc <Prosedür_Adı> <Parametreler>

As <Sorgularımız>

Şimdi Öğrenci tablosunu inceleyelim.

use Ogrenciler select * from TblOgrenci

Page 242: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

229

Şekil 109: Stored Procedure Uygulaması

Prosedürü oluşturmadan önce isim kurallarını hatırlamak gerekirse; aşağıdaki kurallara gözatmek lazım.

• Türkçe karakter kullanmayın • Boşluk kullanmayın. • Rakamla başlayamaz. • Ayrılmış isim (select, insert) kullanılamaz.

Aşağıdaki sorgumuzu yazdıktan sonra çalıştıralım.

Örnek

use Ogrenciler go Create Proc TumBilgiler As

Select * from TblOgrenci

Oluşturduğumuz prosedürü görmek için veritabanı içerisinde Programmaility>Stored

Procedures bölümünde görebiliriz.

Page 243: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

230

Şekil 110: Oluşturulan Stored Procedure’nun Gösterimi

Prosedürü çalıştırmak için exec komutu kullanılır.

exec TumBilgiler

Şekil 111: Stored Procedure Çalıştırılması

Prosedürümüzde koşullu ifadeleri de kullanabiliriz.

create proc KisiGetir as select * from TblOgrenci where Ad='Ali'

Prosedürümüz yazdığımız Ali Adına göre kayıtları listeleyecektir. Prosedürü çalıştırmak için

exec KisiGetir yazdıktan sonra çalıştıralım.

exec KisiGetir

Page 244: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

231

Şekil 112: KisiGetir Stored Procedure’nün Çalıştırılması

Bu örnekte değeri içine yazdık, dışarıdan bir parametre alma durumunda değişken

tanımlamamız gerekmektedir.

use Ogrenciler go create proc OgrenciBilgiGetir @OgrenciAdi varchar(40) as

select * from TblOgrenci where Ad=@OgrenciAdi

Burada varchar tipinde parametremizi vererek sorgumuzu çalıştırabiliriz.

exec OgrenciBilgiGetir 'Ayşe'

Şekil 113: OgrenciBilgiGetir Stored Procedure’nün Çalıştırılması

Birden fazla parametre eklemek durumunda kaldığımızda aralara virgül koymamız yeterli

olacaktır.

use Ogrenciler go create proc OgrenciEkle @OgrenciAd varchar(30), @OgrenciSoyad varchar(30), @Sehir int, @Cinsiyet int As

Page 245: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

232

insert into TblOgrenci values (@OgrenciAd,@OgrenciSoyad, @Sehir,@Cinsiyet)

Yazdığımız sorguya göre tablomuza yeni kayıt eklemek için prosedür yazılmıştır. Şim bu

prosedürü çalıştırmak için aşağıdaki sorgumuzu yazalım.

exec OgrenciEkle 'Gökhan','ARMAN', 1,2

Şekil 114: OgrenciEkle Stored Procedure’nün Çalıştırılması

Like ifadesini Stored Procedure’lerde kullanalım.

create proc OgrenciAra @Kriter varchar(30) as select * from TblOgrenci where Ad like '%' + @Kriter+ '%'

Prosedürümüzü oluşturduktan sonra parametremizi vererek çalıştıralım. Ad kolonunda U

olanları listeleyecektir.

exec OgrenciAra 'U'

Şekil 115: OgrenciAra Stored Procedure’nün Çalıştırılması

Stored Procedure’leri düzeltmek için Alter ifadesini kullanmak gerekmektedir. Aşağıdaki

ifademizde Stored Procedure’ün komutlarını güncelleyebiliriz.

alter proc OgrenciAra @Kriter varchar(30) as select * from TblOgrenci where Soyad like '%' + @Kriter+ '%'

Page 246: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

233

Prosedürü silmek için drop komutu kullanılır.

drop proc OgrenciEkle

12.3. Trigger Kullanımı

Trigger (tetikleyici), SQL Server üzerinde herhangi bir işlem gerçekleştiğinde başka bir

işlemin tetiklenmesi için kullanılır. Tetikleyici (trigger), kayıt eklendiğinde (INSERT),

silindiğinde (DELETE) veya değiştirildiğinde (UPDATE) otomatik olarak devreye giren, özel

bir çeşit SP’lerdir. Genellikle komplike iş kurallarını gerçekleştirmek için veya veri

bütünlüğünü korumak için kullanılır.

12.3.1. Trigger Ne Zaman Kullanılır?

Çeşitli amaçlara uygun olarak tetikleyiciler kullanılabilir. Bu amaçlar;

1. Değişiklikleri takip etmek,

2. Birincil anahtar üretmek,

3. Karmaşık iş kurallarını gerçekleştirmek,

4. E-posta atmak gibi olayları otomatik olarak yapmak,

5. Standart hata mesajlarının dışında bir hata mesajı elde etmek,

6. Veritabanı erişimlerini takip edebilmek,

7. Nesnede meydana gelebilecek değişiklikleri takip ve engellemektir.

12.3.2. Trigger Türleri

SQL Server'da iki farklı tür tetikleyici vardır. Bunlar After ve Instead Of

tetikleyicileridir.

1. After Tetikleyicileri

• After tetikleyicileri, sadece tablolar üstünde tanımlanabilir.

Page 247: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

234

• After tetikleyicileri, kendiyle ilişkili işlem gerçekleştikten hemen sonra tetiklenir

(ateşlenir).

• Veritabanındaki temel işlemler için (ekleme, silme ve güncelleme) After tetikleyicileri

tanımlanabilir.

• Birden fazla tetikleyici, bir iş için tanımlanabildiği gibi, bir tetikleyici de birden fazla iş

için tanımlanabilir.

2. Instead Of Tetikleyicileri

• Instead Of tetikleyicileri hem tablolar için hem de görünümler (views) için

tanımlanabilirler.

• Instead of tetikleyicileri, belirlenen işlem gerçekleşirken devreye girer.

• Instead of tetikleyicileri işlemlerin arasına girebildiğinden kontrol amaçlı

kullanılabilirler.

• After trigger’ı arasındaki en önemli fark, After trigger’ını devreye sokan olay olmuş

kabul edilerek akışı trigger’a bırakırken, Instead of trigger’ı istenen işlemi

gerçekleştirmez.

12.3.3. Trigger Oluşturmak

CREATE TRIGGER’i kullanabilmek için sysadmin, db_owner veya db_ddladmin rolüne

sahip olmak gerekir.

Yazılışı

CREATE TRIGGER tetikleyici_adi

ON tablo_adi

FOR veya AFTER veya INSTEAD OF (INSERT veya UPDATE veya DELETE)

AS otomatik çalışacak Sql ifadeleri

• FOR trigger’ı AFTER trigger’ı ile aynı anlamda kullanılmaktadır.

• SQL server üstünde iki farklı türden trigger tanımlanabilir: aynı anlama sahip FOR veya

AFTER ile ya da INSTEAD OF ile.

• Üç farlı olay için trigger yazılabilir: INSERT, UPDATE ve DELETE.

Page 248: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

235

• Bir trigger, birden fazla olay tarafından tetiklenmek üzere programlanacaksa bu FOR

veya AFTER kelimelerinden sonra belirtilir.

Örnek:

Create Trigger trg_musteri_girisi

ON musteri

AFTER Insert

AS

Print ‘veri girildi’

Print ‘trigger çalıştı’

INSERT Tetikleyicisi

• Bir tablo üzerinde yeni kayıtlar girildikten sonra devreye giren tetikleyicidir.

• Insert tetikleyici devreye girdikten sonra Inserted tablosunda yeni eklenen kayıtların

bir kopyası tutulur.

• Inserted tablosu, asıl tablonun yapısal bir kopyası olup tetikleyici sonlanana kadar

saklanır.

• Eğer, bir tabloya birden fazla kayıt girildiyse tetikleyici her kayıt için ayrı ayrı devreye

girmez. Tek seferde işlemi gerçekleştirir.

• Çünkü SQL Server, satır bazında tetikleyici desteği sağlamamaktadır.

DELETE Tetikleyicisi

• Tablodan bir kayıt silindiğinde otomatik olarak yapılması istenen işlemler için DELETE

tetikleyicisi kullanılır.

• DELETE tetikleyicisi çalıştıktan sonra silinen kayıt Deleted sahte tablosuna kaydedilir.

• Deleted tablosunun Inserted tablosundan farkı, asıl tablodan silinen kayıt artık Deleted

tablosunda yer almaktadır.

Page 249: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

236

UPDATE Tetikleyicisi

• Tablo üzerindeki kayıt ya da kayıtlarda güncelleme olduğunda devreye girecek olan

tetikleyicidir.

• INSERT ve DELETE tetikleyicilerden biraz farklıdır.

• Farkı ise UPDATE tetikleyici devreye girdiğinde Inserted sahte tablosu asıl tablodaki

kayıtlardan, düzenlenmiş kayıtların kopyasını, Deleted sahte tablosu ise kayıtların

düzenleme işleminden önceki hâllerini tutar.

INSTEAD OF Tetikleyicisi

• INSTEAD OF tetikleyicisi, belirlenen işlem gerçekleşirken devreye girer ve kendi

içinde tanımlanan komutları icra etmeye başlar.

• Yani, belirlenen işlemin yerine geçer.

• Bu tetikleyiciden önceki tetikleyiciler, veriler uygun değilse ROLLBACK ile işlemleri

geri alırlar.

• INSTEAD OF, işlem gerçekleşirken verilerin uygunluğunu denetleyecektir.

12.3.4. Trigger Yönetimi

Tetikleyiciyi Düzenlemek (ALTER)

• CREATE ile oluşturulmuş bir tetikleyiciyi daha sonra üzerinde değişiklikler yapmak

üzere tekrar açmak isteyebilirsiniz. Bunun için, tablonuzda oluşturulmuş bir tetikleyici

üzerindeyken sağ tıklayarak açılan menüden Modify komutunu vermeniz gerekir.

• ALTER, var olan tablo, tetikleyici gibi nesneler üzerinde değişiklik yapmak için

kullanılan komuttu.

Tetikleyiciyi Silmek (DROP)

• Oluşturulan bir tetikleyiciyi DROP komutuyla ya da tetikleyici üzerinde sağ tıklayarak

açılan menüden Delete komutunu vererek silebilirsiniz.

• T-SQL kodu olarak, DROP TRIGGER Musteri_Silme şeklinde yazabilirsiniz.

Tetikleyiciyi Aktif ya da Pasif Yapma

Page 250: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

237

• Oluşturulan bir tetikleyici, her zaman aktif durumdadır. Tetikleyiciyle ilgili bir durum

oluştuğunda otomatik olarak devreye girer.

• İstenildiğinde oluşturulan bu tetikleyiciler pasif hâle getirilebilir.

• Tetikleyici üzerinde sağ tıklayarak açılan menüde Disable komutunu verdiğinizde

tetikleyici pasif hâle gelir.

ALTER TABLE tablo_adi

DISABLE TRIGGER Musteri_Silme

• Tetikleyiciyi tekrar aktif hâle getirebilmek için menüden Enable komutunu veya

ENABLE TRIGGER komutunu kullanmanız gerekir.

12.3.5. Trigger Uygulamaları

Örnek1: Tabloyu Sildirmeyen Trigger

create database Mart

use Mart

create table Deneme(sayi int)

go

create trigger Sildirme

on Deneme

for Delete

as

Print ('Bu tabloyu silemezsiniz!')

rollback transaction

delete from Deneme

Örnek2: Kullanıcı Kayıt Ekledikten Sonra Tabloyu Listeleyen Trigger

create database OKULVT

use OKULVT

create table OgrenciBilgileri(

Page 251: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

238

OgrNo int,

Ad varchar(20),

Soyad varchar(20),

Cinsiyet varchar(1) )

go

create trigger Listele

on OgrenciBilgileri

after insert

as

begin

select * from OgrenciBilgileri

end

insert into OgrenciBilgileri(OgrNo,Ad, Soyad, Cinsiyet) values (123456, 'Süleyman',

'SANCAR', 'E')

Örnek3: 2A Şubesine Erkek Öğrenci Eklemeyen Trigger

create table Ogrenciler(

OgrNo int,

Ad varchar(20),

Soyad varchar(20),

Sinif varchar(5),

Cinsiyet varchar(1) )

use OKULVT

go

create trigger cinsiyetkontrolu

on Ogrenciler

for insert

As

if(exists(Select * from inserted where Sinif = '2A' and cinsiyet = 'E'))

Page 252: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

239

Begin

raiserror('2A sınıfına erkek öğrenci kaydedilemez',1,1)

rollback transaction

End

use OKULVT

insert into Ogrenciler(OgrNo,Ad, Soyad, Sinif, Cinsiyet) values (123456, 'Süleyman',

'SANCAR', '2A', 'E')

Trigger Güncelleme

ALTER TRIGGER trigger_adi

ON tablo_adiAFTER veya INSTEAD OF (INSERT , UPDATE , DELETE)

AS

Begin

--Sql ifadeler

End

Trigger enable/disable yapma Enable (Aktifleştirme)

--yöntem 1

disable trigger trigger_adı On tablo_adı

--yöntem 2

alter table tablo_adı disable trigger trigger_adı

Trigger enable/disable yapma Disable (Pasifleştirme)

--Yöntem 1

enable trigger trigger_adı On tablo_adı

--Yöntem 2

alter table tablo_adı enable trigger trigger_adı

Trigger Kaldırma

drop trigger trigger_adı

Page 253: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

240

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

Kaynaklarda da belirtilen Anadolu Üniversitesi Yayınlarına ait “Konumsal

Veritabanı” kitabından konu daha detaylı olarak çalışılabilir

Page 254: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

241

Uygulama Soruları

1. Konumsal veritabanında oluşturulan ilişki tutarlılık tablolarını açıklayınız.

2. Etiket konumsal nesne tablosunu tanımlayınız.

3. Ölçüm elemanları konumsal nesne tablosu hakkında neler öğrendiriniz?

Açıklayınız.

Page 255: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

242

Bu Bölümde Ne Öğrendik Özeti

Bir çok tablodan bilgi çekme işlemlerini tek bir noktadan kontrol etmek için View

kullanıldığını, tablolar üzerinde insert, update ve delete işlemlerinin öncesinde veya sonrasında

işlem yapmayı sağlamak için trigger kullanıldığını ve veritabanları için dışarıdan parametre

alan tekli ya da çoklu değer döndürebilen, içerisinde SQL sorgularının gerçekleştirildiği

program birimlerine Stored Procedure denildiğini öğrendik.

Page 256: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

243

Bölüm Soruları

1. Veritabanında bir işlem tarafından başka bir işlemin tetiklenmesi için aşağıdakilerden hangisi kullanılır?

A. Stored Procedure B. Inner Join C. Trigger D. View Create E. Alter Database

2. Hangi amaçlar için trigger (tetikleyici) kullanmaya gerek yoktur?

A. E-posta atmak gibi olayları otomatik olarak yapmak B. Karmaşık iş kurallarını gerçekleştirmek C. Nesnede meydana gelebilecek değişiklikleri takip ve engellemektir D. Standart hata mesajlarının dışında bir hata mesajı elde etmek E. Tabloya veri eklemek için

3. After Trigger için hangisi yanlıştır?

A. After tetikleyicileri, sadece tablolar üstünde tanımlanabilir B. After tetikleyicileri, kendiyle ilişkili işlem gerçekleşirken tetiklenir C. Veritabanındaki temel işlemler için (ekleme, silme ve güncelleme) After

tetikleyicileri tanımlanabilir D. Birden fazla tetikleyici,bir iş için tanımlanabildiği gibi, bir tetikleyici de birden

fazla iş için tanımlanabilir E. After tetikleyicileri, kendiyle ilişkili işlem gerçekleştikten hemen sonra

tetiklenir

4. Instead Of Trigger için hangisi yanlıştır? A. Instead Of tetikleyicileri hem tablolar için hem de görünümler (views) için

tanımlanabilirler B. Instead of tetikleyicileri, belirlenen işlem gerçekleşirken devreye girer C. Instead of tetikleyicileri işlemlerin arasına girebildiğinden kontrol amaçlı

kullanılabilirler D. After trigger’ı arasındaki en önemli fark, After trigger’ını devreye sokan olay

olmuş kabul edilerek akışı trigger’a bırakırken, Instead of trigger’ı istenen işlemi gerçekleştirmez

E. Instead of tetikleyicileri, belirlenen işlem gerçekleştikten sonra devreye girer

5. Aşağıdakilerden hangisi triggeri kaldırmak için (silmek için) kullanılması gereken komuttur?

A. alter trigger trigger_adı B. drop trigger trigger_adı C. delete trigger trigger_adı D. uninstall trigger trigger_adı E. remove trigger trigger_adı

Page 257: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

244

6. Bir çok tablodan bilgi çekme işlemini tek bir noktadan kontrol etmemizi sağlama

işlemine ne ad verilir?

A. Stored Procedure

B. Trigger

C. View

D. Join

E. Default

7. Veritabanımız için dışarıdan parametre alan tekli ya da çoklu değer döndürebilen,

içerisinde SQL sorgularımızı gerçekleştirdiğimiz programlama birimlerine ne ad

verilir?

A. Stored Procedure

B. Trigger

C. View

D. Join

E. Default

8. Stored Procedure oluşturmayla ilgili aşağıdaki ifadelerden hangisi yanlıştır?

A. Türkçe karakter kullanılmaz

B. Boşluk kullanılmaz

C. Rakamla başlayamaz

D. Ayrılmış isim (select, insert) kullanılamaz

E. Stored Procedure ismi update olabilir

9. “Musteri_Silme” adındaki bir trigger’ı pasif etmek için aşağıdaki hangi komut

kullanılmalıdır?

A. ENABLE TRIGGER Musteri_Silme

B. DISABLE TRIGGER Musteri_Silme

C. DELETE TRIGGER Musteri_Silme

D. JOIN TRIGGER Musteri_Silme

E. VIEW TRIGGER Musteri_Silme

Page 258: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

245

10. Aşağıdakilerden hangisi SELECT ifadesi ile tanımlanmış sanal tablolardır?

A. Trigger

B. Table

C. Defaults

D. View

E. Stored Procedure

Cevaplar

1)C 2)E 3)B 4)E 5)B 6)C 7)A 8)E 9)B 10)D

Page 259: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

246

13.MSSQL SERVER'DA SORGU TASARIMI UYGULAMASI

Page 260: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

247

Bu Bölümde Neler Öğreneceğiz?

13.1. Bu bölümde MSSQL Server konularını içeren veritabanı uygulaması

yapılacaktır.

13.2. Sorgu oluşturma

13.3. SQL Deyimlerini ve Fonksiyonlarının veritabanı üzerinde uygulaması

yapılacaktır.

Page 261: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

248

Bölüm Hakkında İlgi Oluşturan Sorular

1. SQL Nedir? Açıklayınız.

2. Sorgu Niçin Oluşturulur? Açıklayınız.

3. Sorgu Türleri Nelerdir?Açıklayınız.

4. SQL Deyimleri Nelerdir? Açıklayınız.

5. SQL’de Kullanılan işaretler nelerdir? Açıklayınız.

6. SQL’de kullanılan komutlar nelerdir? Hangi ne işe yarar? Açıklayınız.

7. SQL’de kullanılan hazır fonksiyonlar nelerdir? Açıklayınız.

Page 262: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

249

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

SQL’de Kullanılan İşaretler,

Deyimler, Fonksiyonlar

SQL’de Kullanılan

İşaretleri, Deyimleri,

Fonksiyonları Kavrar,

Access veritabanında bu

konuları sorgu ile

kullanabilir, uygulamasını

gerçekleştirebilir.

Ders notları, Sunumlar,

Kaynaklar, Uygulama

Page 263: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

250

Anahtar Kavramlar

SQL, CREATE, ALTER, DROP, INSERT INTO, DELETE, UPDATE, SELECT,

WHERE, ORDER BY, GROUP BY, HAVING, SELECT INTO, LIKE, BETWEEN, AVG,

COUNT, SUM, MAX, MIN

Page 264: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

251

Giriş

SQL deyimleri veritabanları üzerinde çeşitli işlemleri yerine getirirler. Veritabanından

sorgulama yapmak için SELECT, ekleme yapmak için INSERT güncelleme yapmak için

UPDATE, silme yapmak için DELETE, yeni tablo oluşturmak için CREATE TABLE gibi

komutlara sahiptir. SQL içinde veriler üzerinde işlemler yapmak üzere hazır fonksiyonlar

bulunur.

Bu bölümde bundan önceki bölümlerde anlatılan konuların uygulaması yapılacaktır.

MSSQL Server veritabanı üzerinde SQL Deyimleri, İşaret ve Fonksiyonları, Fonksiyonları

kullanılarak sorgular oluşturulacaktır.

Page 265: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

252

13.1. MSSQL Server Veritabanı İle SQL Uygulaması

Aşağıdaki 19 adımlık SQL uygulaması MSSQL Server veritabanı üzerinde yapılacaktır.

19 adımlık uygulamanın cevabı aynı tabloda yer almaktadır. Siz uygulamayı yaparken mümkün

olduğunca cevabına bakmadan kendiniz soruları yazmaya çalışınız. Sorgu yazmada

takıldığınızda cevabına bakmayı yeğleyiniz.

Page 266: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

253

Soru Cevap

2) “okul_vt” adında bir veri tabanı oluşturunuz.

create database okul_vt

3) “Ogrenci” adında bir tablo oluşturarak aşağıdaki alanları ekleyiniz.

OgrenciNo,Ad,Soyad,

Cinsiyet,Yas,

Not: Veri tiplerini

kendiniz belirleyiniz.

use okul_vt create table Ogrenci (OgrenciNo varchar(10), Ad Varchar(25), Soyad Varchar(20), Cinsiyet Varchar(5), Yas tinyint, )

4) Öğrenciye ait yukarıdaki tüm alanlara veri girişini yapmak için “Ogrenci_Bilgi_Gir” adında Stored Procedure oluşturunuz.

use okul_vt go Create proc Ogrenci_Bilgi_Gir @OgrenciNo varchar(10), @Ad Varchar(25), @Soyad Varchar(20), @Cinsiyet Varchar(5), @Yas tinyint as

insert into Ogrenci values (@OgrenciNo,@Ad, @Soyad,

@Cinsiyet,@Yas)

5) Oluşturmuş olduğunuz Stored Procedure’ü kullanarak yandaki verileri giriniz.

exec Ogrenci_Bilgi_Gir '1014113040','Gökhan',

'TURAN','ERKEK',26

exec Ogrenci_Bilgi_Gir '1014113041','Selda',

'TANER','BAYAN',30

exec Ogrenci_Bilgi_Gir '1014113042','Serkan',

'TURAN','ERKEK',28

6) Soyadı “T” ile başlayan öğrencileri listeleyen “Ogrenci_Ara” adında Stored Procedure oluşturunuz.

create proc Ogrenci_Ara @Sart varchar(30) as

select * from Ogrenci where Soyad like @Sart + '%'

Page 267: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

254

7) Ogrenci_Ara prosedürünü çalıştırarak listelenen bilgileri yan tarafa yazınız.

exec Ogrenci_Ara 'T'

8) Cinsiyeti Erkek olanları ayrı bir tabloda “Erkek_Ogrenciler” adında yeni bir tabloda saklayınız.

select * into Erkek_Ogrenciler from Ogrenci where

Cinsiyet='Erkek'

9) Soyadı “Taner” olan öğrencileri siliniz.

delete from ogrenci where soyad='Taner'

10) ”Ogrenci” tablosuna “Sehir” diye alan ekleyiniz.

alter table Ogrenci add Sehir varchar(15)

11) Öğrenci numarası 1014113041 olan öğrencinin geldiği şehri (Şehir alanı) Trabzon yapınız.

update Ogrenci set Sehir='Trabzon' where

OgrenciNo=1014113041

12) “Erkek_Ogrenciler” tablosundaki tüm verileri öğrenci numarasına göre azalan şeklinde sıralayınız.

select * from Erkek_Ogrenciler order by OgrenciNo

desc

13) “Erkek_Ogrenciler” tablosundaki “Yas” alanını siliniz.

alter table Erkek_Ogrenciler drop column Yas

Yandaki “Notlar”

tablosunu oluşturarak ister

arayüzü, ister komut satırını

kullanarak oluşturunuz.

14) “Erkek_Ogrenciler” tablosundaki Soyadı sütunundaki tüm verileri küçük harf şeklinde listeleyiniz.

select lower (Soyad) from Erkek_Ogrenciler

Page 268: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

255

15) Notlar tablosundaki her bir öğrenci için vizenin %40’ını finalin %60’ını alarak toplamı, Ortalama sütununa yazdırınız.

update Notlar set Ortalama=Vize*0.4+Final*0.6 where

OgrenciNo=1014113041

update Notlar set Ortalama=Vize*0.4+Final*0.6 where

OgrenciNo=1014113042

update Notlar set Ortalama=Vize*0.4+Final*0.6 where

OgrenciNo=1014113043

update Notlar set Ortalama=Vize*0.4+Final*0.6 where

OgrenciNo=1014113044

16) Notlar tablosundaki ortalaması 80’den büyük 80’e en yakın 2 kişinin notunu listeleyiniz.

select top 2 * from Notlar2 where Ortalama>80 order

by (Ortalama) asc

17) Notlar tablosundaki ortalamaya göre başarı bakımından sınıfın %20’sine girenleri listeleyiniz.

select top 20 percent * from Notlar order by

(Ortalama) desc

18) Notlar tablosundaki ortalaması 40’tan büyük olanların son ikisini listeleyiniz.

select top 2 * from Notlar where Ortalama>40 order

by (OgrenciNo)asc

19) “Ogrenci” tablosunu siliniz.

drop table Ogrenci veya delete from Ogrenci

Page 269: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

256

Uygulamalar

Konu ile ilgili kitaplar gözden geçirilmeli

Konu ile ilgili internet üzerinde makaleler okunmalı

MSSQL Server veritabanı üzerinde bu uygulama gerçekleştirilmeli

Page 270: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

257

Uygulama Soruları

1. Bu derste yaptığımız uygulama gibi bir soru hazırlayarak sorgularla uygulama

yaparak sorunuzu cevaplandırınız, uygulama yapınız.

Page 271: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

258

Bu Bölümde Ne Öğrendik Özeti

Bu bölümde önceki bölümleri kapsayan SQL sorgularını MSSQL Server veritabanı

üzerinde uygulama gerçekleştirmiş olduk.

Page 272: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

259

Bölüm Soruları

1. Ogrenciler tablosundaki “Adres” alanını Büyük harflere dönüştüren sorgu aşağıdakilerden hangisidir?

A. select upper(Adres) from Ogrenciler B. select lower(Adres) from Ogrenciler C. select ltrim(Adres) from Ogrenciler D. select rtrim(Adres) from Ogrenciler E. select len(Adres) from Ogrenciler

2. Ogrenciler tablosundaki “Adres” alanındaki tüm bilgileri Büyük harflere dönüştürüp tekrar aynı alanda güncelleyen sorgu aşağıdakilerden hangisidir?

A. update Ogrenciler set Adres=lower(Adres) B. update Ogrenciler set Adres=upper(Adres) C. update Ogrenciler set Adres=rtrim(Adres) D. update Ogrenciler set Adres=ltrim(Adres) E. update Ogrenciler set Adres=len(Adres)

3. Ogrenciler tablosundaki Kayıt Yılı 2017 olan ve Bölüm alanındaki verilerin tümünü büyük harfe dönüştürüp güncelleyen sorgu aşağıdakilerden hangisidir?

A. update Ogrenciler set bolum=lower(bolum) where kayityili=2017 B. update Ogrenciler set bolum=upper(bolum) where kayityili=2007 C. update Ogrenciler set bolum=upper(bolum) where kayityili=2017 D. update Ogrenciler set bolum=upper(bolum) kayityili=2017 E. update Ogrenciler set bolum=lower(bolum) where kayityili=2007

4. Ogrenciler tablosundaki tüm verileri silmek için yazılması gereken sorgu aşağıdakilerden hangisidir?

A. delete from Ogrenciler where adi=’Ali’ B. delete from Ogrenciler where soyadi=’TAŞKENT’ C. update from Ogrenciler D. delete from Ogrenciler E. update * from Ogrenciler

5. Ogrenciler tablosunu silmek için yazılması gereken sorgu aşağıdakilerden hangisidir? A. drop column Ogrenciler B. uninstall table Ogrenciler C. update table Ogrenciler D. delete table Ogrenciler E. drop table Ogrenciler

6. Ogrenciler tablosunda soyadı “T” ile başlayanları sorgulamak için yazılması gereken sorgu aşağıdakilerden hangisidir?

A. select * from Ogrenciler where like 'T%'

Page 273: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

260

B. select * from Ogrenciler Soyad like 'T%' C. select * from Ogrenciler where Soyad like '%T%' D. select * from Ogrenciler where Soyad like '% T ' E. select * from Ogrenciler where Soyad like 'T%'

7. Ogrenciler tablosunda Cinsiyeti “Erkek” olan öğrencileri “Erkek_Ogrenciler” diye ayrı tabloda tüm verilerini saklamak aşağıdaki sorgulardan hangisini yazmak gerekir?

A. select * into Erkek_Ogrenciler from Ogrenciler where Ad='Ekrem' B. select * into Erkek_Ogrenciler from Ogrenciler Cinsiyet='Erkek' C. select * into Erkek_Ogrenciler from Ogrenciler where Cinsiyet='Kız' D. select ad, soyad, bolum into Erkek_Ogrenciler from Ogrenciler where

Cinsiyet='Erkek' E. select * into Erkek_Ogrenciler from Ogrenciler where Cinsiyet='Erkek'

8. Ogrenciler tablosunda Cinsiyeti “Erkek” olan öğrencilerin tüm verilerini silmek için aşağıdaki sorgulardan hangisini yazmak gerekir?

A. delete from Ogrenciler B. delete from Ogrenciler Cinsiyet='Erkek' C. insert into Ogrenciler where Cinsiyet='Erkek' D. delete from Ogrenciler where Cinsiyet='Erkek' E. update from Ogrenciler where Cinsiyet='Erkek'

9. Aşağıdakilerden hangisi bir veritabanı yönetim sistemlerinden değildir? A. Oracle B. MY SQL C. Excel D. MS SQL E. Access

10. Aşağıdakilerden hangisi veritabanlarına girilen verilen saklandığı nesneye verilen addır?

A. Modül B. Tablo C. Sorgu D. Rapor E. Makro

Cevaplar

1)A 2)B 3)C 4)D 5)E 6)E 7)E 8)D 9)C 10)B

Page 274: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

261

14. VERİTABANI TASARIMI VE YÖNETİMİ UYGULAMASI

Page 275: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

262

Bu Bölümde Neler Öğreneceğiz?

14.1. Access Veritabanına Alan Ekleme ve Toplu Veri Girişi

14.2. Access Veritabanı Üzerinde Çeşitli Uygulamalar

14.3. MSSQL Server Veritabanı Üzerinde SQL Sorguları Uygulaması

Page 276: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

263

Bölüm Hakkında İlgi Oluşturan Sorular

1. Access Veritabanına Alan Ekleme ve Toplu Veri Girişi işlemi Nasıl Yapılır? Açıklayınız.

2. Access’ten Access’e Veri Aktarma İşi Nasıl Yapılır? Açıklayınız.

3. Excel’de Bulunan Veriler Access Veritabanına Nasıl Aktarılır?

4. Access Veritabanı Nasıl Bölünür?

Page 277: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

264

Bölümde Hedeflenen Kazanımlar ve Kazanım Yöntemleri

Konu Kazanım Kazanımın nasıl elde

edileceği veya geliştirileceği

Access Veritabanına Alan

Ekleme ve Toplu Veri Girişi

Access Veritabanı Alan

Eklemeyi ve Toplu Veri

Girişi Yapmayı Kavrar,

Uygulamasını Gerçekleştirir

Okuma- Anlama Ders

notları, Sunumlar, Kaynaklar

MSSQL Server Veritabanı

Üzerinde Veritabanı

Tasarımı ve SQL Sorgu

Uygulaması

SQL’de Kullanılan

İşaretleri, Deyimleri,

Fonksiyonları Kavrar,

Access veritabanında bu

konuları sorgu ile

kullanabilir, uygulamasını

gerçekleştirebilir.

Okuma- Anlama Ders

notları, Sunumlar, Kaynaklar

Page 278: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

265

Anahtar Kavramlar

MSSQL Server, Alan Ekleme, Toplu Veri Girişi, SQL, Sorgu, Access

Page 279: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

266

Giriş

Bu bölümde Access veritabanına alan ekleme ve toplu veri girişi, Access veritabanı

üzerinde; verileri dışa aktarma, Excel’deki verileri içe aktarma, verileri metin dosyasına

dönüştürme, metin dosyasındaki verileri Access’e aktarma, Access’ten Access’e veri aktarma,

veritabanını bölme, veritabanında var olan alanın veri türünü değiştirme işlemleri yapılacaktır.

Ayrıca MSSQL Server Veritabanı Üzerinde Veritabanı Tasarımı ve SQL Sorgu Uygulaması

gerçekleştirerek SQL konularını tekrar edilecektir.

Page 280: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

267

14.1. MSSQL Server Üzerinde Veritabanı Tasarımı ve SQL Sorgu

Uygulaması

Soru Cevap

1) “kutuphane_vt” adında bir veri tabanı oluşturunuz.

create database kutuphane_vt

2) “KitapBilgileri” adında bir tablo oluşturarak aşağıdaki alanları ekleyiniz.

KitapID, KitapAdi,

YayinYili, ISBN, Yazar,

KitapTuru

Not: Veri tiplerini kendiniz

belirleyiniz.

use kutuphane_vt create table KitapBilgileri ( KitapID int, KitapAdi varchar (50), YayinYili int, ISBN bigint, Yazar varchar (50), KitapTuru varchar(50) )

3) Kitaba ait yukarıdaki tüm alanlara veri girişini yapmak için “KitapEkle” adında Stored Procedure oluşturunuz.

use kutuphane_vt go create proc KitapEkle @KitapID int, @KitapAdi varchar(50), @YayinYili int, @ISBN bigint, @Yazar varchar(50), @KitapTuru varchar(50) as insert into KitapBilgileri values

(@KitapID, @KitapAdi, @YayinYili, @ISBN, @Yazar, @KitapTuru)

4) Oluşturmuş olduğunuz Stored Procedure’ü kullanarak aşağıdaki verileri giriniz.

exec KitapEkle 1, 'Beni Ödülle Cezalandırma', 2016, 9786050937022, 'Özgür BOLAT', 'Eğitim'

exec KitapEkle 2, 'Efsaneler ve Gerçekler', 2017, 9786050946253, 'Temel AKSOY', 'İş'

exec KitapEkle 3, 'Türk Zaferleri', 2017, 9786050947359, 'Reşad Ekrem KOÇU', 'Tarih'

Page 281: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

268

5) Yayın Yılına göre arama sonucunu gösteren “YilaGoreAra” adında Stored Procedure oluşturunuz.

create proc YilaGoreAra @YayinYili int as select * from KitapBilgileri where

YayinYili=@YayinYili

6) YilaGoreAra prosedürünü 2017 parametresini göndererek çalıştırınız, listelenen bilgileri yan tarafa yazınız.

exec YilaGoreAra 2017

7) Yayın Yılı “2017” olanları ayrı bir tabloda “SonKitaplar” adında yeni bir tabloda saklayınız.

select * into SonKitaplar from KitapBilgileri where YayinYili=2017

8) ”KitapBilgileri” tablosuna “YayinEvi” diye alan ekleyiniz.

alter table KitapBilgileri add YayinEvi varchar(15)

9) Şuan için tabloda 3 adet kitap bilgisi yer almaktadır. Bu 3 kitabından “Doğan Kitap” yayın evine ait olduğunu düşünerek bu 3 kitabında yayın evini tek satır komutla güncelleyiniz.

update KitapBilgileri set YayinEvi='Doğan Kitap'

10) Yayın Yılı 2017 olan kitapların Kitap Türünü “Bilinmeyen Tür” olarak güncelleyiniz.

update KitapBilgileri set KitapTuru='Bilinmeyen Tür' where YayinYili=2017

11) “KitapBilgileri” tablosundaki “KitapAdi” sütunundaki tüm verileri büyük harf şeklinde listeleyiniz.

select upper(KitapAdi) From KitapBilgileri

12) “KitapBilgileri” tablosundaki “YayinEvi” sütunundaki verileri

select substring (YayinEvi, 2,3) from KitapBilgileri

Page 282: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

269

2. Karakterden başlayarak 3 karakteri listeleyiniz.

13) “KitapBilgileri” tablosundaki Kitap Adında “Türk” kelimesi geçen kitapları listeleyiniz, seçiniz.

select * from KitapBilgileri where KitapAdi Like '%Türk%'

14) “KitapBilgileri” tablosuna göre Yayın Yılı 2016 sonrasındaki kitapları listeleyiniz, seçiniz.

select * from KitapBilgileri where YayinYili>2016

15) “KitapBilgileri” tablosundaki verileri siliniz. (Tablonun kendisi ve alanlar silinmeyecek.)

delete from KitapBilgileri

16) “KitapBilgileri” tablosunu siliniz. (Tablonun kendisi ve alanlar da silinecek.)

drop table KitapBilgileri

Page 283: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

270

14.2. Access Veritabanına Alan Ekleme ve Toplu Veri Girişi

Bu uygulama Access veritabanına alan ekleyip Excel ortamında verileri bu alana

aktarma işlemini gerçekleştireceğiz.

1. Access veritabanı programında ilgili dosya açılır.

Şekil 116: Access Veritabanında Açılan Dosyanın İçeriği

2. Açılan dosyanın içeriğine bakıldığında OblectID, PlakaNo, İlAdı ve 2007 yılından

2016 yılına kadar alanlar var ve bu alanlarda illere ait veriler işlenmiş. TUİK

tarafından 2017 yılına ait illere göre nüfus yayınlanmış. Birde bunları bu tablomuza

ekleyeceğiz.

3. Öncelikli olarak Tablomuza sağ tıklayarak Tasarım Görünümü menüsüne

tıklayalım.

Page 284: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

271

Şekil 117: Tablonun Tasarım Görünümü Açma

4. Tablonun Tasarım Görünümü açıldıktan sonra son satıra gelinerek Alan Adı

kısmına Nufus2017 yazılır, Veri Türü olarakta Sayı belirlenir. Sayı veri türünün

özelliklerinden Alan Boyutu Çift olarak ayarlanır.

Şekil 118: Alan Ekleme ve Özelliklerini Belirleme

Page 285: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

272

5. TUİK’in İllere Göre Nüfus Bilgilerinin olduğu Excel dosyası TUİK sayfasından

indirilir. İndirilen Excel dosyası açılır.

Şekil 119: TUİK İllere Göre Nüfus Bilgileri

6. Access veritabanındaki Alan ekleme işlemi yapıldıktan sonra yapılan değişiklikler

kaydedilir. Tablo normal görünümde açılır. Exceldeki 2017 yılına ait illerin

nüfusları seçilerek kopyalanır. Access veritabanındaki Nufus2017 alanı seçilere

yapıştırma işlemi gerçekleştirilir.

Şekil 120: Excel'den Access'e Veri Aktarma

Böylelikle Access veritabanındaki tabloya bir alan ekleyerek toplu veri aktarımı gerçekleştirmiş

olduk.

Page 286: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

273

14.3. Access Veritabanında Çeşitli Uygulamalar

Bu bölümde Canlı ders sırasında Access veritabanı üzerinde; verileri dışa aktarma, Excel’deki

verileri içe aktarma, verileri metin dosyasına dönüştürme, metin dosyasındaki verileri Access’e

aktarma, Access’ten Access’e veri aktarma, veritabanını bölme, veritabanında var olan alanın

veri türünü değiştirme gibi uygulamalar yapılacaktır. Canlı ders sırasında bu uygulamalar

yapılarak Access veritabanı üzerinde en çok yapılan işlemlerin öğrenilmesi sağlanacaktır.

Page 287: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

274

Uygulamalar

Bu bölümde yapılan uygulamaların pekişmesi için sizin de bu uygulamaları

bilgisayarınızda yapmanız önerilir.

Page 288: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

275

Uygulama Soruları

1. Access Veritabanına Alan Ekleme ve Toplu Veri Girişi işlemi Nasıl Yapılır?

Bilgisayarınızda bu uygulamayı gerçekleştiriniz.

2. MSSQL Server Veritabanı Üzerinde Veritabanı Tasarımı ve SQL Sorgu

Uygulamasını Kendi Bilgisayarınızda Gerçekleştiriniz.

Page 289: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

276

Bu Bölümde Ne Öğrendik Özeti

Access veritabanına alan ekleme ve toplu veri girişini, Access veritabanı üzerinde;

verileri dışa aktarma, Excel’deki verileri içe aktarma, verileri metin dosyasına dönüştürme,

metin dosyasındaki verileri Access’e aktarma, Access’ten Access’e veri aktarma, veritabanını

bölme, veritabanında var olan alanın veri türünü değiştirme işlemlerini öğrendik. Ayrıca

MSSQL Server Veritabanı Üzerinde Veritabanı Tasarımı ve SQL Sorgu Uygulamasını

gerçekleştirerek SQL konularını tekrar etmiş olduk.

Page 290: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

277

Bölüm Soruları

1. Ogrenciler tablosundaki Numarası “1001” olan kişinin Şehir alanını “Burdur” diye güncellemek için aşağıdaki sorgulardan hangisi yazılmalıdır?

A. update Ogrenciler set Sehir='Burdur' where OgrenciNo=101 B. update Ogrenciler set Sehir='Burdur' where OgrenciNo=1001 C. upgrade Ogrenciler set Sehir='Burdur' where OgrenciNo=1001 D. update Ogrenciler set Sehir='Burdur' OgrenciNo=1001 E. update Ogrenciler set Sehir='Burdur' where 1001

2. Ogrenciler tablosundaki tüm verileri öğrenci numarasına göre azalan şeklinde sıralayan sorgu aşağıdakilerden hangisidir?

A. select * from Ogrenciler order by OgrenciNo desc B. select * from Ogrenciler order by OgrenciNo asc C. select * from Ogrenciler order by ad desc D. select ad, soyad from Ogrenciler order by OgrenciNo desc E. select * from Ogrenciler desc

3. İller tablosundaki “iladi” alanındaki tüm bilgileri Küçük harflere dönüştürüp tekrar aynı alanda güncelleyen sorgu aşağıdakilerden hangisidir?

A. update iller set iladi=lcase(iladi) B. update iller set iladi=ucase(iladi) C. update iller set iladi=rtrim(iladi) D. update iller set iladi=ltrim(iladi) E. update iller set iladi=len(iladi)

4. SQL ne anlama gelmektedir? A. Yapılandırılmış soru dili B. Yapılandırılmış sorgu dili C. Yapılandırılmış programlama dili D. Yapılandırılmış web dili E. Yapılandırılmış mobil dil

5. Aşağıdakilerden hangisi veritabanında bir tabloya yeni bir kayıt eklemek için kullanılan SQL deyimidir?

A. ADD RECORD B. ADD NEW C. INSERT INTO D. INSERT NEW E. INSERT RECORD

Page 291: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

278

6. Aşağıdakilerden hangisi Kişiler tablosundaki Adı “Mehmet” olan kişilerin tüm bilgilerini seçmek için kullanılan sorgudur?

A. select all from kisiler where ad=’Mehmet’ B. select [all] from kisiler where ad=’Mehmet’ C. select * from kisiler where ad<>’Mehmet’ D. select * from kisiler where ad=’Mehmet’ E. select all from kisiler where ad<>’Mehmet’

7. Aşağıdakilerden hangisi bir alanda farklı değerleri (tekrar etmeyen değerler) seçmek

için kullanılan SQL sorgusudur? A. SELECT UNIQUE B. SELECT DISTINCT C. SELECT DIFFERENT D. SELECT GROUP BY E. SELECT HAVING BY

8. Aşağıdakilerden hangisi adı “Ahmet” olanın soyadını “Kahraman” olarak güncelleyen

sorgudur? A. update kisiler set soyad = 'Kahraman' into ad = 'Ahmet' B. modify kisiler set soyad = 'Kahraman' where ad = 'Ahmet' C. modify kisiler set soyad = 'Kahraman' into ad = 'Ahmet' D. update kisiler set soyad = 'Ahmet' where ad = ‘Kahraman' E. update kisiler set soyad = 'Kahraman' where ad = 'Ahmet'

9. NufusBilgileri tablosundaki bilgilerin tamamı silmek için aşağıdaki sorgulardan hangisi kullanılır?

A. Drop table NufusBilgileri B. Delete from NufusBilgileri C. Drop from NufusBilgileri D. Delete table NufusBilgileri E. Uninstall table NufusBilgileri

10. NufusBilgileri tablosuna “PlakaKodu” diye bir alan eklemek istesek aşağıdaki sorgulardan hangisini kullanmak gerekir?

A. alter table NufusBilgileri add PlakaKodu int B. alter table NufusBilgileri insert into PlakaKodu int C. alter table NufusBilgileri insert PlakaKodu int D. insert table NufusBilgileri add PlakaKodu int E. insert table NufusBilgileri into PlakaKodu int

Cevaplar

1)B 2)A 3)A 4)B 5)C 6)D 7)B 8)E 9)B 10)A

Page 292: VERİTABANLARINA Gİauzefkitap.istanbul.edu.tr/kitap/cografi_bilgi...İlişkisel Veritabanı: Bu tür veritabanında birçok tablo kullanılır ve tablolar arasında ilişkiler oluşturulur.

279

KAYNAKÇA

• Veri Tabanı Yönetim Sistemleri I, Turgut ÖZSEVEN, Murathan Yayınevi,

2010, Trabzon.

• Veri Tabanı Yönetim Sistemleri, Yrd. Doç. Dr. Zehra ALAKIÇ BURMA,

Seçkin Yayıncılık, 2009, Ankara.

• SQL Server 2008 R2, Selçuk ÖZDEMİR, Kodlab Yayıncılık, 2010,İstanbul.

• Mesleki ve Teknik Eğitim Programlar ve Öğretim Materyalleri, MEGEP

Modülleri.

• http://portal.netcad.com.tr/pages/viewpage.action?pageId=106727060

• http://www.dijitalders.com/icerik/13/2623/veri_tabaninda_iliski_turleri.html

• www.acikders.org.tr

• http://webogrenci.net/veritabaninin-faydalari-ve-avantajlari/

• http://btegitimleri.itu.edu.tr/itacademy/?egitim-bilgileri/veritabani-yoneticiligi

• http://kod5.org/iliskisel-veritabani-yonetim-sistemleri-rdbms/

• www.office.com

• http://yazilimgunlukleri.blogspot.com.tr/2012/02/veri-tipi-nedir-temel-veri-

tipleri.html

• https://banasqlanlat.wordpress.com/category/i-sql-deyimleri/

• http://myo.bartin.edu.tr/akgul/dersler/veritabani/02-SQL_VeriTipleri.pdf

• http://www.dahiweb.com/microsoft-sql-server-nedir-ne-ise-yarar/

• https://www.yazilimbilisim.net/veritabani/mssql/sql-serverda-trigger-

kullanimi/