Saya bertanya-tanya apa perbedaan antara BigInt
,, MediumInt
dan Int
... tampaknya jelas bahwa mereka akan memungkinkan untuk jumlah yang lebih besar; Namun, saya dapat membuat Int(20)
atau atau BigInt(20)
itu akan membuatnya tampak tidak selalu tentang ukuran.
Beberapa wawasan akan menjadi luar biasa, hanya semacam penasaran. Saya telah menggunakan MySQL untuk sementara waktu dan mencoba menerapkan kebutuhan bisnis ketika memilih jenis, tetapi saya tidak pernah mengerti aspek ini.
bar INT ZEROFILL(20)
. Itu akan jauh lebih jelas. Tapi keputusan itu sudah dibuat sejak lama, dan mengubahnya sekarang akan merusak jutaan instalasi basis data.Angka dalam tanda kurung dalam deklarasi tipe adalah lebar tampilan , yang tidak terkait dengan rentang nilai yang dapat disimpan dalam tipe data. Hanya karena Anda dapat mendeklarasikan
Int(20)
tidak berarti Anda dapat menyimpan nilai hingga 10 ^ 20 di dalamnya:Untuk daftar nilai maksimum dan minimum yang dapat disimpan di setiap tipe data MySQL, lihat di sini .
sumber
Kutipan :
sumber
Sejauh yang saya tahu, hanya ada satu perbedaan kecil ketika Anda mencoba memasukkan nilai yang di luar jangkauan.
INT(20)
sistem ini berarti mengalokasikan dalam memori minimum 20 bit. Tetapi jika Anda akan memasukkan nilai yang lebih besar dari2^20
itu, itu akan berhasil disimpan, hanya jika kurang dariINT(32) -> 2147483647
(atau2 * INT(32) -> 4294967295
untukUNSIGNED
)Contoh:
BIGINT(20)
sistem ini berarti mengalokasikan dalam memori minimum 20 bit. Tetapi jika Anda akan memasukkan nilai yang lebih besar dari2^20
itu, itu akan berhasil disimpan, jika kurang dariBIGINT(64) -> 9223372036854775807
(atau2 * BIGINT(64) -> 18446744073709551615
untukUNSIGNED
)Contoh:
sumber
Saya ingin menambahkan satu hal lagi yaitu, jika Anda menyimpan jumlah yang sangat besar seperti 902054990011312 maka orang dapat dengan mudah melihat perbedaan
INT(20)
danBIGINT(20)
. Dianjurkan untuk menyimpan diBIGINT
.sumber
Mari kita beri contoh untuk int (10) satu dengan kata kunci zerofill, satu tidak, tabel suka itu:
Mari kita masukkan beberapa data:
Kemudian
Kita bisa melihatnya
dengan kata kunci
zerofill
, num kurang dari 10 akan mengisi 0, tetapi tanpazerofill
itu tidak akanKedua dengan kata kunci
zerofill
, int_10_with_zf menjadi tipe int yang tidak ditandatangani, jika Anda memasukkan minus, Anda akan mendapatkan kesalahanOut of range value for column.....
. Tapi Anda bisa memasukkan minus ke int_10. Juga jika Anda memasukkan 4294967291 ke int_10 Anda akan mendapatkan kesalahanOut of range value for column.....
Kesimpulan:
int (X) tanpa kata kunci
zerofill
, sama dengan rentang int -2147483648 ~ 2147483647int (X) dengan kata kunci
zerofill
, bidangnya sama dengan rentang int tak bertanda 0 ~ 4294967295, jika panjang num kurang dari X akan mengisi 0 ke kirisumber