Veritabanı Programlama



Benzer belgeler
Veri Tabanı Programlamaya Giriş

Veritabanı Programlama 1

VERİ TABANI YÖNETİM SİSTEMLERİ I. 4. VERİ TABANI TASARIMI ve NORMALİZASYONU

08118 Veri Tabanı I. Database Management System. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr.Gör. Murat KEÇECĠOĞLU

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

KISITLAMALAR (CONSTRAINT)

VERİ TABANI YÖNETİM SİSTEMLERİ I

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

VERİ TABANI YÖNETİM SİSTEMLERİ I

Bilişim Teknolojileri ve Uygulamaları

SQL Komutları (2) Uzm. Murat YAZICI

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

Veritabanı. SQL (Structured Query Language)

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

VERİTABANI Veritabanı Yönetimi

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

1 Temel Kavramlar. Veritabanı 1

Mysql Veritabanı Komutları

Bölüm 4: DDL Veri Tanımlama Dili

Veri Tabanı Tasarım ve Yönetimi

«BM364» Veritabanı Uygulamaları

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

Durhan GABRALI Veritabanı Organizasyonu Dersi (11B)

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

EBE-368 Veri Tabanı Yönetim Sistemleri İlişkisel Model (The Relational Model)

VERİTABANI ORGANİZASYONU

İleri Seviye Select Cümlecikleri

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

Bilgisayar Uygulamaları. MySql

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

SORGULAR VE ÇEŞİTLERİ II

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Veritabanı Uygulamaları Tasarımı

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

VERİTABANI. SQL (Structured Query Language)

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

SORGULAR. Öğr.Gör.Volkan Altıntaş

SQL e Giriş. Uzm. Murat YAZICI

BMB202. Veritabanı Yönetimi Ders 5. İlişkisel Cebir ve SQL. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

SQL Query and Table Application

Oracle Database 11g: Introduction to SQL

08118 Veri Tabanı I. Database Management System. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

VERİ TABANI YÖNETİM SİSTEMLERİ

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Veritabanı Tasarımı. NOT NULL ve UNIQUE Kısıtlamaları Tanımlama

SQL Kod ile Tablo Oluşturma

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Veritabanına Uygulanması

- Veri Bütünlüğü: Bir tabloda değişiklik yapılan verinin ilişkili olduğu diğer tablo veya tablolarda da aynı işlemin yapılması gerekebilir.

UZAKTAN EĞİTİM MERKEZİ

ACCESS PLATFORMUNDA SQL

Veri Tabanı-I 1.Hafta

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

VERİ TABANI YÖNETİM SİSTEMLERİ II. 2. SQL PROGRAMLAMA, VERİ TİPLERİ ve DEĞİŞKENLER

Oracle da kullanılan veri tipleri:

Lıke Joker Karakterler, Is [not] Null, Order By, Group By, As

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri

Veri Tabanı Hafta Dersi

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

HASTANE OTOMASYONU VERİ TABANI YÖNETİM SİSTEMLERİ TEMEL VERİTABANI KAVRAMLARI

VERİ TABANI YÖNETİM SİSTEMLERİ I

VERİ TABANI ve YÖNETİMİ

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

BİL Bilişim Teknolojileri. Access

İLİŞKİSEL VERİTABANLARI

Veritabanı Tasarımı. SQL Deyimi Anatomisi

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

VERİTABANI Veritabanı Sorgulama

Veritabanı Yönetimi Bilgisayarların. Keşfi Hedefler. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

Veri Tabanı Hafta Dersi

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

10-Veri Tabanları.

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir.

VERİ TABANI YÖNETİM SİSTEMLERİ I

VERİ TABANI YÖNETİM SİSTEMLERİ

8 Aralık 2011 / Perşembe. Veri Tabanına Giriş

VERİ TABANI YÖNETİM SİSTEMLERİ II. 9. FORMLAR ve ORACLE FORMS PROGRAMINDA FORM OLUŞTURMA

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

MICROSOFT ACCESS DERS NOTLARI

SQL (Structured Query Language)

VERİ TABANI I. Yrd.Doç.Dr. İlker ÜNAL. Teknik Bilimler Meslek Yüksekokulu

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veri Modelleri

Cursor. Bir veri tipi olarak da ele alınabilen Transact-SQL Sunucu Cursor şu aşamalardan geçirilerek kullanılır.

Coğrafi Bilgi Sistemlerine Giriş. Ünite 5 - Veri Tabanı Yönetim Sistemleri

1 Temel Kavramlar. Veritabanı 1

Veri Tabanı-I 1.Hafta

İNTERNET PROGRAMCILIĞI HAFTA. MYSQL ile VERİTABANI İŞLEMLERİ - 1. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Veritabanı Oluşturma, Silme

Transkript:

Temmuz 2003 Veritabanı Programlama Yaşar Gözüdeli Veritabanı Programlama Eğitim dizisi

Veritabanı Programlama 1 Temmuz 2003 Yaşar GÖZÜDELİ Bu ek kopyalanamaz, satılamaz. Her hakkı saklıdır. BYTE ın okurlarına ücretsiz armağanıdır. 2003 BYTE BYTE bir Acar Yayıncılık Yayınıdır

