Arkasokak Logo






SQL 1.BÖlüm Evet arkadaşlar bu yazıda SQL'den bahsedecez. Burda bahsedeceğim SQL sorgularını Visual Basic dışında Asp,Php.. ile uygulama geliştirenlerde yararlanabilir. ...

Cevap
  #1  
Eski 19-07-2006, 07:48 PM
empedoCles kullanıcısının avatarı
Müdavim
 
Giriş: Sep 2005
Mesaj: 123
empedoCles İtibar düzeyini kapadı
SQL 1.BÖlüm

SQL 1.BÖlüm


Evet arkadaşlar bu yazıda SQL'den bahsedecez. Burda bahsedeceğim SQL sorgularını Visual Basic dışında Asp,Php.. ile uygulama geliştirenlerde yararlanabilir. Olaya başlamadan kısaca SQL sorguları bize ne faydalar sağlayacağına değinmek istiyorum.Çünkü ilerde "ben bu işi zaten şu şekilde de yapıyorum banane, SQL sorguları ile ne uğraşacam ne öğrenecem" demeyin.
Bildiğiniz gibi(özellikle Ado,Dao,Laho I ve II. yazıları okuyanlar) kayıt işlemi ve diğer işlemlerde kayıt seti tanımlıyor ve sql="select * from tablo" diyerekten ilgili tablodaki bütün kayıtları seçiyorduk.Sonra dizi.AddNew diyerek ilgili yere ilgili bilgiyi çakıyorduk.Oysa SQL komutları sayesinde kayıt ekleme,Kayıt silme,kayıt değiştirme vb.. gibi işlemleri artık veritabanındaki bütün kayıtları seçmeden ve kayıt seti tanımlamadan veriyi veritabanına çakabiliriz. Örneğin 1000 tane kayıt olan ve 10 field'i olan bir veritabanı düşünün. Biz bu veritabanına bir kayıt ekleyecez. Kayıtseti tanımlayıp ve birde üstüne sql="select * from tablo" dedeğiniz zaman veritabanındaki 1000 kayıtın 10 field'de seçili duruma gelir.Burda bir performans kaybı söz konusu.Bu performans kaybı veritabanındaki kayıt sayısının artması ile doğru orantılı.Hem ne gerek var kayı seti tanımlamaya.İşte SQL komurlatının bize sağladığı faydalardan sadece biri.Uzatmadan SQL komutlarına geçelim....

NOT:Anlatacağım SQL cümleleri deneme ismindeki bir tablo üzerine yazılmıştır. Ve isim,soyisim,alankodu,telefon,il,adres fieldleri kullanılmıştır.

Select(Kayıt Seçme)
Aslında biz select ile önceden tanışmıştık.Sizinde anlayacağıniz gibi biz select metodu veritabanından veri seçmek için kullanılıyor.Select metodunu

sql="select * from deneme"
veya
sql="select isim,soyisim,alankodu,telefon,il,adres fromdeneme"
şeklindede kullanabiliriz. yukardaki iki yöntemde aynı sonucu verecektir.Şimdi ikinci olayı biraz açalım.Siz bu veritabanında sadece kayıtların isim,soyisim ve alankodu'nu istiyorsunuz.Hatta buna ek olarak birde alakodu 0464 olan kayıtların seçilmesini istiyorsunuz.Hemen yapalım o zaman:

sql="select
isim,soyisim,alankodu from denemewhere alankodu='0464'"

İşte yukardaki SQL sorgusunda alankodu 0464 olan kayıtların isim,soyisim ve alankodu bilgileri seçilmiş durumda.Dikkat ettiniz mi bilmem ama bu olay aynı zamanda kayıt arama oldu.Evet kayıt arama olayını where ile koşul tanımlayarak veya like metodu ile yapabiliriz.Like'ı yazının ilerleyen yerleride değinecem.Ancak burda dikkat etmeniz gereken nokta where 'den sonra kullanacağımız koşuldaki field'in select 'ten sonraki fieldlerdede bulunması gerektiğidir.Yani

sql="select
isim,soyisim from denemewhere alankodu='0464'" şeklindeki bir ifade yanlıştır.Çünkü sadece isim,soyisim fieldleri seçilmiştir.Ancak bu ifadede seçilmemiş olan alankodu sorgulanmaktadır.
İkinci dikkat edilmesi gereken nokta ise tırnaklardır.Eğer veritabanındaki field string ise tırnak kullanacaz.Yoksa birşey kullanmayacaz.

İnsert into(kayıt Ekleme)
İlk önce insert into ifadesini açıklayalım hemen peşine kayıt seti tanımlamadan bilgileri veritabanına nasıl çakacaz göreceksiniz.Ancak insert into ile veri çakmak için biraz uzun ifadeler kullandığımızdan alt satıra geçecek ama siz bunu tek satır olarak düşüneceksiniz.
sql="insert intodeneme(isim,soyisim,alankodu,telefon,il,adres)values('erhan','Selimoğlu','0464','yokyaa','Rize','biryokyaaadaha')"

