Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

mysql php alan formatı seçimi

merhaba.

1-veri tabanı tasarlar ve veri kaydederken şu konularda napmamı önerirsiniz.

mesela üyeler tablosunu oluştururken

u_id mediumint 

miii yoksa

u_id int(11)



aralarındaki fark ne?


2- veri tabanına girilen bir kaydın YYYY-MM-DD HH-MM-SS şeklinde
yani hem yıl-gün-ay hem de saat verileri kaydolsun.

ben varchar(10) kullanmaktaydım ama bu verimli değilmiş. ilerisi için sorunlara gebeymiş.

bunun için mysql de alan olarak ne seçmem gerekir?

datetime

mııı yoksa

int 

miii?

..teşekkürle şimdiden
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • madpoet adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    84 cevap - 1 soru
    1:
    mediumint daha küçük yer kaplar, row size'ın daha küçük olur ama daha sınırlıdır. Eğer o alanın eksiye düşmeyeceğinden eminsen "unsigned" seçersin sınırın 2 kat artar. tinyint bile birçok yerde iş görebiliyor ama ciddi performans ihtiyacın olmadığı sürece çok önemli değil.

    Zaten sonradan değiştirebiliyorsun. Veritabanı bir süre kullanılıp data biriktikten sonra phpMyAdmin'den propose table structure dersin o sana önerir zaten ona göre değiştirirsin.

    2:
    datetime ya da timestamp kullanabilirsin. integer da kullanabilirsin ama gerek yok bence elinde timestamp diye bişey var zaten. varchar çok gereksiz sana hiçbir faydası yok, zararı çok. Mesela o kayıtlı tarihten 10 gün öncesini çekmek istesen datetime'la çok basit, ya da tarihin gösterim şeklini değiştirmek istesen...
    varchar'la şu tarihten öncesini / sonrasını getir demek bile riskli.
    • can-inlife adlı üyenin fotoğrafı can-inlife
      eline diline sağlık teşekkürler
      11 yıl önce yazılmış
    • can-inlife adlı üyenin fotoğrafı can-inlife
      veri tabanına kaydettiğim iki kaydın tarihleri şunlar

      dun kaydettiğim: 2012-04-29 23:56:38

      bugun kaydettiğim: 2012-04-30 09:20:32

      ---------

      ben bu kayıtları nasıl alabilirim. tarihleri karşılaştırarak.
      *
      $bugun=date("Y-m-d");
      ... where kelime_tar='$bugun'


      **
      $dun = date("Y-m-d", time()-86400);
      ... where kelime_tar='$dun'

      her ikisi de başarısız. nasıl bu kayıtları seçebilirim ?
      11 yıl önce yazılmış
    • madpoet adlı üyenin fotoğrafı madpoet
      Performans çok önemli değilse

      select * from blahbah where date(kelime_tar)='$bugun'
      


      Zira alanları fonksiyon içine alınca index kullanmaz mysql.
      Performans kritikse

      $tarih1 = date('Y-m-d 00:00:00');
      $tarih2 = date('Y-m-d 23:59:59');
      


      select * from blahbah where kelime_tar between '$tarih1' and '$tarih2'
      
      11 yıl önce yazılmış
    • can-inlife adlı üyenin fotoğrafı can-inlife
      üstadsın bişey demiyorum.

      o zaman dün girilen kayıtları da şöyle halledelim:


      $yil="2012";
      $ay=date("m");
      $gun=date("d")-1;

      $tarih1="2012-$ay-$gun "."00:00:00"; echo $tarih1;
      $tarih2="2012-$ay-$gun "."23:59:59"; echo $tarih2;

      select * from blahbah where kelime_tar between '$tarih1' and '$tarih2'

      Allah bilgini arttırsın üstad.
      11 yıl önce yazılmış

Cevaplar

  • deja_wu adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    24 cevap - 5 soru
    mediumint ile int arasında pek bir fark yok bildiğim kadarı ile sonuçta iki sinede bir değer giriyorsun mesela senin vermiş olduğun örnek gibi u_id int(11) gibi ..

    tarih için ise ilerleyen zamanda veri tabanında geri dönük sorgular yapacaksan int(10) kullanmanı öneririm.
    • can-inlife adlı üyenin fotoğrafı can-inlife
      üstad.

      YYYY-MM-DD HH-MM-SS kayıtlarım için int(10) yeter mi?

      YYYY-MM-DD kayıtlarım için yeter sanırım da?
      11 yıl önce yazılmış
    • can-inlife adlı üyenin fotoğrafı can-inlife
      int(3)
      

      dediğimizde maksimum 999 kayıt mı giebiliyoruz?
      bu demek mi bu?
      11 yıl önce yazılmış
    • bensedat18 adlı üyenin fotoğrafı bensedat18
      hayır int(3) demek maksimum 3 basamaklı sayı girilebilir demek.
      11 yıl önce yazılmış
  • besimler adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    10 cevap - 6 soru
    Selamlar 3 en cok 3 basamak demektir dedigini gibi 999. Tarih konusunda bu gune kadar ogrendigim tek birsey var o da tarih senin kullanimina degerlendirmene veya islemenle alakali olmalidir. Ben kaydedilen tarihleri oyle hallere sokuyorum ki... Bu amaci a gore degisir. Herneyse cveritabani degerleri cok onemli olabilir. Fakat herhangi birseyin id si icin 10 degerini vermek sorun olmaz. Hatta hardware problemi cikarmaz. Memory cpu gibi. Bu da demektir ki 999999999 basamak ;)
  • can-inlife adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    3 cevap - 9 soru
    o zaman arkadaşlar:

    veritabanını yer bakımından verimli kullanmak için:

    maksimum hani 10 bin (10.000) kayıt girilecek bir alanı


    u_id smallint
    u_id smallint(5)
    u_id int(5) 
    



    hangisiyle tanımlamak doğrudur.

    smallint->2BYTES,,, int->4BYTES bildiğiniz gibi.
    • bensedat18 adlı üyenin fotoğrafı bensedat18
      çok farkeder mi bilmiyorum ama smallint girmen mümkündür.
      smallint için 32.767 en büyük değerdir. en küçük değer -32.767'dır.
      11 yıl önce yazılmış
    • can-inlife adlı üyenin fotoğrafı can-inlife
      ya anlayamadığım şey şu

      personel_numver int(2) yazıyorum. sonra içine 999 999 999 yazıyorum.
      kırpmıyor.

      bakıyorum personel_number da 999 999 999 değeri var.

      bu ne demek. anlamadım. parantez içindeki rakamın etkisi yok mu ?
      11 yıl önce yazılmış