İÇİNDEKİLER Önsöz... 6 Bu kitapta...8 Veritabanı Yönetim Sistemleri... 8 Veritabanı Nerelerde Kullanılır?... 9 1.İlişkisel Veritabanı Kavramı...12 Günlük Hayatta ilişkisel Veritabanı... 12 Temel Kavramlar1... 13 Tablolar:... 13 Değişken İsimlendirme Kuralları... 14 İlişkisel Veritabanı Yönetim Sistemleri:... 14 2.SQL Veri Tanımlama Dili (Data Definition Language)...20 Temel Veri Tipleri:... 20 Veritabanı:... 20 Tablolar:... 21 Tablo Oluşturma... 21 Kısıtlar(Constraint) oluşturma :... 22 Tablo silme:... 23 Tabloda Değişiklik Yapma:... 23 İndeksler:... 23 View ler... 24 Veritabanı Tasarımı:... 25 1.Nesneleri Tanımlayın:... 26 2.Her nesne için bir tablo oluşturun:... 26 3.Her bir tablo için bir anahtar alan seçin:... 26 4.Nesnelerin gerekli her bir özelliği için tabloya bir sütun ekleyin... 27 5.Tekrarlayan nesne özellikleri için ek tablolar oluşturun... 27 6.Anahtar alana bağlı olmayan alanları belirleyin... 28 7.Tablolar arasındaki ilişkileri tanımlayın... 29 Veritabanı Normalizasyonu... 29 3.SQL Veri İşleme Dili (Data Maniplation Language)...32 1.ResultSet Kavramı... 32 2.Select... 32 En Basit Select... 32

Koşula bağlı Select ve Where Yapısı:... 32 Matematiksel Karşılaştırma İşaretleri:... 33 Mantıksal İşaretler... 33 Sadece belli alanları seçmek... 35 Distinct... 36 In... 36 İç içe Select Yapısı:... 36 Any, Some, All... 37 Exists, not Exists... 38 Union (Birleştirme)... 38 Kesişim Bulma:... 39 Except(Fark Bulma)... 39 Between... and...... 40 Karakter Karşılaştırmaları:Like... 40 Null Karşılaştırma... 42 3.Sonuçları Sıralama:Order By... 43 4.Kayıtları Gruplama:Group By... 44 Gruplamalı Fonksiyonlar(Aggregate Functions):... 44 Alana Takma Ad... 44 5.Tabloları Birleştirme:Joining... 49 Klasik Join... 50 Tabloya Takma Ad(Alias)... 50 Self-join... 50 Left [Outer] Join... 51 Right [Outer] Join... 51 [Inner] Join... 52 6.Kayıt Ekleme:Insert... 53 Bir Tablodan Seçilen Kayıtları Başka bir Tabloya Ekleme:... 53 7.Kayıt Güncelleme:Update... 54 8.Kayıt Silme:Delete... 54 9.Genel SQL Fonksiyonları... 55 Aritmetik İşaretler... 55 Tarih-Zaman Fonksiyonları:... 55 Aritmetik Fonksiyonlar:... 55 Karakter İşleme Fonksiyonları:... 56 Dönüştürme Fonksiyonları... 57

Önsöz Sorumlu Yazı İşleri Müdürü: Murat Yıldız myildiz@byte.com.tr Yönetici Editör: İbrahim Özdemir iozdemir@byte.com.tr Editörler: Burak Kahyaoğlu bkahyaoglu@byte.com.tr Üsame İldar Özdemir uildar@byte.com.tr Tasarım ve Uygulama: Yağız Akay yakay@byte.com.tr ACAR Yayıncılık adına imtiyaz sahibi: Murat Yıldız Reklam Müdürü: Ahmet Aslantürk Baskı: ETAM A.Ş. Film Çıkış: Figür Merkez Ofis: Fulya Cad. Fulya Bayırı Sk. Bilsan Plaza 11/4 80300 Mecidiyeköy - İSTANBUL Tel: (212) 212 62 06 Faks: (212) 212 62 11 www.byte.com.tr Basit bir Web uygulamasından, devasa kuruluşların ağır verilerine kadar, günümüzde bir çok alanda veritabanı uygulamalarına ihtiyaç duyulmaktadır. Seri özellikle, Web projeleri gibi küçük çaplı işlerinde Veritabanı kullanmak zorunda kalan, ama bu konuda başlangıç aşamasında bile bilgi sahibi olmayan bir çok kişiye ışık tutacak şekilde hazırlandı. Bundan dolayı da SQL ve veritabanının dışında, bir veritabanının Web e açılması, XML, Web servisleri ile başka sitelere hizmet sunma gibi konulara da nasıl yapılacağı konusunda fikir vermesi açısından bir noktaya kadar değinildi. Tüm bunların yanında, SQL i iyi bilenler için bile seyrek kullanılan komutlara bir yerlerden bakmak bazen bir zorunluluk arz edebilmektedir. İşte kitapta böyle bir ihtiyacı da karşılamak üzere SQL i enine boyuna ele aldım. Özellikle yapılabilecek hataları, akla takılabilecek soru ve sorunları, program geliştirme esnasında önemli olduğunu gördüğüm teknikleri püf noktaları halinde bulabilirsiniz. Veritabanı uygulamalarının kurgulamak bir çok platforma hakim olmayı gerektirir. Ciddi bir Web uygulaması meydana getirebilmek için öncelikle, SQL ve veritabanı konusunda temel bilgilere sahip olmak gerekir. Çünkü tüm sistem,

