Veri Tabanı Programlamaya Giriş

Kitap özeti

Veri Tabanı Programlamaya GirişVeri Tabanı Programlamaya Giriş

SQL insanların verita­banı sistemleri ile konuşmasını sağlayan popüler bir dildir. Bu dil sayesinde, bir veri­tabanı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 grup­lanıp diske kaydedilmesi işine veritabanı yönetimi denir. Veritabanlarından en popüler olanı, ilişkisel veritabanıdır.

Veritabanı Yönetim Sistemleri (VTYS)

Veri Tabanı Yönetim Sistemleri, fiziksel hafızada bilgileri çeşitli özelliklerine göre gruplandırıp şekillendirdik­ten sonra saklayan prog­ramlardır. Kısaca VTYS diye adlandıracağız. VTYS, sakla­nan bu veriyi, SQL komut­ları ile insanların istekleri çerçevesinde işler, yeniden şekillendirirler.

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 otomas­yonu, muhasebe programları ve daha bir çok otomasyon programı temelde verita­banı projesidir.

 

Tablolar:

Bir tablo yani günlük hayattaki ‘liste’ kav­ramı, satırlardan ve sütunlardan oluşur.Örneğin elimizde bir kitap tablosu olduğunu düşünelim.Her satırda bu kitap ile ilgili özellikler yer alacaktır.

 

Satır (Row): Bir tabloda yer alan her bir kayıt bir satıra karşılık gelir.

Sütun (Column): Tablolar dikey sütun­ların yan yana gelmesiyle meydana gel­miştir.

Kayıt (Record): Yapılandırılmış verilerden her birine kayıt denir.

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.

Zorlayıcı (Constraint): Herhangi bir alan için girilebilecek verileri kısıtlayıcı kurallara zorlayıcılar denir.

Değişken İsimlendirme Kuralları:

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.

 

SQL Veri Tanımlama Dili:

Bir veritabanı şu şekilde açılır :

CREATE DATABASE database_name   à CREATE DATABASE dbKutuphane;

Bir veritabanı şu şekilde silinir :

DROP DATABASE database_name  à DROP DATABASE dbKutuphane

 

Tablo Oluşturma

CREATE TABLE tablo_adi à   CREATE TABLE Kitap 

Örnek: 

CREATE TABLE Kitap (

kitapNo int NOT NULL ,

kitapAdi varchar63),

ISBNNo varchar (15),

sayfaSayisi int ,

kitapOzeti varchar (255)

)


Bir sütunu silmek için,

ALTER TABLE Kitap DROP COLUM­N kitapBedeli;


İndeksler:

Veritabanlarında indeks oluşturarak, verileri veritabanındaki kayıtlı oldukları sıradan başka bir sırada gösterebiliriz.

 

-CREATE UNIQUE INDEX indKitapNo ON Kitap(kitapNo)

 

Dedikten sonra, iki farklı kitaba aynı kitap no’sunu vermek mümkün olamaya­caktır.

 

-DROP INDEX Kitap.indKitapNo

 

Oluşturduğumuz indexi siler.

 

View’ler

Bazen, tabloları olduklarından farklı gösterecek filtrelere ihtiyaç duyarız. Aslında tablo gibi kullanılsa da böyle bir tablo halihazırda yoktur.

-CREATE VIEW vwBTKitaplari AS SELECT * FROM kitap WHERE kitapNo > 5

Bu örneği çalıştırdığımızda veri tabanındaki sadece  kitapNo’su 5’den büyük olan veriler ekrana gelecektir.

SQL Veri İşleme Dili

Veri İşleme Dili, verinin şablonu üstünde değişiklik yapmaz. Sadece var olan tablo­lardaki bilgileri uygun şekilde raporlamak (SELECT), yeni kayıtlar eklemek (INSERT), kayıtlar üstünde güncelleme yapmak(­UPDATE) ve kayıtları silmek (DELETE) için kullanılır.

1.RESULTSET(RECORDSET, DATASET)

VTYS’de bir sorgu çalıştırıldığında, tablo mantığında bir sonuç üretir. Bu sonuca ResultSet denir. Bir ResultSet, birden fazla tablodan kayıt içerebilir.

 

Kitaplar tablosundaki tüm kayıtları seçelim:

 

-SELECT * FROM Kitap

 

Koşula bağlı SELECT ve WHERE Yapısı:

Bazı koşullara uyan bilgileri almamız gerekebilir. Bu durumda WHERE cümle­ciğini takip eden kısımda, bu şartı belir­tebiliriz.

 

-SELECT alan1[,alan2, alan3,..... ] * FROM tablo_adi WHERE şart1[AND şart2[OR şart3[NOT şart4]]];

 

Örnek:

Sayfa sayısı 200’den fazla olan ve kitap numarası da 12’den büyük olan kitapların listesi:

 

-SELECT * FROM Kitap WHERE kitapNo > 12 AND sayfaSayisi > 200;

 

Mantıksal İşaretler

 

AND İŞARETİ:Şartlardan her ikisini de sağlayan kayıtları seçmek için kullanılır..