Şimdi ilk olarak tırnaklara dikkat edin.Burdada durum aynıdır.Eğer veritabanındaki field string değerde ise tırnak işsareti kullanacaksınız.İkinci dikkat etmeniz gereken nokta sıralamadır.Ancak siz fieldleri istediğiniz gibi sırasız seçebilirsiniz önemli olan values( .........) içine yazacağınız bilgilerin sırasıdır.Yani yukardaki örneği values('0464'......) şeklinde yazsaydık veritabanında isim=0464 olacaktı.Kısaca değerleri field sıralarına göre vereceğiz.
Evet şimdi sıra verileri veritabanına kayıtseti tanımlamadan çakmaya
geldi.



Kod:
Set baglanti = New ADODB.Connection
baglanti.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & "c:\uygulama\veritabani.mdb" 


Bağlantıyı yukardaki gibi kuruyorduk.Bağlantıyı kurduktan sonra



Kod:
sql="insert intodeneme(isim,soyisim,alankodu,telefon,il,adres)values('erhan','Selimoğlu','0464','yokyaa','Rize','biryokyaaadaha')" 
baglanti.execute(sql) 



Yukarda sizinde gördüğünüz gibi kayıt seti tanımlamadık ama veriyi çaktık.Tabi bu olayı baglanti.execute(sql) ile yaptık.İşte bu tür işlemleri kayıtseti tanımlamadan daha hızlı bir şekilde yapıyoruz.Hemde bütün kayıtları seçmeden.Kısaca veritabanında ister 1 kayıt ister >100000 kayıt olsun performans açısından aynı sonucu verecektir.

Delete(Kayıt Silme)
Bu metod hemen hemen select ile aynıdır.Pek ayrıntıya girmeyecem.İşte örnek...

sql="delete
from deneme where isim='erhan'"

Bu işlemi gerçekleştirmek için veritabanı ile bağlantı kurduktan sonra
baglanti.execute(sql) dediğiniz takdirde veya kayıt seti tanımladığınız takdirde.İsmi erhan olan kayıtları siler.Genelleme yapmak için kayıt numarasına göre silme işlemi yapabilirsiniz.Yani ismi erhan olan birden çok kayıt olabilir ama veritabanında tanımladığınız otomatik sayı olan kayıt numarasının değerleri aynı olamaz.

Update(Kayıt Güncelleme)
Bu metodu iki farklı amaç için kullanabiliriz.Aslında ikiside aynı amaç ama gözlük ile gözlükçü arasındaki fark gibi.Eğer bu metodu kullanırken where ile koşul tanımlamazsak veritabanındaki bütün kayıtların belirtilen değeri belirtilen doğrultuda değiştirilir ve veritabanına çakılır.Aksine where ile koşul belirtirsek bu sefer ilgili kayıtın veya kayıtların değeri değişir.Hemen bir kaç örnek verelim.

sql="update deneme set isim='erhan'"

Yukarıdaki gibi bir ifade ile veritabanındaki bütün kayıtların isimleri erhan olarak değiştirilir.

sql="update deneme set isim='erhan' where alankodu='0464'"

şeklinde bir ifade kullanırsak alankodu 0464 olan bütün kayıtların isimleri erhan olarak değiştirilir.

Evet arkadaşlar SQL 'in 1.bölümünün sonuna geldik.

SON Söz 1: Kayıt ekleme,kayıt silme,kayıt düzeltme vb.. gibi işlemler için kayıt seti tanımlamaya gerek yoktur.Kayıt seti tanımlamazsak baglanti.execute(sql) dememiz yeterlidir.Ancak yok ben illa kayıt seti tanımlayacam boşa benzin yakacam derseniz aşağıdaki gibi de yapabilirsiniz




Kod:
Set baglanti = New ADODB.Connection
baglanti.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & "c:\uygulama\veritabani.mdb"
Set dizi = New ADODB.Recordset
sql="insert intodeneme(isim,soyisim,alankodu,telefon,il,adres)values('erhan','Selimoğlu','0464','yokyaa','Rize','biryokyaaadaha')"
dizi.Open sql, baglanti, 1, 3
 



Gördüğünüz gibi yukarda kayıt ekleniyor.Ve dizi.open sql,baglanti,1,3 demeniz yeterli geliyor. Yani bir daha
dizi.addnew
dizi("isim")="erhan"
dizi("soyisim")="Selimoğlu"
.
.
dizi.update

demiyoruz..
SON Söz 2 : Veritabanından veri okurken veya düzeltirken sadece gerekli fieldleri seçmeniz daha iyi olacaktır.Yani size isim fiedl'i lazımken neden bütün fieldleri seçesiniz.Demem o ki neden fuzuli benzin yakasınız.....



Erhan SELİMOĞLU (Rize Fen Edebiyat Fakültesi Fizik Bölümü )'ne teşekkürler...
imza

#include <middleeast.h>

#define ISRAELIS foul_beasts






empedoCles kullanıcısına MSN aracılığı ile mesaj yolla
Alıntı Yaparak Cevapla
Cevap

Konu Araçları
Görünüm Modları



Saat 02:58 PM.


Copyright ©2005 - 2008 Arkasokak.Net
Tasarım: NoDRaC
Bize Ulaşın - Gizlilik İlkesi - En Üst
Powered by vBulletin
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0