veritabanı şeması üstüne inşa edilir. Bunun üstüne, HTML ve ASP-ASP.NET- PHP gibi bir Web programlama tekniğine hakim olmak gerekir. Bu da yetmez, veri erişim bileşenlerini de yakından tanıyıp etkin olarak kullanabilmek gerekir. Bunun üstüne, güncel bir uygulama geliştirmek için XML i yakından tanımak gerekir. XML Web Servisleri, Web de kurumlar arası haberleşme açısından oldukça ciddi gelişmeler önermekte. Seriyi hazırlarken, bu durumları göz önüne aldık. İlk kitapçıkta, İlişkisel Veritabanı ve SQL konuları ele alındı. İkinci ünitede bir popüler orta ve büyük ölçekli Veritabanı Yönetim Sistemi olan Microsoft SQL Server 2000, T-SQL ile VTYS üstünde dinamik programcıkların geliştirilmesi, belli başlı dinamik olarak SQL scriptleri oluşturma konularına da orta düzeye kadar yer verildi. Böylelikle, veritabanı işine sıfırdan başlayacak bir kullanıcının profesyonelliğin kapısından içeriye adım atacak hale gelebileceği bir kitap ortaya çıktı. Özellikle SQL e adanan ilk kitapçıkta olmak üzere, kolay ama çok şey öğrenilmesi gerektiğinden, serinin tamamındaki konu anlatımları sık sık ve kolaydan zora doğru giden örneklerle desteklendi. İlk kitapçıkta yer alan örneklerin bir çoğunu, www.verivizyon.com/sqlkitabi adresinde online simülasyon üstünde test edebilirsiniz. Veritabanının tarihi gibi, uygulama geliştirme açısından çok da etkili olmayan konuları maalesef bu seride bulamayacaksınız. Bu türden kuru bilgiler için bakılabilecek en iyi yer, bu konuda eğitim veren yüksek öğretim kurumlarımızda okutulan ders kitapları olabilir. Günlük hayatta, veritabanına hakim olamamış programcı arkadaşların, bu açıklarını daha fazla (SQL harici) kod ile kapatmaya çalıştıklarına defalarca şahit oldum. Böyle bir seri sayesinde, neyin veritabanı programlama kapsamında düşünüleceği, neyin istemci programa bırakılacağı konularının okurlar tarafından daha iyi anlaşılacağı kanaatindeyim. Bu kitap sayesinde SQL i tanıyan programcıların bunu nerede nasıl kullanacaklarını geniş örneklerle hem de güncel teknolojiler ışığında öğrenebilecekleri bir seri ortaya çıkmış olacak. Emeği geçen herkese teşekkürü borç bilirim. -Yaşar GÖZÜDELİ ygozudeli@hotmail.com Veritabanı Programlama 1 BYTE 7

Bu Kitapta... İlk olarak, İlişkisel Veritabanı kavramını yakından tanıyacağız. Böylelikle hayatta karşılaşılan bilgiye dayalı projelerin nasıl veritabanı mimarisine uyarlanacağını öğreneceğiz. İkinci bölümde, SQL komutlarını iki gruba ayırarak inceleyeceğiz. Öncelikle, veritabanı tasarlamaya yönelik komutları öğreneceğiz. Bu gruba giren komutlar için Veri İşaretleme Dili deyimini kullanacağız. Veri İşaretleme Dili ile sadece verilerin saklanacağı ortama dair düzenlemeler yapılır. Son olarak Veri İşleme Dili terimi altında, İlişkisel veritabanı destekli veri işleme komutlarını öğreneceğiz. Bu komutlarla veritabanına kayıt eklemek, veritabanından kayıt silmek, var olan kayıtlar üstünde güncelleme yapmak gibi işlemleri öğreneceğiz. Bu konuya yeni başlamayı planlıyorsanız, önce ilk bölümü, ardından hazır bir veritabanı üstünde 3. bölümü uygulamanız, son olarak ikinci bölümde kod yazarak nasıl veritabanı tasarlayabileceğinizi öğrenebilirsiniz. 2.bölümü anlamak zorunda değilsiniz. Artık bir çok VTYS ortamında, veritabanı şemalarını düzenlemeniz için görsel arayüzler mevcuttur. Ancak bir proje üstünde çalışmak isterseniz, öncelikli olarak nesneleri tasarlayıp veritabanı şemasını ortaya çıkarmak gerekir. Ancak daha sonra veri işleme işlemlerine geçilebilir. GİRİŞ SQL(Es-kü-el okunur) insanların veritabanı sistemleri ile konuşmasını sağlayan popüler bir dildir. Bu dil sayesinde, bir veritabanından kayıtları alabilir, değiştirebilir ya da yeni kayıtlar ekleyebiliriz. SQL bir dildir; ancak bir programlama dili değildir. Program geliştirme aşamasında SQL den faydalanılır, ancak tek başına bu iş için yeterli değildir. Verilerin belli özelliklerine göre gruplanıp diske kaydedilmesi işine veritabanı yönetimi denir. Veritabanlarından en popüler olanı, ilişkisel veritabanıdır. İlişkisel veritabanın kökeni, 1970 li yıllarda IBM laboratuarlarında yapılan çalışmalarda atılmıştır. Takip eden çalışmalarla, 1983 te SQL (Structural Query Language) standartları tanımlanmış ve ardından 1987 yılında önce ISO ardından da ANSI tarafından bir standart olarak kabul edilmiştir. Daha sonra, bu standartlar çerçevesinde bir çok veritabanı yönetim sistemleri geliştirilmiştir. Bunlardan belli başlıları, Oracle, Sybase, MS SQL Server, Informix ve MySQL dir. Bu VTYS lerin işlerin daha kolay yürümesi için kendi adlarına standart dilden uzaklaşan tarafları vardır. Ancak genel işlemlerde kullanılan dil tümü için de ortaktır ve SQL dir. Veritabanı Yönetim Sistemleri (VTYS) Veri Tabanı Yönetim Sistemleri, fiziksel hafızada bilgileri çeşitli özelliklerine göre 8 BYTE Veritabanı Programlama 1