OR İŞARETİ: Şartlardan en az birinin sağlanması halinde, kayıtlar seçilir.

NOT İŞARETİ: Şartı sağlamayan kayıt­ları bulmak için kullanılır.

 

 

Matematiksel Karşılaştırma İşaretleri:

 

Koşullarda, verilerin durum Matematiksel Karşılaştırma İşaretleri kullanılarak ifade edilir. Bu işaretler Şunlardır:

=: Eşittir

>: Büyüktür

<: Küçüktür

>=: Büyüktür veya Eşittir(Büyük-Eşit)

<=: Küçüktür Veya Eşittir(Küçük-Eşit)

<>: Eşit Değildir

!=: Eşit Değildir

 

Kitap No 12’den büyük olan veya, sayfa sayısı 200’den büyük olan veya adı ‘Visual Basic.NET’ olan ama ISBN NO ‘975-316-622-2’ olmayan kitapların listesi:

SELECT * FROM Kitap WHERE (kitapNo > 12 AND sayfaSayisi > 200 OR KitapAdi=’Visual Basic.NET’) AND ISBNNO <> ‘975-316-622-2’;

 

1,5 ve 6 nolu kitapların ödünç hare­ketlerini görmek için

-SELECT * FROM odunc  WHERE kitapNo=1 OR kitapNo=5 OR kitapNo=6;

Yerine

-SELECT * FROM odunc WHERE kitapNo IN(1,5,6);Kullanımı daha kolaydır.

 

3,5 ve 11 nolu kitapların herhangi birinden kalın olan ve kitap no da 11’den büyük olan kitapların listesini bulalım:

SELECT kitapNo,kitapAdi,sayfaSayisi FROM Kitap WHERE sayfaSayisi > ANY( SELECT sayfaSayisi FROM Kitap WHERE kitapNo IN(3,5,11))

AND kitapNo>11

 

UNION (BİRLEŞTİRME)

UNION komutu, iki SELECT sorgusunun sonucunu veya iki tabloyu tek bir sonuç halinde alabilmek için kullanılır.

Genel kullanımı şu şekildedir:

1.SELECT İFADESİ....

UNION

2.SELECT İFADESİ....

 

EXISTS, NOT EXISTS

EXISTS kullanıldığında, dışarıdaki sor­guda, bir veya daha fazla kayıt dönerse, dışarıdaki sorgu çalıştırılır. Hiç kayıt dönmezse, dışarıdaki sorgu çalıştırılmaz. NOT EXISTS ise içerideki sorgunun sonu­cunda sıfır kayıt dönüyorsa, dışarıdaki sorgunun çalıştırılması için kullanılır.

 

5 no’lu kitap ödünç verildi ise kitap no’sunun ve kitap bilgilerini seçelim:

SELECT kitapNo,kitapAdi FROM Kitap WHERE EXISTS(SELECT * FROM odunc WHERE kitapNo=5)

AND kitapNo=5;

 

EXCEPT (FARK BULMA)

İki SELECT sorgusu sonucu veya iki tablo arasındaki farkı bulmaya denir. Bu işlem için de bir çok yöntem kullanılabilir. NOT IN, NOT EXISTS bunlardan ikisidir.

 

Hangi kitaplar ödünç verilmemiştir?

SELECT * FROM Kitap WHERE kitapNo NOT IN (SELECT kitapNo FROM odunc WHERE geldiMi=0);

 

BETWEN.... AND....

Bir Aralık içersinde sorgulama yapmak için BETWEEN altSinir AND ustSinir şek­lindeki yapı kullanılır.

 

Sayfa Sayısı, 300 ile 500 arasındaki Kitapların listesini almak istediğimizde,

SELECT * FROM Kitap WHERE sayfaSayisi>300 AND sayfaSa­yisi < 500;

Yerine

SELECT * FROM Kitap WHERE sayfaSayisi BETWEEN 300 AND 500; de diyebiliriz.

Joker Karakterler:

Seçimi biraz genişletelim ve adında ‘yol’ geçen Kitapları listelemek istesek?Bu durumda joker karakterleri kullanmamız gerekecektir. ‘%’ ve ‘_’ veya ‘?’ karakterle­rine joker karakterler denir.

 

Adında yol geçen kitapların bir liste­sini alalım:

SELECT * FROM Kitap WHERE kitapAdi LIKE ‘%Yol%’;

 

Adının ilk harfi ‘Y’ olan üyelerin listesi.

SELECT * FROM uye WHERE Adi LIKE ‘Y%’;

 

Joker Karakterler

%: Birden fazla harf veya rakamın yerini tutar.

*: Bazı sistemlerde, birden fazla harf ve rakam yerini tutar.

_: Bir tek harf veya rakam yerini tutar (Bir çok sistemde)

?: Bir tek harf veya rakam yerini tutar (Bazı diğer sistemlerde)

[ABC]: Herhangi bir harf yerine gelebilecek harfleri belirtir.(SQLServer,Sybase)

[^ABC]: Herhangi bir harf yerine gelemeyecek harfleri belirtir.(SQL Server, Sybase)

 

Null Karşılaştırma

