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.Cunku ilerde "ben bu işi zaten şu şekilde de yapıyorum banane, SQL sorguları ile ne uğraşacam ne oğrenecem" demeyin.
Bildiğiniz gibi(ozellikle 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 butun kayıtları seciyorduk.Sonra dizi.AddNew diyerek ilgili yere ilgili bilgiyi cakıyorduk.Oysa SQL komutları sayesinde kayıt ekleme,Kayıt silme,kayıt değiştirme vb.. gibi işlemleri artık veritabanındaki butun kayıtları secmeden ve kayıt seti tanımlamadan veriyi veritabanına cakabiliriz. Orneğin 1000 tane kayıt olan ve 10 field'i olan bir veritabanı duşunun. Biz bu veritabanına bir kayıt ekleyecez. Kayıtseti tanımlayıp ve birde ustune sql="select * from tablo" dedeğiniz zaman veritabanındaki 1000 kayıtın 10 field'de secili duruma gelir.Burda bir performans kaybı soz 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 gecelim....
NOT:Anlatacağım SQL cumleleri deneme ismindeki bir tablo uzerine yazılmıştır. Ve isim,soyisim,alankodu,telefon,il,adres fieldleri kullanılmıştır.
Select(Kayıt Secme)
Aslında biz select ile onceden tanışmıştık.Sizinde anlayacağıniz gibi biz select metodu veritabanından veri secmek icin kullanılıyor.Select metodunu
sql="select * from deneme"
veya
sql="select isim,soyisim,alankodu,telefon,il,adres from deneme"
şeklindede kullanabiliriz. yukardaki iki yontemde aynı sonucu verecektir.Şimdi ikinci olayı biraz acalı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 secilmesini istiyorsunuz.Hemen yapalım o zaman:
sql="select isim,soyisim,alankodu from deneme where alankodu='0464'"
İşte yukardaki SQL sorgusunda alankodu 0464 olan kayıtların isim,soyisim ve alankodu bilgileri secilmiş 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 deneme where alankodu='0464'" şeklindeki bir ifade yanlıştır.Cunku sadece isim,soyisim fieldleri secilmiştir.Ancak bu ifadede secilmemiş 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 once insert into ifadesini acıklayalım hemen peşine kayıt seti tanımlamadan bilgileri veritabanına nasıl cakacaz goreceksiniz.Ancak insert into ile veri cakmak icin biraz uzun ifadeler kullandığımızdan alt satıra gececek ama siz bunu tek satır olarak duşuneceksiniz.
sql="insert into deneme(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 secebilirsiniz onemli olan values( .........) icine yazacağınız bilgilerin sırasıdır.Yani yukardaki orneği values('0464'......) şeklinde yazsaydık veritabanında isim=0464 olacaktı.Kısaca değerleri field sıralarına gore vereceğiz.
Evet şimdi sıra verileri veritabanına kayıtseti tanımlamadan cakmaya
geldi.
Set baglanti = New ADODB.Connection
baglanti.Open "Driver=; DBQ=" & "c:\uygulama\veritabani.mdb"
Bağlantıyı yukardaki gibi kuruyorduk.Bağlantıyı kurduktan sonra
sql="insert into deneme(isim,soyisim,alankodu,telefon,il,adres) values('erhan','Selimoğlu','0464','yokyaa','Rize', 'biryokyaaadaha')"
baglanti.execute(sql)
Yukarda sizinde gorduğunuz gibi kayıt seti tanımlamadık ama veriyi caktık.Tabi bu olayı baglanti.execute(sql) ile yaptık.İşte bu tur işlemleri kayıtseti tanımlamadan daha hızlı bir şekilde yapıyoruz.Hemde butun kayıtları secmeden.Kısaca veritabanında ister 1 kayıt ister >100000 kayıt olsun performans acısından aynı sonucu verecektir.
Delete(Kayıt Silme)
Bu metod hemen hemen select ile aynıdır.Pek ayrıntıya girmeyecem.İşte ornek...
sql="delete from deneme where isim='erhan'"
Bu işlemi gercekleştirmek icin 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 icin kayıt numarasına gore silme işlemi yapabilirsiniz.Yani ismi erhan olan birden cok 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 Guncelleme)
Bu metodu iki farklı amac icin kullanabiliriz.Aslında ikiside aynı amac ama gozluk ile gozlukcu arasındaki fark gibi.Eğer bu metodu kullanırken where ile koşul tanımlamazsak veritabanındaki butun kayıtların belirtilen değeri belirtilen doğrultuda değiştirilir ve veritabanına cakı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 kac ornek verelim.
sql="update deneme set isim='erhan'"
Yukarıdaki gibi bir ifade ile veritabanındaki butun 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 butun kayıtların isimleri erhan olarak değiştirilir.
Evet arkadaşlar SQL 'in 1.bolumunun sonuna geldik.
SON Soz 1: Kayıt ekleme,kayıt silme,kayıt duzeltme vb.. gibi işlemler icin 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
Set baglanti = New ADODB.Connection
baglanti.Open "Driver=; DBQ=" & "c:\uygulama\veritabani.mdb"
Set dizi = New ADODB.Recordset
sql="insert into deneme(isim,soyisim,alankodu,telefon,il,adres) values('erhan','Selimoğlu','0464','yokyaa','Rize', 'biryokyaaadaha')"
dizi.Open sql, baglanti, 1, 3
Gorduğunuz 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 Soz 2 : Veritabanından veri okurken veya duzeltirken sadece gerekli fieldleri secmeniz daha iyi olacaktır.Yani size isim fiedl'i lazımken neden butun fieldleri secesiniz.Demem o ki neden fuzuli benzin yakasınız.....
__________________
SQL 1.BOlum
Programlama0 Mesaj
●34 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Programlama
- SQL 1.BOlum