gruplandırıp şekillendirdikten sonra saklayan programlardır. Kısaca VTYS diye adlandıracağız. VTYS, saklanan bu veriyi, SQL komutları ile insanların istekleri çerçevesinde işler, yeniden şekillendirirler. Yani, Veritabanı Yönetim Sistemi nin bir ucunda, bilgisayar disk(ler)- inde saklanan düzenlenmiş veriler, diğer ucunda ise bir kullanıcı (genellikle insan) vardır. Veritabanı Yönetim Sistemleri konusunda daha geniş bilgi bir sonraki kitapçıkta verilecektir. Veritabanı Yönetim sistemleri, her zaman bir kullanıcıya, yönetim ekranlarından bilgi vermek için kullanılmaz. Bazen kullanıcı konumunda doğrudan bir insan yerine bir program da olabilir. Bir veritabanı programcısı, veritabanını çekip çevirmenin yanında, VTYS ye bağlanıp veri alış-verişi ve veri üstünde değişiklik yapan bu istemci programları da yazabilen kişidir. Veritabanı istemci programları SQL dışında başka dillere de hakim olmayı gerektirir. VBScript ten tutun da PHP, Perl, ASP, ASP.Net gibi teknikler ile Web sayfası geliştirmeye aşina olmak yahut C/C++/C#, Java, Visual Basic gibi diller ile basit uygulamaları yapabiliyor olmak bu iş için başlangıçta yeterlidir. VTYS, disk üstündeki verileri daha kolay işleyip yönetmemizi sağlar. SQL ile VTYS ye veriler üstünde nasıl bir işlem yapması istendiği anlatılır. VTYS bunu bizim adımıza gerçekleştirir. Veritabanı Nerelerde Kullanılır? Veritabanı programlama ile bir çok proje geliştirilebilir. Bir İngilizce-Türkçe sözlük bu yolla kolayca yazılabilir. Bir kütüphane takip otomasyonu, bir hastane otomasyonu, muhasebe programları ve daha bir çok otomasyon programı temelde veritabanı projesidir. Günlük hayatta eritabanı programlama telefon şirketleri tarafından yoğun olarak kullanılır. Konuşmaların süreleri ay boyunca veritabanlarında saklanır ve ay sonu geldiğinde istemci programlar tarafından her bir abonenin telefon faturası teker teker hesaplanır. Günde yüzbinlerce abonenin birbirini aradığı bir durumun içinden başka hangi yolla çıkılabilir ki? Veritabanı Programlama 1 BYTE 9

1. Bölüm

İlişkisel Veritabanı Kavramı İlişkisel veritabanı günümüzde en yaygın kullanılan ilişkisel veritabanı sistemlerinden biridir. En çok kullanılan ilişkisel Veritabanı Yönetim Sistemlerine Oracle, Ms SQL Server, Sybase, Informix, MySQL gibi veritabanı yönetim sistemlerini örnek olarak verebiliriz. Bu bölümde verilen uygulamaları test etmek için MS Access de bir noktaya kadar kullanılabilir ancak verilen örneklerin tamamı MS Access tarafından desteklenemez. Bu nedenle, örneklerin büyük bir çoğunluğu MS Access MS SQL Server 2000 üstünde test edilmiştir. ONLINE olarak kitabın içerdiği uygulamaları test etmek için www.verivizyon.com/sqlkitabi adresinden faydalanabilirsiniz. Bilgisayar ortamında veri saklamak için kullanılan yapılardan en büyüğüne dosya dendiğini biliyorsunuzdur. İlişkisel veritabanları, veritabanı denilen büyük dosyalardan oluşur. Veritabanı, içerisinde tabloları barındıran bir dosyadır. Her bir tablo, belli yapıya uygun verileri saklamak üzere tasarlanır. Tablolar, satırlardan ve sütunlardan oluşur. Bu bölümde, bu yapıları yakından tanıyacağız. Günlük Hayatta İlişkisel Veritabanı Bir çoğumuzun başına gelmiştir. Arkadaşlara, eşe dosta bir çok kitap, kaset, CD veririz ve... Gidiş o gidiş! Böyle bir sorunla nasıl başa çıkarız? Bu konuda bir proje geliştirelim: Öncelikle elimizdeki bütün Kitaplarımızın bir listesini yapalım. Ama bunu yaparken, her bir kitaba numara vermeyi ihmal etmeyelim. Çünkü elimizde aynı kitaptan iki adet olabilir. Bunlardan biri eski, öteki de yeni kitap olabilir. Bu durumda bu iki kitaptan hangisini kime verdiğimizi nasıl ayırt edeceğiz? Daha sonra kitaplarımızı şu şekilde bir listeye yazalım: Listenin her bir sütununda sırasıyla şu bilgiler yer alsın: En başa Kitap No nu, sonra Kitap Adı nı ardından ISBN numarası nı sonra Sayfa Sayısı nı, Özeti ni yazalım ve listeyi dolduralım. Kitap No: Her bir kitaba verdiğimiz numara Kitap Ad: Her bir kitabın adı ISBN Numarası: Her bir kitabın arkasında yer alan Uluslararası Standart Kitap Numarası Sayfa Sayısı: Kitabın kaç sayfa olduğu Özeti: Kitabın bir özet açıklaması Amacımız, kime hangi kitabı verdiğimizi bilmek. O halde Kitap listesine ek olarak 12 BYTE Veritabanı Programlama 1