Bazen bir alana değer girilmiş olup olma­dığın karşılaştırmak zorunda kalabiliriz.

 

ISBN numarası olmayan kitapların listesi:

 

SELECT *FROM Kitap WHERE ISBNNo IS NULL;

 

3.ORDER BY

SELECT işlemi ile elde edilen sonucun bir alana göre sıralanmış olarak listelenmesini isteyebiliriz. Bu durumda ORDER BY deyimi kullanılır.

Genel Yapısı şu şekildedir:

 

SELECT alanlar

FROM tablo_adi

WHERE şartlar

 

ORDER BY sutun1 [DESC|ASC][,sutun2 [DESC|ASC],.....];

 

ASC bir alana göre ARTAN sıralatmak için kullanılır. Aslında artan-azalan şartı verilmediğinde de normalde artan

sıralanır. Ancak kayıtların azalan sırada sıralanması isteniyorsa, mutlaka DESC kullanılmak zorundadır.

COUNT(sutun_adi): Referans sütuna göre toplam kaç kayıt yer aldığını bulur.

 
Yazarlar tablosunda, tüm yazarla­rın doğum tarihi henüz girilmemiştir. Bu durumda iken, yazarların sayısını COUNT(*) ve bir de COUNT(dogum) olmak üzere iki farklı şekilde seçelim:

 
SELECT COUNT(*) FROM yazar;

>> 20

 

SELECT COUNT(dogum) FROM yazar;

>> 0

6.INSERT

Bir tabloya SQL ile kayıt eklemek için INSERT deyimi kullanılır.

INSERT INTO tablo_adi(alan1[,a­lan2,....])

VALUES(deger1[,deger2,....])

 
Yeni bir kitap ekleyelim.

INSERT INTO Kitap(KitapAdi,SayfaSa­yisi, kitapOzeti)

VALUES(‘Photoshop Efektle­ri’,330,’Photoshop efektlerini yakından tanıyın’);


7.UPDATE

Bir kayıt üstünde değişiklik yapmak gerektiğinde, UPDATE deyimi kullanılır. Yapısı şu şekildedir:

UPDATE tablo_adi

SET alan1=yeniDeger1[, alan2=yeni­Deger2, ....]

[WHERE sart]

 

Örnek:

UPDATE kitap

SET kitapBedeli = kitapBedeli*1,18;

 

8.DELETE

Tabloda yer alan kayıtların tamamını veya bir kısmını silmek için DELETE deyimi kullanılır.

Genel kullanımı şu şekildedir:

DELETE

FROM tablo_adi

[WHERE sart];

 

Örnek:

Soyadı ‘OZAN’ olan üyeleri silmek istersek:

DELRTE FROM uye WHERE soyad LIKE ‘%OZAN%’

GENEL SQL FONKSİYONLARININ KULLANIMI

Tarih-Zaman Fonksiyonları:

GETDATE() : Microsoft ve Sybase temelli sistemlerde sitem tarihini bulur.

DATE() olarak da geçebilmektedir.

SYSDATE() : Oracle’de aynı işlevi yerine getirir.

NOW() : MS temelli sistemlerde, anlık detaylı zamanı(gün-ay-yıl-saat-dk-sn) verir.

 

Örnek:

Üstünde çalıştığımız VTYS’de şu anki vakti almak için;

SELECT GETDATE()

>>6/22/2003 11:39:19 PM

 

Karakter İşleme Fonksiyonları:

CHR(): Bir ASCI kodunun karakter karşılığını döndürür.

CONCAT(metin1,metin2): İki veya daha fazla karakter ifadeyi uç uca ekle­mek için kullanılır.

 

Kitap Adları ile yazarlarının adlarını bir tek alan olarak seçtirmek istersek:

SELECT kitapAdi + yazarAdi  FROM Kitap;

Oracle’de

SELECT kitapAdi || yazarAdi FROM Kitap;

Veya

SELECT CONCAT(kitapAdi,yazarAdi) FROM Kitap;

 

INITCAP(karakter): İlk harfi büyük yapar.(Oracle)

REPLACE(karakter,ifade,yerinege­lecekIfade): İfadeleri bulup değiştirir.

LOWER(metin), UPPER(metin) : Tamamı Küçük veya tamamı büyük harf yapmak için kullanılır.(Oracle)

LCASE(metin) ve UCASE(metin):Tamamı Küçük ve tamamı büyük harf yapmak için kullanılır. (MS)

LTRIM(metin), RTRIM(metin), TRI­M(metin): Soldaki, sağdaki veya her iki taraftaki boşlukları atmak için kullanılır.

LENGHT(metin): Bir metnin uzunlu­ğunu verir.(Oracle)

LEN(metin): Bir metnin uzunluğunu verir.(MS temelli Sistemler)

 

ARİTMETİK İŞARETLER

Her yerde olan aritmetik işlemleri SQL’de de geçerlidir.

 + :Toplama

- :Çıkartma

* :Çarpma

/ :Bölme

% :Mod(Bazı Sistemlerde MOD da kullanılır)


 Ruşan Sakarya

   

 

Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...