Programlarımızda yada veritabanında doğrudan sorgulamak,ekleme,çıkarma,güncelleme ve silme işlemlerini yapabileceğimi sql de temel komutlar bulunmakta. Sql aslında dışardan bakıldığı kadar korkutucu değildir herşey yaratıcılıkta bitiyor yani temel komutları bildikten sonra bunları komples şekilde kullanarak her türlü sorguyu yapabilirsiniz : )
Başlamadan önce elinizde veritabanı olduğunu farz ediyorum J boş olması sorun değil zaten komutlarımız yardımıyla dolduracağız.
Başlamadan önce hangi komutlara bakacağımıza bir göz atalım,
Select : Kayıtları görüntülemek için.
Update : mevcut olan bir kaydı yada kayıtları güncellemek için
Insert : kayıt eklemek için.
Delete : silmek için.
Bu dökümanda insert ve Select kullanımına bakalım.
Şimdi başlayalım.
Önce sql sunucumuzu açıyoruz ve New Query’e basıyoruz.
Öncelikle karşımıza çıkan ekranı tanıyalım.
Burdan sorgulama yapacağımız veritabanını seçebiliriz. Zorunlu değildir sql komutları ile hangi veri tabanı üzerinde çalışabileceğimizi zaten ayarlayabiliriz.
Execute : Query e yazılan cümleleri çalıştırmak için ( F5 kısa yoluda mevcuttur )
Kırmızı kutucuk içine aldığım 3 adet daha alan var bu alanlar bize sorgunun nasıl bir çıktıda vereceği içindir ordaki seçenekler
Results to Text : sonuçları Text yani metin olarak çıkması için.
Results to grid ( kullanacağımız ) : sonuçların karşımıza tablo olarak çıkması.
Results to file : sonuçları sql report dosyası olarak kaydetmek için . ( ihtiyacınız olmaz )
Öncelikle veritabanımıza biraz kayıt ekleyelim bunun için kullanacağımız komut INSERT olacaktır. Şimdi bu komutu nasıl kullanacağımıza bakalım.
Insert Komutu ve kullanımı
insert cümlesini kullanmak için önce sql cümle kalıbını inceleyelim. cümlemiz insert into yani ekle diyerek başlar sonra tablo adını yazarız ve verilerin ekleneceği sutunlar ardından values yani değerler kelimesi ve sırasıyla alanlara karşılık gelecek verilerimizi yazarız.
insert into TabloAdi (TablodakiSutun1,Sutun2,Sutun3,Sutun4,Sutun5,Sutun6) values ('Sutun1Degeri',' Sutun2Degeri ',' Sutun3Degeri ',' Sutun4Degeri ',' Sutun5Degeri ',' Sutun6Degeri ')
Tablomuzu belirledik ve tablomuzdaki alanları teker teker yazdık ve sonrada bu alanlara karşılık gelen verilerimizi ekledik. Örn aşağıda.
Resimde de görüldüğü gibi 1 row(s) affected yani sonuç başarılı kaydımızı düzgün bir şekilde ekledik.Cümlemiz ,
insert into uyelikbilgi (uyeliktarih,gecmis,siteadi,uyeadi,uyeid,telefon) values ('01.01.2011','muritcan','www.tahribat.com','sharp','31000','321432')
İpucu!! : tablonuzda anlık tarih gibi bir alan varsa SQL de GETDATE() komutuyla o andaki tarihi sql e otomatik olarak attırabilirsiniz.
insert into uyelikbilgi (uyeliktarih,gecmis,siteadi,uyeadi,uyeid,telefon) values (GETDATE(),'muritcan','www.tahribat.com','sharp','31000','321432')
birkaç tane bu şekilde kayıt ekledikten sonra şimdi bu kayıtlarımızı listeleyelim.
Bunun için Select komutunu kullanacağız.
Select Komutu ve kullanımı
Select * from uyelikbilgi
Komutu açmak gerekirse , uyelikbilgi isimli tablodan bütün verileri getir demek.
Bu şekilde tablodaki bütün kayıtlar gelir ama çok fazla kayıt olan tablolarda filtreleme yapmak istiyorsak bunu yapmak için WHERE komutunu kullanmamız lazım
Örn : uye adı buzul olan kayıtları listeleyelim.
Select * from uyelikbilgi where uyeadi='buzul'
Yada mesela gecmişimde murit kelimesi geçen üyeleri bulalım bunun içinde ek olarak LIKE komutunu kullanmamız lazım.
Select * from uyelik bilgi where gecmis like 'murit%'
İpucu !! : like komutu ile yaptığımız sorgularda % işaretini kullanabiliriz bu işareti örneklerle açıklamak gerekirse,
‘%murit%’ içerisinde murit geçenleri listeler
‘%murit’ murit ile bitenleri listeler
‘murit%’ murit ile başlayan kayıtları listeler.
Çok büyük ve alan sayısı fazla olan veritabanlarında sadece istediğimiz alanları çağırmak veritabanında hızlanma sağlar bunun için select cümlesini kullanırken * olarak kullandığımız karakter bize bütün sütunları getirir ancak * yerine sadece istediğimiz sutunları yazarsak veritabanının sorgu hızında artış sağlanabilir.
Örn :
select uyeadi,uyeid from uyelikbilgi
Bu sorgu bize uyelik bilgi tablosundan sadece uyeadi ve uyeid alanlarını getirir.
Select Sorgusu ile toplam kayıtı getirmek
Basit bir sorgu ile karşınıza tablonuzda kaç kayıt var listeleyebilirsiniz.
select COUNT(*)from uyelikbilgi
Çıktıda da gözüktüğü gibi (No Column name ) adında bir sütün altında toplam kayıt sayısı gözükmektedir.
İpucu !! : Sql güzelliklerinden biride tabloda içinde sutun açmadanda sutun ekleyebilir bunları anlık kullanabilirsiniz. Şimdi (No Column name ) yazan yere bir başlık ekleyelim
select COUNT(*) as Toplam_Kayit from uyelikbilgi
bu şekilde yazdığımızda çıktımız şu şekilde olacaktır.
Toplam_Kayit
4
Yada sadece içerisinde murit geçen kayıtları saydırabiliriz
select COUNT(*) as Toplam_Kayit from uyelikbilgi where gecmis like '%murit%'
bu komuttanda alacağımız çıktı sonucu
Toplam_Kayit
3
Olacaktır.
İpucu !! : Sql Query sayesinde elimizdeki kayıtlardaki sutunlardaki verileri yine sql içersinde birleştirebilir ve onları listeyebiliriz.
Örn : tablomuzdaki uyeadi,gecmis ve site adı alanları tek sutunda listeleyelim. Bunun için aşağıdaki komutu kullanabiliriz.
select uyeadi+' '+gecmis+' '+siteadi as uyeler_bilgi from uyelikbilgi
bu komuttan alacağımız çıktı ise şu şekilde olacaktır.
uyeler_bilgi
sharp muritcan www.tahribat.com
uyecan muritcan2 www.tahribat.com
buzul muritcan4 www.tahribat.com
rene rene www.tahribat.com
bu kadar çok örnek vermemin sebebi sql’in sınırsızlıklarını biraz hissettirmekti. Hiçbir program kullanmadan kayıtları istediğiniz gibi listeleyebilirsiniz.
UPDATE - DELETE ve Karşılaştırma Operatörleri
Bu dökümandan önce Select ve Insert komutlarına bakmıştık şimdide Insert ile ekleyip Select ile listelediğimiz kayıtları Update Komutu ile güncelleyelim Delete komutu ile silelim. sonrada sorgularımızdaki kullandığımız ve kullanacağımız operatörlere göz atalım.
Öncelikle tekrar kayıtlarımıza bakalım
Select * from uyelikbilgi
Sorgusu ile tablomdaki bütün kayıtları sorgulayalım
5 adet kayıt geldi karşımıza şimdi kayıtlarımızda güncelleme yapalım. Update komutunun kullanımını cümleyle anlatmak gerekirse.
Update TabloAdi Set SutunAdi=Deger,SutunAdi2=Deger2
Şimdi bizde tablomuzdaki siteadi alanındaki bütün bilgileri www.google.com olarak değiştirelim.
Bunun için yazıcağımız cümle şu şekilde olacaktır.
Update uyelikbilgi Set siteadi='www.google.com'
Bu cümleyi çalıştırdıktan sonra 5 tane kaydımız olduğundan alacağımız cevap
(5 row(s) affected)
Olacaktır.
Select * from uyelikbilgi
Cümlesi ile kayıtlarımızın son hallerine bakalım.
siteadi
www.google.com
www.google.com
www.google.com
www.google.com
www.google.com
bütün kayıtların site adları değişmiş oldu.
DİKKAT !!! : UPDATE komutu çok tehlikeli bir komuttur elinizde çok büyük bir veritabanı varsa elinizdeki kayıtların hepsini güncelleyebilirsiniz.
Update komutunu WHERE sorgusu ile kriterlerini belirlediğimiz komutlar üzerinde kullanmamız bütün kayıtları bozmamak için en mantıklısıdır.
İpucu !!! : koşullu yani WHERE sorgusuyla birliklte bir güncelleme yapacaksanız yazdığınız komutu ilk önce SELECT komutuyla bakın ve hangi kayıtlarını güncelleceğinizi görün.
Şimdi tablomuzda şöyle bir koşul yapalım
Üyelik Tarihi 2008’den küçük olanların Gorev alanlarını ‘Eski Toprak’ olarak güncelleyelim.
Update uyelikbilgi Set gorev='Eski Toprak' where uyeliktarih<'2008-10-01 00:00:00.000'
Bu komut sayesinde üyelik tarihi 2008den eski olan üyelerin gorev alanlarında değişiklik yapmış olduk.
Bu komutta görüldüğü gibi uyeliktarihi nin yanında < şeklinde bir operatör kullandım. SQL de kullanabileceğimiz operatörleri en sonda bahsederim.
Update komutu temelde bu şekilde çalışır bundan sonrası sizin, yaratıcılığınız ve hayal gücünüz arasındaki meseleye kalmıştır biraz WHERE komutundan sonraki sorgulamalar ne kadar fazla olursa o kadar az kayıtta güncelleme yaparsınız.
DELETE komutu
Bu komut kayıtları silmek için kullanılır kullanmanızı önermem hiçbir kayıdı silmenize gerek yoktur aslında.
Delete komutunun kullanımına bakacak olursak.
Delete From TabloAdi
Şeklinde kullanabiliriz ama bu bizim bütün kayıtlarımızı silmekten başka bir işe yaramaz. Eğer amacımız tabloların içini boşaltıp boş bir veritabanı hazırlamaksa bu komut işimizi görür. Bu sorguyada WHERE komutuyla kısıtlayıp filtreleyebiliriz.Örn,
Delete From Uyelikbilgi where uyeadi=’sharp’ dersem bu benim kullanıcımın silinmesi demektir.
Şimdi SQL de kullanabileceğimiz Operatörlere göz atalım isterseniz.
SQL’DE OPERATÖRLER
Mantıksal Operatörler
AND : birden fazla şart aranan kayıtları listelemek için kullanılır örn üye adı sharp ve uyeid si 31000 olan kayıtları listemek istersem aşağıdaki gibi bir komut yazmam gerekir.
select * from uyelikbilgi where uyeadi='sharp' and uyeid='31000'
OR : birden fazla şartta kayıt aramak için kullanılır mesela üye adı sharp ve buzul olanları listeleyelim. OR operatörünün özelliği istediğimiz koşulların herhangi birini karşılayan kayıt olduğunda bile listeler. Aşağıdaki cümleye OR yerine AND koyarsanız karşınıza hiç kayıt çıkmaz.
select * from uyelikbilgi where uyeadi='sharp' or uyeadi='buzul'
NOT : listelemek istemediğimiz kayıtlar için kullanılır örn tablomuzda üye adı sharp olmayanları listelemek için.
select * from uyelikbilgi where not uyeadi='sharp'
NOT IN : İstemediğimiz kayıtları çıkartmak içinde bu komutu kullanabiliriz mesele uyeid alanı 31000 olan kayıtların gelmesini istemiyorsak aşağıdaki cümleyi kullanabiliriz.
select * from uyelikbilgi where uyeid NOT IN (31000)
Karşılaştırma Operatörleri
Bu operatörlerinde hepsine birer tane örnek ekleyelim.
< ..’ den daha küçük
select * from uyelikbilgi where uyeliktarih<'2008-10-01 00:00:00.000'
> ..’ den daha büyük
select * from uyelikbilgi where uyeliktarih>'2008-10-01 00:00:00.000'
>= Büyük veya eşit
select * from uyelikbilgi where uyeliktarih>='2008-10-01 00:00:00.000'
<= Küçük veya eşit
select * from uyelikbilgi where uyeliktarih<='2008-10-01 00:00:00.000'
= Eşit
select * from uyelikbilgi where uyeid='31000'
<> Eşit değil
select * from uyelikbilgi where uyeid<>'31000'
!= Eşit değil
select * from uyelikbilgi where uyeid!='31000'
!< ..’ den küçük değil
select * from uyelikbilgi where uyeid!<'31000'
!> ..’ den büyük değil
select * from uyelikbilgi where uyeid!>'31000'
alıntıdır: tahribat.com
alıntıdır: tahribat.com
0 yorum:
Yorum Gönder