şimdi bir de ödünç listesi yapalım: Bu listede de, ödünç no, kitap no, ödünç alan, verme tarihi, verme süresi, geri geldi mi şeklinde bir liste daha yapalım. Kütüphanemizden verdiğimiz her bir kitabı bu listeye işlersek, hangi kitabımızın kimde kaldığını, süresi sonunda getirilip getirilmediğini kolayca takip edebiliriz. Buradaki Geri geldi mi hanesine gelen her kitap için bir işaret koyabiliriz ya da imza attırabiliriz. Bu projeyi, bilgisayar ortamında yapmak, kağıt üstünde yapmaktan çok daha kolay olacaktır. Bu projede yer alan listelerin karşılığı veritabanında tablolardır. Hayatta bir çok şeyi listelerle çözeriz. Her bir listeye karşılık, veritabanı mantığında bir tablo gelir. Temel Kavramlar Veriler fiziksel hafızada Veri Dosyaları(DataFiles) halinde saklanır. Dosya, bilgisayarların bilgileri birbirinden ayırarak saklamak için kullandığı temel bilgi depolama yapısıdır. Bir dosyada, bir çok veri yer alabilir. Bir kütüphane otomasyonunu ele alacak olursak, kitap ile ilgili bilgiler, ödünç verilenler, kütüphaneden kitap alma hakları olan üyeler, CD ve kasetler ile ilgili bilgiler aynı veri dosyasında ama farklı tablolar içerisinde yer alabilir. Tablolar: Bir tablo yani günlük hayattaki liste kavramı, satırlardan ve sütunlardan oluşur. Mesela Kitap listemizi(yani Kitap tablomuzu) ele alacak olursak, her bir satırda bir kitaba ait bilgiler yer almaktadır. Alan(Field), yapılandırılmış bilginin her bir kısmını saklamak üzere yapılan tanımlamadır. Her bir alan, yapılandırılmış verinin bir birimini tutmak üzere tanımlanır. Her bir sütunun adı ile birlikte diğer bilgilerinin(en fazla kaç birimlik bilgi bu hücrede saklanabilecek, ne tür bilgi saklanacak vs.) ortaya koyduğu tanıma alan denir. Alan, her bir sütun için tanımlayıcı bilgileri tutan yapıdır. Satır (Row): Bir tabloda yer alan her bir kayıt bir satıra karşılık gelir. Örneğin Kitap tablosunda her bir satırda farklı bir kitap hakkındaki bilgi yer almaktadır. Sütun (Column): Tablolar dikey sütunların yan yana gelmesiyle meydana gelmiştir. İlk sütunda kitap numaraları, ikinci sütunda kitap isimleri, üçüncü sütunda, ISBN numaraları yer almaktadır. Kayıt (Record): Yapılandırılmış verilerden Veritabanı Programlama 1 BYTE 13

her birine bir kayıt denir. Yani, alan bilgileri ile birlikte her bir satır bir kayıttır. Bir kitap bilgisini ele alacak olursak, Kayıt, alan tanımlamaları ile birlikte bir satırda yer alan bilgilere denir. Bu bir kayıttır. Kayıt ile satır arasındaki temel fark, kayıt ile kastedilen yapının sütunlar hakkındaki bilgileri de içermesidir. Veri Tipi (Data Type): Bilgisayar, kayıtları yapısal olarak tutarken, onların yapıları hakkında fikir sahibi olabilmek için bazı özelliklerinin önceden tanımlanması gerekir. Örneğin, kitap numarası alanının mutlaka bir tam sayı olacağını, Kitap adının harf ya da rakamlardan oluşacağını anlatmamız gerekir. Bir veritabanı oluşturulurken, her bir alanın tipinin ne olacağı tanımlanmak zorundadır. Bir alana tamsayı mı yoksa harf mi; tarih mi yoksa ondalıklı bir sayı mı geleceği ancak tanımlandıktan sonra kayıt girilebilir. Ayrıca, bir alanın uzunluğu ne kadar olacak, harf girilebiliyorsa en fazla kaç harf girilebilecek?, rakam ise en fazla kaç basamaklı olabilir? türünden soruları yanıtlamak için de yine VTYS bir alan için veri tipi belirlememizi ister. Bir alan için hangi tip seçeneklerimizin olduğunu ilerleyen kısımlarda öğreneceğiz. Zorlayıcı (Constraint): Herhangi bir alan için girilebilecek verileri kısıtlayıcı kurallara Zorlayıcılar denir. Kullanıcı, zorlayıcının istediği şekilde veri girmezse, VTYS hata verir. Böylelikle veritabanına kullanıcının keyfi değerler girmesi önlenmiş olur. Örneğin, kitap listemizde yer almayan bir kitabı ödünç vermeye kalktığımızda hata verecek bir kısıtlama tanımlayabiliriz. Anahtar (Key): Anahtar bir veya birden fazla alanın bir satır için niteleyici olarak girilmesi için tanımlanan özel bir çeşit zorlayıcıdır. Tekrarlamayacak bir anahtar alan tanımlandığında, Bu anahtar alana birincil anahtar alan denir. Primary Key, Unique Key, Foreign Key gibi türevleri vardır. İlişkisel Veritabanı Yönetim Sistemleri: Veritabanı Yönetim sistemlerinden günümüzde kullanımı en yaygın olanı İlişkisel Veritabanıdır. Hal böyle olunca da en yaygın veritabanı yönetim sistemleri, İlişkisel Veritabanı Yönetim Sistemleri (RDBMS)dir. İlişkisel veritabanının en önemli yanı, tablolardan oluşmasıdır. Daha önemli yanı da bu tabloların bir biri ile ilişkilerinin olmasıdır. Böyle olmasaydı durup dururken bu VTYS ler için ilişkisel demezdik. Bir veritabanında ilişkiden söz edebilmek için en az iki tablonun yer alması gerekir ve bu iki tablodaki verilerin bir biri ile bir şekilde ilişkilendiriliyor olması gerekir. Yine bir önceki örnek olaya dönecek olursak, Kitap listesi ile ödünçler listesi arasında 14 BYTE Veritabanı Programlama 1

