• 20-07-2009, 10:44:32
    #1
    Üyeliği durduruldu
    öncelikle bu konuda basit sql cümleciklerini kullanmıyacagım direk profesyonellige adım atmak isteyen arkadaşlar için bu konu bazı scriptleri inceledigimiz zaman bizimkinden farklı gelir bazı komutları bende bu konuda takımıştım vede türkçe kaynak yok denilebilecek kadar az
    ilk komutumuz LEFT JOIN

    nedir bu left join komutu ? şöyle bir örnek vereyim bir forum yazıyorsunuz forum konusuna girdiginiz zaman
    uyeler tablosu
    konu başlıgı tablosu
    mesajlar tablosu
    vbulletin gibi (itrader rep imza) gibi bilgileri almak için bir sürü sql sorgusu yazarız buda bizim sayfa açılma süresini arttırır
    bunun yerine şu şekil bir kullanım bizim için daha uygundur
    select * from _konular LEFT JOIN _mesajlar
    ON _konular.id= _mesajlar.konu_id
    çogaltırsak (sadece 2 örnek verdim) php bun tabloları hafızasında tutuyor kullanımıza gelincede
    while($row=mysql_fetch_assoc($sql)):
    echo 'Konu başlıgı  :'.$row["baslik"].'<br>';
    echo 'Mesajı yazan :'.$row["yazan"].'<br>';
    endwhile;
    olarak kullanırsak karmaşık kodlardan vede zamandan tasarruf etmiş oluruz
    diger dersler konu altından devam edicektir..
  • 20-07-2009, 10:52:45
    #2
    Üyeliği durduruldu
    sum komutu sayısal degerleri toplamaya yarar örnegin bir oyun siteniz var toplam oynanmayı saymak istiyorsunuz bunu aşagıdaki cümlecik ile halladebiliriz

    SELECT SUM(hit) FROM _oyunlar
    olarak ekrana çıktılarsak oyunlar tablosundaki hit sutunundaki tüm degerleri toplam ve bize çıktılar..
  • 20-07-2009, 10:55:59
    #3
    Üyeliği durduruldu
    order by cümlecigi bize listeleme türünü sorar örnek vermek gerekirse en çok oynan oyunları listelemek istiyorsunuz bunu için

    select id,baslik,hit from _oyunlar order by hit desc
    cümlecigi ile verileri sondan listeleyebiliriz

    desc = en büyük veriden listeler
    asc = en küçük veriden listeler
  • 20-07-2009, 10:59:33
    #4
    Üyeliği durduruldu
    limit sözlügü ise oyun sitesinden girmişken ondan devam edelim ana sayfada sadece 10 veriyi listelemek istiyorsunuz bunu nasıl yapabiliriz bunu aslında php ile yapabiliriz fakat verileri komple döndürür vede hafızasında tutar buda bir ölüm demektir büyük oyun siteleri için bunun için şu cümlecigi kullanıyoruz

    select * from oyunlar limit 10
    ilk 10 veriyi alır bir önceki dersteki order by cümlecigini kullanırsak

    select * from oyunlar order by id desc limit 10
    son 10 veriyi alır

    select * from oyunlar limit 10,5
    ilk 10 veriden sonraki 5 veriyi alır..
  • 20-07-2009, 11:04:43
    #5
    Üyeliği durduruldu
    group by cümlecigi tekrar bir örnek ile konuya girelim yine oyun sitesinden örnek verelim örnegin uyeler tablomuz ayrı oyunlar tablomuz ayrı biz bunları en çok oyun ekleyen üyeden en az a dogru sıralıcaz aslında bu kadar detaya girmeden 2 3 cümlecik ile yazabiliriz fakat profesyonel coder az kod çok iş yapar direk örnek cümlecigimize geçelim

    SELECT ekleyen, COUNT(ekleyen) as toplamda FROM oyunlar  group by oyun order by toplamda desc
  • 20-07-2009, 11:10:30
    #6
    Üyeliği durduruldu
    mysql_real_escape_string bu komut mysql ile alakalı olmayıp ama bazı karşılaşacagımız hataları önler örnegin (yine oyun sitesi ) admin'imiz sitesine oyun ekliyecek eklerken mario'nun manitasını kurtar ve.. (tek tırnak kullanımı)

    gibi bunu direk hiç bir süzgeçten çegirmeden eklersek ekranda near ' gibi bir hata alırız bunun sebebi ise veri eklerken komutumuz şu

    insert into oyunlar (baslik) values ('$baslik')
    olarak yaparsak vede admin mario'nun manitasını kurtar gibi bir başlık girerse direk sorgumuz

    insert into oyunlar (baslik) values ('mario'nun manitasını kurtar)
    tırnaktan sonrası tanımsız olarak görüncek ve veri eklemiyecek biz böyle bir hata ile karşılaşmamak istiyorsak

    $baslik = mysql_real_escape_string($_POST["baslik"]);
    olarak yapıp eklersen ' tırnak veya çift tırnakların önüne ters slash koyar \' mysql de tek tırnagı ters slash oldugu için okumaz kodumuz çalışır..
  • 20-07-2009, 11:16:22
    #7
    Üyeliği durduruldu
    DROP TABLE cümlecigi veri tabanından belirtilen tabloyu kaldırır buna bir örnek bulamadım

    DROP TABLE oyunlar
    veritabanından oyun tablosunu kaldırır..
  • 20-07-2009, 11:17:56
    #8
    Üyeliği durduruldu
    create database yeni bir veritabanı oluşturur örnegin scriptinizde install dosyası var siz hiç dosya açıp yapmamk istiyorsanız sadece mysql user ve pass alıcaksanız ve veritabanını siz oluşturcaksanız bu cümlecigi kullanabiliriz

    CREATE DATABASE 555_oyun
  • 20-07-2009, 11:33:07
    #9
    Üyeliği durduruldu
    fulltext cümlecigi aslında bir çok sistem arama için like kullanıyor ama mysql in fulltext i yanında çok basit kalıyor sebebi ise fulltext için daha hızlı ve dogru sonuçlar vermesidir bir örnek ile açıklıyacak olursak

    SELECT * FROM oyunlar WHERE  MATCH(baslik) AGAINST  ('araba')
    normal veritabanı yapımız innoDB dir full text özelligini kullanabilmek için tablo yapınız myisam olmalıdır.