SQL'yi öğrenmeyen kalmayacak

Son güncelleme: 23.05.2011 12:21



  • SQL - SQL öparatörler - SQL'yi ögrenmek - SQL türkce anlatim

    SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir. (sub language) SQL ile yalnızca veri tabanı üzerinde işlem yapabiliriz. SQL cümleceikleri kullanarak veri tabanına kayıt ekleyebilir, olan kayıtları değiştirebilir silebilir ve bu kayıtlardan listeler oluşturabiliriz. SQL cümlecikleri genellikle aynı olmakla birlikte farklı veri tabanı ortamlarında değişebilmektedir. Ayrıca veri tabanlarının kendilerine özgü sql komutlarıda vardır. Biz burada her ortamda geçerli olan temel sql komutları işleyeceğiz.Şimdi örnekler kullanacağımız bir database tanımlayalım. Aşağıdaki Örnekler Microsoft SQL Server 6.5 'da denenmiştir.



    Tablo adı : personel

    Kolon : sicil_no:text (8)

    Kolon : ad:text (8)

    Kolon : soyad:text (8)

    Kolon : dogum_tarihi:date

    Kolon : dogum_yeri:text (8)

    Kolon : cinsiyeti:text(1)

    Kolon : medeni_hali:binary

    Kolon : meslek_id:smallint

    Kolon : egitim_durumu:binary

    Kolon : adres:text (50)



    Tablo adı : ucretler

    Kolon : per_sicil_no:text (8)

    Kolon : baslama_tarihi:date

    Kolon : aylık_ucret:numeric

    Kolon : aile_yardimi:numeric

    Kolon : egitim_yardimi:numeric

    Kolon : kesinti:numeric:



    Tablo adı : meslekler

    Kolon : meslek_id:smallint

    Kolon : aciklama:text (23)

    Kolon : taban_ücret:numeric


    From

    İlk önce bu komut ile başlayalım. Bu komut bütün SQL cümleciklerinde bulunması gerekli bir komuttur.Bu komut ile hangi tablolar üzerinde çalışacağımı veri tabanına söylüyoruz. Eğer aynı sql cümleciği ile bir kaç tablo üzerinde işlem yapmak istersek tablo isimleri arasına virgül koymalıyız. aşagıdaki örnekleri SELECT komutundan sonra açıklayacağım.

    Örnek 1 :

    SELECT * FROM personel;

    Örnek 2 :

    SELECT * FROM personel,ucretler;

    Select

    Bu komut ile database üzerindeki tablonun hangi kolonları alacağımız veritabanına söyleriz.Tablonun bütün kolonlarını görmek istiyorsak '*'
    karekterini kullanırız. Sadece belli kolonları görmek istiyorsak kolon isimlerini aralarına virgül koyarak yanyana yazmalıyız.Yukarıdaki örnekleri açıklayacak olursak birinci örnek personel tablosundaki bütün kayıtları getirecektir. İkinci örnekte ise persenol ve ücretler tablosundaki bütün kayıtlar çekilecektir.

    Örnek 3 :


    SELECT * FROM meslekler ;

    Bütün meslek
    bilgilerini almak istersek yukarıdaki gibi bir query yazmalıyız.

    Örnek 4 :

    SELECT ad,soyad FROM personel ;

    Bu query ise bize
    firmamızda çalışan bütün personeli listeler.

    SQL'de Veri Tabanı Yaratma

    SQL komutları yalnızca bir veri tabanı üzerinde geçerli olduğu
    için veri tabanı yaratma işlemlerinide anlatmanın yararlı
    olacağına inanıyorum. Aşağıda anlatılan işlemler SQL Server
    6.5 üzerinde gerçekleştirilmiştir.Database yaratmak için
    aşagıdaki komutu yazabiliriz.



    CREATE DATABASE database_name

    [ON {DEFAULT | database_device} [= size]

    [, database_device [= size]]...]

    [LOG ON database_device [= size]

    [, database_device [= size]]...][FOR LOAD]





    database_name : Bu yaratılacak olan veri tabanının ismidir.



    ON : Bu ise yaratılacak olan veri tabanın hangi
    device üzerinde yer alacağını belirten bir parametredir.
    Burada aynı zamanda bu device üzerinde size parametresi ile
    database'in ne kadar yer kaplayacağını belirmiş oluyoruz.
    Eğer device tanımlamaz isek SQL server default device
    üzerinde 5 mb bir veri tabanı yaratacaktır.Bu parametre
    içinde birkaç device ismi kullanarak veri tabanını bir kaç
    device üzerinde yer almasını sağlayabiliriz.



    LOG ON : Bu ise yaratılacak olan veri tabanın
    log'unun hangi device üzerinde yer alacağını belirten bir
    parametredir. Burada aynız zamanda bu device üzerinde size
    parametresi ile database'in log'unun ne kadar yer
    kaplayacağını belirmiş oluyoruz. Eğer device tanımlamaz isek
    SQL server default device üzerinde bir log tutacaktır.Bu
    parametre içinde birkaç device ismi kullanarak veri tabanı
    log'unun bir kaç device üzerinde yer almasını sağlayabiliriz.

    Örnek 1 :

    CREATE DATABASE fat123

    Bu komut ile SQL Server üzerinde fat123 isimli boş bir
    database yaratmış oluyoruz. (Dönen mesaj :CREATE DATABASE:
    allocating 2560 pages on disk 'a1v1')

    Örnek 2 :

    CREATE DATABASE fat123

    ON master = 10

    Bu komut
    ile SQL Server'da master device'ı üzerinde 10 mb'lık fat123
    isimli boş bir database yaratmış oluyoruz.

    Örnek 3 :

    CREATE DATABASE fat123

    ON fat123 = 10

    LOG ON fat123log = 5

    Bu komut ile SQL Server'da fat123 device'ı üzerinde 10 mb'lık fat123
    isimli boş bir database ve fat123log device'ı üzerinde 5 mb
    bir log yaratmış oluyoruz.

    Örnek 4 :

    CREATE DATABASE fat123

    ON fat=10 , fat1 = 10 , fat2=10 , fat3=10

    LOG ON fat123log = 20

    Bu komut ile ise fat123 isimli veri tabanını 4 farklı device
    üzerinde yaratıyoruz.

    Genellikle yaratılan database'in yarısı kadar bir alanda log
    için oluşturulur.

    SQL Komutları

    Order By

    Bu komut
    ile belirtilen kolona göre artan veya azalan bir sıralama
    ile sorgulama yapabiliriz.

    ASC : kullanarak küçükten büyüğe doğru artan sıralama
    yapabiliriz.

    DESC : kullanarak büyükten küçüğe doğru azalan sıralama
    yapabiliriz.

    Ancak ASC kullanmak zorunlu değildir. Çünki default
    sıralama tipi ASC'dir. Aynı anda birkaç kolon üzerindende
    sıralama yapabiliriz.

    Örnek 1 :

    SELECT * FROM personel ORDER BY ad ASC;

    Bu query
    ile personel tablosundaki bütün kayıtları ad'a göre
    küçükten büyüğe dogru sıralarız.

    Örnek 2 :

    SELECT * FROM personel ORDER BY soyad DESC;

    Bu query
    da yukarıdakinin tersine kayıtları büyükten küçüğe dogru
    sıralar.

    Örnek 3 :

    SELECT * FROM personel ORDER BY ad,soyad;

    Bu query kayıları ad göre artan bir sıralama yapar. Ancak aynı ad
    ile yaratılmış birden fazla kayıt varsa ise bunlarıda
    soyad sırasına göre artan bir şekilde sıralar. Eğer her
    iki kolnda aynı ise o zaman okuduğu sırada sıralar.

    Örnek 4 :

    SELECT * FROM personel ORDER BY dogum_tarihi DESC,ad,soyad ;

    Bu query'de ise pernel kayıtları büyükten küçüğe doğru
    sıralanıyor. Yani en genç eleman'dan başlanarak en yaşlı
    elemana doğru bir liste yapılıyor. Doğum tarihleri aynı
    olanlarda ise ad ve soyad'a göre bir sıralama yapılmaktadır.

    Where

    Yukarıda yaptığımız sorgulamaların hepsinde hiç bir koşul
    belirtmedik.Yani bütün kayıtları tablolardan çektik. Ancak
    gerçek hayat'ta bu kayıtların sadece bir kısmına ihtiyaç
    duyarız.Bize gerekli olan dataları diğerlerinden ayıran
    bazı özellikleri vardır. İşte bu özellikleri bu komut
    yardımı ile kullanarak gerekli datalara ulaşabiliriz.

    Örnek 5 :

    Adı ahmet olan personeli listelemek istersek ne yapacağız.Aşagıdaki
    gibi bir sorgulama yapacağız.

    SELECT * FROM personel WHERE ad='ahmet';

    Örnek 6 :

    Yaşı 40'dan büyük personeli listeleme istersek;

    SELECT * FROM personel WHERE dogum_tarihi <
    '01.01.1959'

    sorgulamasını kullanmalıyız.Elemanın 40 yaşında büyük
    olması için 1959 yılından önce doğmuş olması
    gerekmektedir. O halde dogum_tarihi 1959 yılından küçük olmalıdır.

    Örnek 7 :
    Adana'da doğmuş personeli listelemek istersek

    SELECT * FROM personel WHERE dogum_yeri = 'Adana'

    Örnek 8 :

    300 milyondan fazla maaş alan kişileri işe maaşa göre
    sıralamak istersek;

    SELECT * FROM ucretler WHERE aylik_ucret >= 300000000
    ORDER BY aylik_ucret


    Operatörler

    Her programlama dilinde olduğu gibi SQL'de de operatörler bulunur. Üç çeşit operatör
    mevcuttur. Karşılaştırma oparatörleri , mantıksal operatörler ve
    kümeleme operatörleri.Bu karşılaştırma operatörleri aşağıdaki gibidir ;

    operatör anlamı

    a>X ... X... a'dan küçük

    a<X ... X... a'dan büyük

    a=X ... X... a'ya eşit

    a=>X ... X... a'dan küçük eşit

    a<=X ... X... a'dan büyük eşit

    a<>X ... X... a'ya eşit değil


    Mantıksal operatörler ise AND,OR,NOT olarak verilebilir. Bu
    operatörler burada anlatmayacağız. Bunlar standart bütün dillerde aynı
    olan operatörlerdir.Kümeleme operatörleri ise datalar üzerinde
    gruplama yapmamızı sağlayan operatörlerdir.Bu operatörler Between , In
    , Like operatörleridir. Bu operatörlerin hepsini where ile birlikte
    kullanmalıyız.

    Between : Aralıklı sorgulama yapmak istersek kullanabilecegimiz bir
    operatördür.

    Örnek 1 :

    SELECT * FROM ucretler WHERE aylik_ucret BETWEEN 200000000 AND
    300000000

    Bu cümlecik ile 200 ile 300 milyon arasında maaş alanlar listelenecektir.

    Örnek 2 :

    SELECT *

    FROM fat_bsl

    WHERE ft_tar BETWEEN '01.01.1998' and '04.06.1999'

    Bu sorgulamada ise fatura tarihi 01.01.1998 ve 04.06.1999 tarihleri
    arasındaki faturalar listelenmiştir.Verilen tarih formatının sistemde
    kullanılan tarih formatı ile aynı olmasına dikkat edilmelidir. Yoksa
    sizin verdiğiniz tarih doğru olsa bile format farklı ise sorgulamanız
    geriye data döndürmez. (Yukarıdaki sorgulamada başıma geldide ( )



    In : Bu komut ile belli bir kolonun kümesini vererek işlemimizi
    daha kolay bir şekilde yapabiliriz.

    Örnek 3 :

    SELECT * FROM personel WHERE meslek_id IN (1,2,3)

    Buradaki örnek 'te 1,2 veya 3 meslek grubundan herhangi birine dahil
    olan personel listelenemektedir.Bu örnek aşagıdaki şekildeki gibide
    yapabiliriz;

    SELECT * FROM personel

    WHERE meslek_id=1 OR meslek_id=2 OR meslek_id=3

    Like : Bu ise içinde belli bir karakter dizisi bulunan datalara ulaşmak istersek
    kullanabileceğimiz bir operatördür.

    Örnek 4 :

    SELECT * FROM personel WHERE adres LIKE '%İstanbul%'

    Bu sorgulama ile adres alanında İstanbul geçen kayıtları listelemiş oluruz.

    Örnek 5 :

    SELECT * FROM personel WHERE adres LIKE '%İstanbul'

    Bu sorgulama
    ile adres alanının sonunda İstanbul geçen kayıtları listelemiş oluruz.

    Örnek 6 :

    SELECT * FROM personel WHERE adres LIKE 'İstanbul%'

    Bu sorgulama ile adres alanının başında İstanbul geçen kayıtları listelemiş oluruz


    SQL'de Yeni Bir Kayıt Eklemek

    Tabloya yeni bir satır eklemek istersek INSERT INTO sözcüğünü kullanırız. Genel kullanım şekli aşağıdaki biçimdedir ;

    INSERT INTO tablo adı VALUES
    (deger1,deger2,deger3,...)

    Eğer sadece belirli sahalara değer girmek istersek INSERT INTO'yu
    aşağıdaki şekildeki gibide kullanabiliriz.

    INSERT INTO tablo
    adı(kolon1,kolon3,kolon9,kolon7) VALUES
    (deger1,deger3,deger9,deger7)

    Örnek :

    Yeni bir personel eklemek istersek ;

    INSERT INTO personel VALUES
    ('asdf2345','Ahmet','Yıldırım','01.01.1960','Ankar a','E',1,7,1,'ebuziya
    cad. Bakırköy')

    Örnek :

    Yeni bir meslek eklemek istersek ;

    INSERT INTO meslekler VALUES (23,'Belçi',200.000.000)

    Bir tablodan bazı kayıtları başka bir tabloyada aktarabiliriz. Bunun için
    aşağıdaki gibi bir ifade yazmalıyız;

    INSERT INTO tablo1

    SELECT kolon1,kolon2,..

    FROM tablo2

    Örnek :

    INSERT INTO NEW_CUSTOMER

    SELECT NAME,CITY

    FROM CUSTOMER
#19.09.2010 12:07 0 0 0
  • Emeginize Saglik
    Cok güzel Anlatmissiniz
    Tesekkürler
#22.03.2011 10:27 0 0 0
  • tşklerrrrrrrr
#22.03.2011 11:38 0 0 0
  • super bi sekilde anlatmissin cok tessekurler
#23.05.2011 12:21 0 0 0