Değişken İsimlendirme Kuralları SQL de tablo adları, alan(field), veritabanı dosyası, indeks vb. isimler değişken isimleridir. Genel geçer değişken isimlendirme kurallarına burada da dikkat etmek, sağlıklı uygulamalar meydana getirebilmek için çok önemlidir. Bundan dolayı bu kurallara burada yer verdik. Genel kanı bu türden bir kaygının yersiz olduğu yönünde olsa da bazen oldukça kritik hatalar ortaya çıkabilmektedir. 1. Değişken isimleri, harf ile başlamak zorundadır. 2. Değişken isimleri, harf, rakamlar ve _ dan oluşmak zorundadır. 3. Değişken isimlerinde Türkçe de ki noktalı harfler (İ,ı,Ğ,ğ,Ü,ü,Ş,ş,Ç,ç,Ö,ö,) yer alamaz. 4. Ayrılmış kelimeler değişken adı olamazlar (select, like, not, or, delete, update vs.) 5. SQL büyük-küçük harf duyarlı değildir. 6. Değişken isimlerinde boşluk yer alamaz. bir ilişki vardır. Çünkü Kitap listemizde olmayan bir kitap bizde yoktur ve ödünç veremeyiz. Haliyle de mantık olarak bu türden bir ödünç bilgisi ödünç listemizde yer alamamalıdır. Olaya tersten bakacak olursak, geri dönmeyen bir kitap hakkındaki detayları öğrenmek istediğimizde ödünç listesindeki kitap numarasını alırız. Daha sonra aynı numaraya karşılık gelen kitabı, Kitap tablosundaki satırı buluruz. Bu satırdaki bilgiler Değişken isimlendirme notasyonları: 1.Deve notasyonu: degiskenadi şeklinde yazılır. 2.Alt çizgi notasyonu: degisken_adi şeklinde yazılır. Veritabanı programlamada, büyük-küçük harf duyarlılığı olmadığından genellikle alt çizgi notasyonu kullanılır ve değişken adları küçük harf olarak verilir. Ancak bu bir kural olmayıp sadece okunurluğu artırmak için programcıların bir çoğu tarafından tercih edilen bir yoldur. NULL mu, boşluk mu? Bir kayıt için, alanlardan biri hiç girilmediği için boş olabilir veya bilgisayardaki space tuşunun karşılığı ASCII değeri girilmiş olabilir. Space(ASCII-32 karakteri) tuşuna basılarak elde edilmiş boşluk ile daha hiçbir bilgi girilmemiş olan boşluk bilgisayar dilinde birbirinden farklıdır. Daha önce hiçbir şey girilmemiş alan için NULL terimi kullanılır. bize kitap hakkındaki tüm detayları verir. Kitap tablosundaki kitapno alanı aday anahtar(indeks) tir. Odunc tablosundaki KitapNo alanı, yabancı anahtar (foreign key) alandır, çünkü Kitap tablosundaki bir kaydı sembolize etmektedir. Tüm bunların ardından VTYS leri hakkında özet olarak diyebiliriz ki; Bir İlişkisel Veritabanı Yönetim Sistemi tablolar üstünde şu üç işlevi yerine getirmek zorundadır. Veritabanı Programlama 1 BYTE 15

Birinci tabloda yer alan bir kayda karşılık, ikinci tabloda bir veya daha çok kayıt yer alabilir. Ancak İkinci tablodaki bir kitap numarasına karşılık birinci tabloda sadece bir tek kayıt vardır. Bu ilişkiye bire sonsuz bir ilişki denir. Birinci tablodaki her bir tekil kaydı sembolize eden kitapno için aday anahtar, ikinci tabloda, ödünç verilen herhangi bir kitap hakkındaki detayları görmek için 1. tabloya geçmemizi sağlayan kitapno na ise yabancı anahtar(foreign key) denir. Kitaplar listesi üstünde bir seçme işlemi. Sayfa sayısı 200 den fazla olan kitapları seçiyoruz. 16 BYTE Veritabanı Programlama 1

1. Seçme: Herhangi bir tabloda (listede) yer alan tüm bilgileri gösterebilmelidir. Örneğin, Kitap tablosunun bir dökümünü verebilmelidir. Ya da kitap listesinden bazı kitapların bilgilerini getirip diğer bir kısmını getirmeyebilmelidir. 2. İzdüşürme: Herhangi bir tablodan sadece belli sütunların yer aldığı seçme işlevlerini yerine getirebilmelidir. Örneğin, canı isteyen bir kullanıcı kitabın sadece adını ve kaç sayfa olduğunu seçebilmelidir. 3. Birleştirme: Birden fazla tabloda yer alan bilgileri, yeri geldiğinde tek bir tabloymuş gibi sunabilmelidir. Örneğin, ödünç alınıp da geri getirilmeyen kitabın adlarını ve kimler tarafından alındığını bir tek tabloymuş gibi gösterebilmelidir. VTYS bu 3 temel işlevi yerine getirmelidir. Bunlardan üçünü, ikisini veya birini aynı anda yerine getirmek durumunda kalabiliriz. Örneğin, sayfa sayısı 200 den büyük kitapların sadece adını görmek istersek, hem iz düşürme hem de seçme işlemine ihtiyaç duyarız. Veriler ve depolanma şekilleri farklı olabilir. Önemli olan, VTYS nin SQL ile yönetilebilir olmasıdır. Böylelikle, verilerin bilgisayarda fiziksel olarak ne şekilde depolandığı, kullanıcı bilmek zorunda kalmaz. Yani, kullanıcı temel veri saklama işlem ve yöntemlerinden izole edilmiş olur. Kullanıcının verileri etkili olarak kullanması için bilmesi gereken tek şey SQL olmalıdır. Verilerle ilgili yapılan işlemler iki ayrı Kitaplar listesi üstünde bir iz düşürme işlemi Kitapların kitap No nu, Adını ve sayfa sayısını alıyoruz. Diğer sütunları almıyoruz. grupta incelenir. Birincisi, veri tanımlama işlemleridir. Bu grupta yapılan işlemler daha çok verinin saklandığı ortama dair işlemlerdir. Doğrudan verinin kendisi ile ilgilenmek yerine, tablonun hangi alanlardan oluşacağı, hangi alana hangi aralıkta veri girileceği vb. gibi işlemler bu gruptadır. Veri işleme işlemleri ise verinin saklandığı ortam ile hiçbir ilgisi olmayan işlemlerdir. Bir tablonun içindeki tüm kayıtlar silinse bile sonuçta tablo var olacaktır. Çünkü bir tablonun silinmesi DDL in görevidir. SQL komutlarının bu şekilde gruplandırılmasının nedeni, SQL den ziyade, veri yönetimi konusundaki mantıktan kaynaklanmaktadır. Böylelikle işlemler daha anlaşılır bir hal almaktadır. Verinin kılıfı ile ilgili işlemler ve verinin kendisi ile ilgili işlemler... Sizce bir kitabın adının değiştirilmesi Veritabanı Programlama 1 BYTE 17

