folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder [Döküman] - Temel Sql Komutları



[Döküman] - Temel Sql Komutları

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sharp
    Sharp's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    Dökümanın Forum Konusu Linktedir : http://www.tahribat.com/Forum-Dokuman-Temel-Sql-Komutlari-139254/

    Temel Sql Komutları

    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'


    www.yesilgrow.com - Growshop
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sharp
    Sharp's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    sorular olursa cevaplamak için burayı işgal ediyim


    www.yesilgrow.com - Growshop
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    maserati
    maserati's avatar
    Kayıt Tarihi: 28/Nisan/2006
    Homo

    direk döküman kısmına yaz hoca

    eyvallah bu arada müsait olduğum zmn takp etcem insallah


    Türkiyede kim sevdiği işi yapıyor ki?
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sharp
    Sharp's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    Proxykaspersky bunu yazdı:
    -----------------------------

    direk döküman kısmına yaz hoca

    eyvallah bu arada müsait olduğum zmn takp etcem insallah


    -----------------------------
    dökümanlarda artık yardım ve sorular için forum konusuda oluyor hocam


    www.yesilgrow.com - Growshop
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    maserati
    maserati's avatar
    Kayıt Tarihi: 28/Nisan/2006
    Homo

    Sharp bunu yazdı:
    -----------------------------

    Proxykaspersky bunu yazdı:
    -----------------------------

    direk döküman kısmına yaz hoca

    eyvallah bu arada müsait olduğum zmn takp etcem insallah


    -----------------------------
    dökümanlarda artık yardım ve sorular için forum konusuda oluyor hocam

     


    -----------------------------

    evt hocam yeni fark ettim onu :)

     

     


    Türkiyede kim sevdiği işi yapıyor ki?
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    angels_demos
    angels_demos's avatar
    Kayıt Tarihi: 03/Haziran/2006
    Erkek

    bana kalırsa sql front yada nacivat kullanın. ayrıca başlangıçta nasıl db / tablo oluşturulduğunu veri tiplerini vs. yazsaydın daha iyi olurdu 

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sharp
    Sharp's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    angels_demos bunu yazdı:
    -----------------------------

    bana kalırsa sql front yada nacivat kullanın. ayrıca başlangıçta nasıl db / tablo oluşturulduğunu veri tiplerini vs. yazsaydın daha iyi olurdu 


    -----------------------------

    yarın yada öbür güne veritabanı,tablo oluşturmayla ilgilide bir döküman hazırlarım hocam haklısın. emeklemeden koşmak gibi bişey oldu


    www.yesilgrow.com - Growshop
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Holyzone
    Holyzone's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 13/Ekim/2008
    Erkek

    Eline sağlık Sharp süpersin.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    elfkrc
    elfkrc's avatar
    Kayıt Tarihi: 26/Ocak/2010
    Dişi

    teşekkürler hocam, okulda da sql i bunları yeni öğreniyoruz, devamı da olursa takip edicem

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    UCANTENEKE
    UCANTENEKE's avatar
    Kayıt Tarihi: 30/Ağustos/2005
    Erkek
    saolasın ama ben yapacaktım bunları temellerini çünkü ileri düzeylerini bilmiyorum:D:D

    Bence bu dünya üzerinde seçilmiş ırk diye bi kavram varsa bu ırk kesin ruslardır.Onlar daha iyisini yapana kadar en iyisi onlar
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kukunku
    kukunku's avatar
    Kayıt Tarihi: 13/Aralık/2009
    Erkek

    biyerlerden başlamak lazım aslında. Eline sağlık hocam

Toplam Hit: 3913 Toplam Mesaj: 14