Header Ads

ad728
  • Breaking News

    SQL Komutları,SQL Örnekleri

    SQL ile belirli komutlar yoluyla veri tabanına veri gönderilmesi, verinin işlenmesi, düzenlenmesi, silinmesi gibi işlemler yapılır.

    Bunlara bir kaç örnek :

    Tablodaki Verileri Sıralama – ORDER BY :

    Verileri Sıralı olarak almak için ORDER BY ifadesi kullanılır. Bu ifadeden sonra sıralamanın hangi alana göre yapılacağı yazılır ve sıralamanın artan mı yoksa azalan mı olduğunu belirlemek için ASC ve DESC ifadeleri kullanılır. A dan Z ye doğru sıralamak için ASC kullanılır.

    SELECT alanlar FROM tablo_adi ORDER BY alan_adi ASC

    Z den A’ya doğru sıralama için DESC kullanılır.

    SELECT alanlar FROM tablo_adi ORDER BY alan_adi DESC

    Sıralama biçimi belirtilmezse  A’dan Z’ye sıralama yapılır.

    Sıralama işleminde birden fazla alana göre de sıralama yapılabilir. Örneğin önce soyada sonra ada ve unvan alanına göre sıralama yapalım.

    SELECT soyad,ad,unvan FROM personel  ORDER BY soyad,ad,unvan

    Burada birinci ölçü soyad alanıdır. Soyad alan içerikleri aynı olduğunda Ad alanı, o da aynı olduğunda unvan alanına göre sıralanır.

    Birden fazla alana göre sıralama yaparken bütün alanlar artan ya da azalan sırada olmak zorunda değildir. Örneğin soyad alanına göre artan sıralama yaparken Ad alanına göre azalan sıralama yapılabilir.

    SELECT soyad,ad FROM personel ORDER BY soyad ASC, ad DESC

    Burada birinci ölçü soyad alanıdır ve artan sırada istenmiştir.Soyad aynı olduğunda Ad alanına göre azalan sıralama yapılır.

    WHERE ile Veri Filtreleme :

    Tabloda bulunan verileri istediğimiz belli şartlara bağlı olarak listeleyebiliriz. Bu şartları oluşturmak için WHERE kullanılır.

    SELECT alanlar FROM tablo_adi WHERE şart_ifadesi

    Örneğin Başlık alanında “Satış Danışmanı” yazan kayıtları listelemek için sorgu cümlemiz şu şekilde olacaktır.

    SELECT * FROM personel WHERE başlık=”Satış Danışmanı”

    Örnek 2:Görevi yonetici olan ve gorev suresi 25 yıldan fazla olan personel soyad,ad, görevsüresini Adına göre artan şekilde listeleyen SQL sorgusunu yazınız.

    SELECT soyad,ad,gorevsuresi FROM personel WHERE gorev=”Yonetici” AND gorevsuresi>25 ORDER BY ad ASC

    Şartlı Sorgulama Operatörleri:

    Şart ifadesi olarak kullanabileceğimiz operatörler şunlardır.



    Operatör Anlamı
    Küçük
    Büyük
    <= Küçük eşit
    >= Büyük Eşit
    = Eşit
    <>  Eşit Değil
    And Ve anlamındadır. İki şartın sağlanmasıİçin kullanılır.
    Or Veya anlamındadır.Sadece bir şartın sağlanması durumunda kullanılır.
    Not Şartın olumsuz olması durumunda(olmaması) kullanılır.
    Between x AND y X ve y değerleri arasındaki değerler için kullanılır.
    LIKE Bir alanın başlangıç, bitiş ya da orta kısımlarını süzer.
    NOT LIKE LIKE ile verilen şartın dışındakileri süzer
    IN Parantez içindeki değerleri süzer
    NOT IN Parantez içinde verilen değerlerin dışındakileri süzer.
    != Eşit Değil


    Örneğin doğum tarihi 1.1.1960 dan küçük olanları listelemek için sorgu cümlemiz şöyle düzenlenmelidir.
    SELECT * FROM uyeler WHERE dogumtarihi<#1/1/1960#

    Şartlarımızı yazarken AND, OR, NOT gibi mantıksal ifadeleri kullanarak birden fazla şartı da verebiliriz.

    Örneğin doğum tarihi 1.1.1960 dan büyük ve bölümü Dahiliye olanları listelemek için SQL cümlemiz :
    SELECT * FROM uyeler WHERE dogumtarihi>#1/1/1960# AND bolum=”Dahiliye”

    BETWEEN kullanımı:
    İki aralık belirtirken bu şartı between deyimi ile de kullanabiliriz.
    Örneğin 1.1.2012 ile 1.2.2012 tarihleri arasında satılan ürünleri listelemek için sorgumuz :
    SELECT * FROM satışlar WHERE satıstarihi BETWEEN #1/1/2012# AND #1/2/2012#

    IN Kullanımı :
    Birden fazla şartı belirtirken IN deyimini de kullanabiliriz. Örneğin bolum içerisinde ‘Elektrik’,’Bilişim’,’Makine’ olanları bulmak için  SQL cümlemiz:
    SELECT * FROM ogrenciler WHERE bolum IN (‘Elektrik’,’Bilişim’,’Makine’)
    Aynı sorguyu OR kullanarak da yazabiliriz.
    SELECT * FROM ogrenciler WHERE bolum=’Bilişim’ OR bolum=’Elektrik’ OR bolum =’Makine’

    NOT IN Kullanımı:
    IN parantezinde verilen değerlerin dışındaki değerleri içeren kayıtları listeler.
    Örneğin bolum içerisinde ‘Elektrik’,’Bilişim’,’Makine’ olmayanları bulmak için  SQL cümlemiz:
    SELECT * FROM ogrenciler WHERE bolum NOT IN (‘Elektrik’,’Bilişim’,’Makine’)

    LIKE Kullanımı:
    Benzer kayıtları listelemek için LIKE deyimi kullanılır. LIKE operatörü yardımcı karakterler ile kullanılarak daha geniş bir sorgu imkanı sağlar.

    Yardımcı Karakter Kullanım Biçimi Açıklama
    % %van Birden fazla karakterleri temsil eder.Tatvan,Elvan,Tavan,Kavan Gibi
    Van% Vanlı, Vanilya gibi
    %van% İlvan,Tatvan,Karavana gibi
    - z-p Tek karakterleri temsil eder.Zip,Zap,Zep gibi…
    [  ] Ahmet[pk ]ara Köşeli parantez içindeki tek karakteri temsil eder. Ahmet Para ya da Ahmet Kara gibi sonuçları listeler.
    [ ^ ] %p[ ^a ]% Köşeli parantez içinde yazılan karakterleri içermeyen sonuçları listeler.Burada P den sonra a karakteri kesinlikle yer almayan kelimeleri listeleyecektir.
    [ - ] [a-d]% Bir aralıktaki karakterlerle başlayan sonuçları listeleyecektir. Burada a,b,c,d ile başlayan kelimeler listelenecektir.
    # N1## Sayısal olan tek karakterleri simgeler. Burada N100 ya da N124 gibi sonuçlar bulunacaktır. N10 ya da N1000 gibi sonuçlar bulunmayacaktır.

    Örnek : Bir Harf ile başlayan kayıtları sorgulama
    Örneğin soyadı D harfi ile başlayan kayıtları listelemek için SQL cümlesi:
    SELECT * FROM ogrenciler WHERE soyad LIKE ‘D%’
    Burada LIKE ‘%D’ şeklinde kullanılırsa sonu D harfi ile bitenler listelenir.
    LIKE %D% şeklinde kullanılırsa içinde D harfi geçenler listelenir.
    Örneğin Adı alanında içerisinde ‘an’ harfi geçmeyen kayıtların ad ve soyad bilgilerini Adına göre artan şekilde listelemek için
    SELECT ad,soyad FROM ogrenciler WHERE ad NOT LIKE ‘%an%’ ORDER BY ad ASC
    Örneğin Soyad alanı içinde b,c,d,e,f ile başlayan kişilerin soyad ve ad bilgilerini listeleyen SQL sorgusu:
    SELECT soyad,ad FROM ogrenciler WHERE soyad LIKE ‘[b-f]%’

    NULL DEĞERLER
    Boş kayıtları bulmak için IS NULL ifadesi şart olarak kullanılır. Örneğin soyadı girilmeyen kayıtların tüm bilgilerini listelemek için
    SELECT * FROM ogrenciler WHERE soyad IS NULL

    IS NOT NULL
    Boş olmayan kayıtları listelemek için IS NOT NULL kullanılır. Örneğin soyad alanı boş olmayan kayıtları listelemek için
    SELECT * FROM ogrenciler WHERE soyad IS NOT NULL

    Örnek 1: Personel veritabanında uyeler tablosundan Doğum tarihi 1 Ocak 1980 ile 1 Ocak 1995 tarihleri arasında olan personelin adsoyad,bolum ve maaş bilgilerini maaşına göre artan şekilde sıralayan SQL cümlesi:
    SELECT adsoyad,bolum,maas
    FROM uyeler WHERE dogumtarihi BETWEEN #01/01/1980# AND #01/01/1995# ORDER BY maas ASC;

    Örnek 2: Uyeler tablosundan maası 2500 den fazla ve 3000 den az olan personel adsoyad,bölüm,maaş bilgilerini Adsoyadına tekrarsız maaşına göre azalan şekilde listeleyen SQL sorgusu
    SELECT adsoyad,bolum,maas DISTINCT adsoyad
    FROM uyeler
    WHERE maas BETWEEN 2500 AND 3000 ORDER BY maas DESC

    Örnek 3:uyeler tablosundan bütün kişileri adsoyad alanına göre artan maaşına göre azalan şekilde listeleyen SqL Sorgusu
    SELECT *
    FROM uyeler
    ORDER BY adsoyad ASC, maas DESC;

    Örnek 4:uyeler tablosundan bütün kişileri maaşına göre azalan ve adsoyad alanına göre artan şekilde listeleyen SQL Sorgusu
    SELECT *
    FROM uyeler
    ORDER BY maas DESC , adsoyad ASC;

    Örnek5: Adres alanı  içinde Çumra Kelimesi geçen kayıtların adsoyad ve adresini listeleyen SQL sorgusu
    SELECT adsoyad,adres
    FROM uyeler WHERE adres LIKE ‘*Çumra*’

    Örnek 6 : Adresi Çumra olmayan kayıtları adsoyad alanına göre artan şekilde listeleyen SQL Sorgusu
    1.Yöntem:
    SELECT *
    FROM uyeler
    WHERE adres <>’Çumra’
    2.Yöntem:
    SELECT *
    FROM uyeler
    WHERE adres NOT LIKE ‘Çumra’

    Örnek 7: Adresi içerisinde Çumra kelimesi geçmeyen veya maaşı 5000 ile 3000 arasında olan kişileri adsoyad, adres ve maaş bilgilerini maaşına göre artan şekilde listeleyen SQL sorgusu
    SELECT adsoyad,adres,maas
    FROM uyeler
    WHERE adres NOT LIKE ‘*Çumra*’ OR maas BETWEEN ’5000′ AND ’3000′ ORDER BY maas ASC;

    İSTATİSTİKSEL İŞLEMLER YAPMA:
    Veritabanındaki bir alanda bulunan verilerin toplamını, ortalamasını, en büyük değeri veya en küçük değeri bulmak için istatistik amaçlı olarak kullanılan max, min, count, sum ve avg gibi fonksiyonlar kullanılır. Bu fonksiyonlar genellikle Group By cümlesi ile kullanılır.

    MAX :
    Max alandaki en büyük değeri verir. Örneğin Ürünler tablosunda fiyatı en yüksek olan ürünü bulan SQL sorgusu:
    SELECT MAX(fiyat) AS enyuksekfiyat FROM urunler

    Aynı ifadeyi şartlı olarak da yazabiliriz.
    SELECT MAX(fiyat) AS enyuksekfiyat FROM urunler WHERE kategori=Anakart

    MİN:
    Min Alandaki en düşük değeri verir.
    Örneğin SELECT MIN(fiyat) AS endusukfiyat FROM urunler
    Veya
    SELECT MIN(fiyat) AS endusukfiyat FROM urunler WHERE kategori=Anakart
    Gibi.

    AVG:
    AVG bir sütundaki değerlerin ortalamasını verir.
    Örneğin ürünler tablosundaki ürünlerin fiyat ortalamasını veren SQL sorgusu
    SELECT AVG(fiyat) AS ortalamafiyat FROM urunler
    Ya da
    SELECT AVG(fiyat) AS anakartortalamafiyat FROM urunler WHERE kategori=Anakart

    SUM:
    SUM bir alandaki değerlerin toplamını verir. Örneğin Ürünler tablosundaki ürünlerin fiyatlarının toplamını veren SQL Sorgusu
    SELECT SUM(fiyat) AS toplamfiyat FROM urunler WHERE kategori=’Anakart’

    COUNT:
    Count bir tablodaki kayıt sayısını listeler. Örneğin ürünler tablosundaki kayıt sayısı aşağıdaki gibi olacaktır.
    SELECT COUNT(*) AS kayitsayisi FROM urunler
    Örneğin fiyatı 20 TL den büyük olan ürünlerin sayısını aşağıdaki gibi bulabiliriz.
    SELECT COUNT(*) AS kayitsayisi FROM urunler WHERE fiyat>20

    Hangi Şehirde Kaç Kişi Yaşıyor?
    Bir şehirde kaç kişinin yaşadığını bulmak için aşağıdaki gibi bir sorgu kullanabiliriz.
    SELECT adres, COUNT(*) AS kisi FROM uyeler GROUP BY adres  

    Örnekler
    Örnek 1:Uyeler Maaşı en yüksek olan kişinin maaşını bulan SQL Sorgusu
    SELECT MAX(maas) AS enyuksekmaas FROM uyeler

    Örnek 2: Bölümü KBB olan kişilerden maaşı en yüksek olan kişinin maaşını listeleyen SQL Sorgusu
    SELECT MAX(maas) AS enyuksekmaas FROM uyeler WHERE bolum=’KBB’

    Örnek 3: Bölümü Göz olan kişilerden maaşı en düşük olan kişinin maaşını listeleyen SQL Sorgusu
    SELECT MIN(maas) AS endusukmaas FROM uyeler WHERE bolum=’Göz’

    Örnek 4: Uyeler tablosundaki maaşların ortalamasını veren SQL Sorgusu
    SELECT AVG(maas) AS ortmaas
    FROM uyeler;

    Örnek 5: Bölümü ‘Dahiliye’,’Ortopedi’veya ‘Kardiyoloji’ olmayan kişilerin maaşlarının toplamını veren SQL Sorgusu
    SELECT SUM(maas) AS toplammaas
    FROM uyeler WHERE bolum NOT IN (‘DAhiliye’,'Ortopedi’,'Kardiyoloji’);

    Örnek 6 : Adres alanı içerisinde ÇUMRA kelimesi geçenlerin sayısını veren SQL sorgusu
    SELECT COUNT(*) AS kisi FROM uyeler WHERE adres LIKE ‘*Çumra*’

    Örnek 7 : Adresi  ÇUMRA olan kişilerin sayısını veren SQL sorgusu
    SELECT  COUNT(*) AS kisi
    FROM uyeler WHERE adres=’Çumra’;

    Verileri Gruplandırma – GROUP BY
    GROUP BY deyimi ile verileri belirli alanlara göre gruplandırabiliriz.
    SELECT alanlar FROM Tablo_adi WHERE şart_ifadesi GROUP BY alan_adi

    Örneğin Ürünler tablosundaki ürünlerin toplam fiyatlarını Ürün_id sutünuna göre aşağıdaki gibi gruplandırabiliriz.
    SELECT ürün_id, SUM(urunfiyati)  AS toplamfiyat FROM urunler GROUP BY urun_id

    Örnek : Personel tablosundaki kişilerin bölümlerine gruplandırılmış bir şekilde göre toplam maaşlarını bulan SQL sorgusu:
    SELECT bolum, SUM(maas) AS toplammaas FROM personel GRUP BY bolum

    Örnek: 3 Mayıs 2012 tarihinde yapılan satışların ürün kategorisine göre gruplandırılmış bir şekilde elde edilen para miktarını veren SQL sorgusu
    SELECT urunkategori, SUM(fiyat) AS toplamfiyat FROM satışlar WHERE tarih=’03/05/2012’ GROUP BY urunkategori

    Örnek: Nisan ayında yapılan satışlardan ürün kategorisine göre gruplandırılmış bir şekilde elde edilen para miktarını veren SQL sorgusu
    SELECT urunkategori, SUM(fiyat) AS toplamfiyat FROM satışlar WHERE tarih BETWEEN #01/04/2012# AND #31/04/2012# GROUP BY urunkategori

    HAVING KULLANIMI:
    Grup içinden sadece belirli şartlara sahip elemanları seçmek için kullanılır. Örneğin fiyat toplamı 100 TL yi geçen ürünlerin listesini ürün kategorisi sütununa göre aşağıdaki gibi gruplandırabiliriz.
    SELECT  ürün_id, SUM(fiyat) AS toplamfiyat FROM urunler GROUP BY ürün_id HAVING SUM(fiyat)>100

    Örnek: Maaşları toplamı 6000 TL yi geçen kişilerin bölümlerini ve maaşları toplamını bölümlerine göre gruplandırarak listeleyen SQL sorgusu:
    SELECT bolum, SUM(maas) AS toplammaas
    FROM uyeler GROUP BY bolum  HAVING SUM(maas)>=6000;

    Örnek:  Üyeler tablosundan aynı şehirde oturan kişi sayısının 3 ten büyük olanların sayıları ve şehir isimlerini listeleyen SQL sorgusu.
    SELECT şehir,COUNT(*) AS kişi FROM üyeler GROUP BY şehir HAVING COUNT(*)>3

    ALANLAR ÜZERİNDE İŞLEM YAPMA:
    Veritabanında gerçekte bulunmayan alanları diğer alanlar üzerinde işlem yaparak oluşturabiliriz. Örneğin Günlük_Satışlar tablosunda FIYAT ve ADEDİ alanları olsun ama TUTUAR alanı bulunmasın. TUTAR alanı FIYAT ile ADEDİ çarpımından oluşacağı için bu işlemi yaparak şöyle bir sütun oluşturabiliriz.

    SELECT adısoyadı, aldığıürün,adedi,fiyatı,(adedi*fiyatı) AS tutarı FROM Günlük_Satışlar
    Buradaki  (adedi*fiyatı) AS tutarı ifadesi fiyat ve adedi alanlarının çarpılarak Tutarı isimli alanda gösterileceğini belirtir. Bu işlem sonucunda tabloya Tutarı alanı eklenmez. Sadece ekranda bir sütun olarak listelenir.

    Böylece tabloda olmayan ama kullanıcıya göstermek istediğimiz bilgileri hesap yoluyla oluşturabiliriz. Diğer alanlar üzerinde işlem yapılarak oluşturulabilecek alanları fazla yer kaplamaması için veritabanına yazmak istemiyorsanız bu yöntemi kullanarak işlemler oluşturabiliriz.
    Aynı örneği geliştirerek tablomuzda olmamasına rağmen KDV ve TOPLAM_TUTAR alanlarını da oluşturabiliriz.

    SELECT adısoyadı, adlığıürün,adedi,fiyatı, (adedi*fiyatı) AS TUTARI, (adedi*fiyatı*0.18) AS KDV, (adedi*fiyatı*1.18) AS TOPLAM_TUTARI FROM Günlük_Satışlar







    Hiç yorum yok

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728