hangi gruba girer? Peki ödünç verme süresinin 15 günden fazla olamaması? Ya kitap fiyatlarının da saklanacağı bir sütunu Kitap tablosuna ekleme işlemi? İpucu: ilk işlem DDL ile yapılmaz. Diğerlerinin ikisi aynı gruptan işlemlerdir.

2. Bölüm

SQL Veri Tanımlama Dili (Data Definition Language) SQL i yeterince bilmiyorsanız, bu bölümden önce 3.Bölümü okumanız ve örnekleri bir veritabanı üstünde yapmanız önerilir. Bundan sonra, bu bölümü kavramanız kolaylaşacaktır. Ancak bir proje geliştirirken öncelikle veriyi tanımlamak gerekir. Bu nedenle bu bölüme öncelik verilmiştir. Veri tanımlama dili, verinin ne olduğundan ziyade verinin tipi ile ilgili tanımlamaları yapmak için kullanılır. Bir veritabanında hangi tablolar yer alacak, bu tablolarda hangi alanlar yer alacak ve alanların türleri ne olacak, indeks ya da anahtar olacak mı? bunların hepsi DDL ile belirlenir, değiştirilir veya olan bir tanımlamadan vazgeçilip tanımlama silinebilir. Veritabanı üstünde herhangi bir DİKKAT: Bazı VTYS lerde her bir SQL cümleciğinin sonuna ; konulması istenir. Bu tür VTYS lerde, cümleciğin nerede bittiğini takip etmek kullanıcıya bırakılmıştır. Öte yandan bazı VTYS lerde bir SQL cümleciğinin bittiğini belirtmek için cümle sonuna ; koymaya gerek yoktur. Bunu VTYS nin kendisi de algılayabilmektedir. Ancak ; konulmasının çoğu VTYS de sorun çıkarmadığı bir gerçektir. SYBASE de ve ORACLE da cümlelerin sonuna ; konulması gerekirken, Microsoft tabanlı sistemlerde bu türden bir zorunluluk bulunmamaktadır. tanımlamada bulunulacaksa, bu tanımlama CREATE deyimi ile oluşturulur. DROP deyimi ile de tanımlamadan vazgeçilip silinir. ALTER deyimi ise bir tanımlama üstünde değişiklik için kullanılır. Bu bölümde ve takip eden bölümlerde, örneklerden hemen sonra >> konulduktan sonra bir mesaja yer verilmiştir. Bu mesaj SQL ifadesinin sonucunda ne olduğunu göstermektedir. UYARI: Bu komutu, MS Access üstünde çalıştıramazsınız. Ancak MS SQLServer, Sybase gibi büyük ve orta ölçekli veritabanlarında kullanılabilir. Temel Veri Tipleri: SQL de yeni bir veri tipi tanımlayamayız. Sadece var olan veri tiplerini kullanabiliriz. Burada hemen her yerde kullanılan ortak veri tiplerine bir göz atacağız. Diğer veri tipleri her bir VTYS ye özel olarak değişebileceğinden VTYS ile birlikte ele alınması daha uygundur. Bazı VTYS leri kullanıcının veri tipi tanımlamasına olanak sağlar ancak bu SQL in sunduğu bir özellik olmayıp VTYS tarafından sağlanan bir özelliktir. Veritabanı: Veritabanı, içerisinde tabloları barındıran veritabanı mimarisinin en büyük ögesidir. Bir veritabanı şu şekilde açılır: CREATE DATABASE database_name 20 BYTE Veritabanı Programlama 1

DİKKAT: ANSI-SQL içerisinde metin olan değerler (CHA- R,VARCHAR,MEMO,DATE) tek tırnak içerisine alınarak yazılır. RAKAMSAL değerler ise olduğu gibi yazılır. Örnek: WHERE tarih= 20.01.2003 (metin) SET kitapno=20 (sayı) Örnek-1: CREATE DATABASE dbkutuphane; Ve şu şekilde silinir: DROP DATABASE database_name Örnek-2: DROP DATABASE dbkutuphane Tablolar: Tablo Oluşturma CREATE TABLE tablo_adi (kolon_adi1 veri_tipi[not NULL][, kolon_adi2 veri_tipi[not NULL],...]) ile yeni bir tablo oluşturulur. Örnek-3: CREATE TABLE Kitap( kitapno INTEGER NOT NULL CONS- TRAINT cnskitapno PRIMARY KEY, kitapadi VARCHAR(63) NOT NULL, TEMEL VERİ TİPLERİ INTEGER(boyut): Tam Sayı INT(boyut): Tam Sayı SMALLINT(boyut): Küçük Tam Sayı TINNYINT(boyut): Nümerik tam boyut:sayının en fazla kaç basamaklı olacağı belirtilir. DECIMAL(boyut,d): Ondalık FLOAT(boyut,d): Kesirli Sayı boyut: Fazla kaç basamak tam kısım olacağı belirtilir. d: Ondalıklı basamak sayısını anlatmak için kullanılır. CHAR (boyut): Daha çok uzunluğu sabit(- telefon numarası gibi) karakter verileri için kullanılır. VARCHAR (boyut): Değişken boyutta metin alan belirlemek için kullanılır. boyut: Bu alanda en fazla kaç karakter yer alacağını belirtir. DATETIME: Tarih LOGICAL(BIT): BIT,true/false veya yes/no alan diye de geçmektedir. En az yer kaplayan veri tipidir. 1 ve 0 olmak üzere iki değer alabilir. ISBNNo VARCHAR(15), Turu VARCHAR(20), sayfasayisi INTEGER, kitapozeti VARCHAR(255) ) ile örneğimizdeki tabloyu oluşturabiliriz. >> OLUŞTURMA İŞLEMİ BAŞARI İLE YAPILDI Veritabanı Programlama 1 BYTE 21

