Mysql ve int(11) ile int(X) farkı

Standard

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..

Print Friendly, PDF & Email
Facebooktwitterlinkedin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.