MySQL üzerinde yanlış fikirlere sahip olunabilir ve bilinenin aksine int(5) ve int(11) aynı sayıları tutabilir.
Örneğin 1234567 sayısını int(5) veya int(11) olarak tanımlanmış bir alanda tutabiliriz.
Sayı Değerlerini belirten kısım mysql veri tipidir.
Parantez içinde belirtilen değerler zerofill özelliği kullanılırsa aktif hale geliyor ve değerleri gösterirken karşımıza çıkıyor.
Şimdi size veritabanında kapladığı alanları belirtmek isterim;
Tip | Kaç Byte | Signed Aralığı | Unsigned Aralığı |
tinyint | 1 byte | -128 ile 127 | 0 ile 255 |
smallint | 2 byte | -32768 ile 32767 | 0 ile 65535 |
mediumint | 3 byte | -8388608 ile 8388607 | 0 ile 16777215 |
int | 4 byte | -2147483648 ile 2147483647 | 0 ile 4294967295 |
bigint | 8 byte | -9223372036854775808 ile 9223372036854775807 | 0 ile 18446744073709551615 |
Şimdi size daha iyi anlamanız için bi kaç örnek gösteriyorum:
mysql> create table t (t int(3) zerofill); Query OK, 0 rows affected (0.00 sec) mysql> insert into t set t = 10; Query OK, 1 row affected (0.00 sec) mysql> select * from t;
+——+
| t |
+——+
| 010 |
+——+
1 row in set (0.11 sec)
Default olarak Zerofill , int(10) ile aynıdır:
mysql> create table t (t int zerofill); Query OK, 0 rows affected (0.02 sec) mysql> insert into t set t = 10; Query OK, 1 row affected (0.02 sec) mysql> select * from t;
+————+
| t |
+————+
| 0000000010 |
+————+
1 row in set (0.08 sec)
zerofill olmadan:
mysql> create table t (t int); Query OK, 0 rows affected (0.01 sec) mysql> insert into t set t = 10; Query OK, 1 row affected (0.01 sec) mysql> select * from t;
+——+
| t |
+——+
| 10 |
+——+
1 row in set (0.00 sec)
Peki zerofill ne gibi durumlarda kullanılır? Fatura numarası, seri kodu gibi sahalarda zerofill kullanabilirsiniz. Örneğin Ürün kodunun XY000001 olarak saklanacağı zamanlarda işinize yarayabilir.
Yani özetle; int(3) de, int(10) da 4 byte yer açar. parantez içindeki değer zerofill de görüntülenecek basamak sayısıdır..
Umarım açıklayıcı olabilmişimdir , iyi çalışamalar herkese..