Kısıtlar (Constraint) Oluşturma: Kısıtlayıcılar, tabloların oluşturulması sırasında tabloların bir parçası olarak tanılanır. MS Access ve SQLServer de kullanılır. Aşağıdaki işlevleri yerine getirebilirler: 1. INDEX gibi, birincil anahtar alan tanımlayabilirler (PRIMARY KEY): Bu durumda standart olarak Clustred Index gibi davranırlar.(bkz. INDEX ler) 2. INDEX gibi tekil alan belirleyebilirler. (UNIQUE KEY) 3. Tablo oluşturma esnasında da yapılabilen, (NOT NULL) alan belirleyebilirler 4. Yabancı Anahtar belirleyebilirler.(foreign KEY) Primary Key: Bir tablodaki, her bir satırın yerine vekil olabilecek bir anahtar veridir. Tekrarlamaması gerekir. Standart olarak bir tabloda verilerin, fiziksel hafıza üstünde de hangi alana göre dizileceğini de primary key belirler. Bu, bazen bir tek alan olabileceği gibi, bazen birden fazla alan da birleşerek bir birincil anahtar oluşturabilir. Unique Key: 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 değerini alabilir. Foreign Key: Bir tabloya girilebilecek değerleri başka bir tablonun bir belli alanında yer alabilecek veri grubu ile sınırlandırmaya ve en önemlisi de ilişkilendirmeye yarar. Örneğin, olmayan bir kitabın ödünç tablosuna eklenememesi ve ödünç tablosuna eklene bir kitabın numarası aracılığıyla detay bilgilerine erişilmesi. Burada Kitap.KitapNo birinicil anahtar alan; Odunc.kitapNo ise yabancı anahtardır. Genel yapısı şu şekildedir: CONSTRAINT constraint_name PRI- MARY KEY UNIQUE NOT NULL REFE- RENCES foreign_table [(foreign_field1[,- foreign_field2,..])] Tablolar oluşturulurken, bazı alanlara girilebilecek değerler ile ilgili kısıtlar koymak zorunda kalabiliriz. Böylesi durumlarda CONSTRAINT ler kullanılır. CONSTRAINT ler 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. Örnek-4: CREATE TABLE Kitap ( kitapno int NOT NULL, kitapadi varchar63), ISBNNo varchar (15), sayfasayisi int, kitapozeti varchar (255) 22 BYTE Veritabanı Programlama 1

) >>OLUŞTURULMA İŞLEMİ BAŞARI İLE YAPILDI veya CREATE TABLE odunc( oduncno int NOT NULL, kitapno int NOT NULL, uyeno int NOT NULL, vermetarihi datetime NOT NULL, vermesuresi int NOT NULL, geldimi bit ) >>OLUŞTURULMA İŞLEMİ BAŞARI İLE YAPILDI Tablo silme: Bir tabloyu kullanmaktan vazgeçersek: DROP TABLE tablo_adi Tabloda Değişiklik Yapma: Bir tabloya sütun eklemek veya tablodan sütun silmek için ALTER TABLE deyimi kullanılır. ALTER TABLE tablo_adi {ADD{COLUMN alan alan_tipi [(boyut)][- NOT NULL][CONSTRAINT indeks] CONSTRAINT coklu_indeks} DROP{COLUMN alan CONSTRAINT constraint_adi} } Örnek-5: Kitap tablosuna kitap bedeli adında yeni bir tamsayı sütun ekleyelim. ALTER TABLE Kitap ADD kitapbedeli INTEGER; >> TABLO DEĞİŞİKLİĞİ İŞLEMİ BAŞARI İLE YAPILDI Örnek-6: Bu sütunun boş geçilememesini istese idik: ALTER TABLE Kitap ALTER COLUM- N kitapbedeli INTEGER NOT NULL; >> TABLO DEĞİŞİKLİĞİ İŞLEMİ BAŞARI İLE YAPILDI dememiz gerekirdi. Örnek-7: Bu sütunu silmek için, ALTER TABLE Kitap DROP COLUM- N kitapbedeli; >> TABLO DEĞİŞİKLİĞİ İŞLEMİ BAŞARI İLE YAPILDI İndeksler: Kütüphanemizdeki Kitapın raflardaki dizilişlerini ele alalım. Bir kitap aradığımızda, Kitapımız bir kurala göre dizilmiyorsa, her bir kitaba teker teker bakmamız gerekir. Kitapı raflara alfabetik dizersek, her bir kitabı teker teker gözden geçirmek zorunda kalmayız. Aradığımız kitap ile bakmakta olduğumuz kitabın isimlerini karşılaştırır, sağa ya da sola yönelip aramaya devam ederiz. Aynı şekilde yazarlarına ya da kütüphane numarasına göre sıralanmış birer liste olursa, bu kriterlere göre de aradığımız kitabı kolayca bulabiliriz. Veritabanlarında indeks oluşturarak, verileri veritabanındaki kayıtlı oldukları sıradan başka bir sırada gösterebiliriz. Veritabanı Programlama 1 BYTE 23