Mysql Veri Tiplerinde Length Parametresi

MySql veri tipleri hakkındaki bir yanlışımı az önce öğrendim ve bir çok kişinin de bu konuyu yanlış bildiğini düşünüyorum.

Bildiğiniz gibi char, varchar, tinyint, int, bigint gibi veri tiplerinin hepsi length (size veya uzunluk olarak da geçer) parametresi alır. char ve varchar tipleri için bu değeri tanımladığınız zaman, tanımlanan değer kadar karakter saklanır. Örnek olarak varchar(3) olarak tanımlarsak saklanan değerler aşağıdaki gibi olabilir;

  • abc
  • tef
  • ağa

Doğal olarak int(3) değeri için de saklanacak değerin -999 ve 999 arasında olabileceği aklımıza geliyor. Halbuki int(3)’ün sakladığı değer (4 byte) değişmiyor. Değişen tek şey verinin gösterim uzunluğu oluyor. Yani kayıt ettiğiniz int değeri veritabanında yine 4 byte kaplarken yalnızca sayının 3 hanesi gösteriliyor.

Peki o zaman uzunluk tanımlamanın ne faydası var. Eğer uzun tanımlarsanız; sayısal tipler için tanımlanan uzunluk değeri, zerofill (sıfırla doldur) özelliği ile birlikte kullanıldığında aşağıdaki gibi getirilir. (Aşağıdaki örnek int(4) için verilmiştir.)

  • 0005
  • 0004
  • 0011

Kaynaklar:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-attributes.html
http://dev.mysql.com/doc/refman/5.0/en/integer-types.html

Leave a Reply

Your email address will not be published. Required fields are marked *