1. Pendahuluan
MySQL adalah sistem manajemen basis data relasional yang populer dan banyak digunakan dalam berbagai aplikasi web serta sistem basis data. Di antara tipe data yang disediakannya, tipe INT merupakan salah satu yang paling sering dipakai untuk menangani nilai numerik. Artikel ini memberikan penjelasan mendetail tentang tipe INT MySQL. Secara khusus, kita akan menelusuri nilai maksimum yang didukung oleh tipe INT serta cara menggunakannya secara efisien. Dengan membaca artikel ini, Anda akan memperoleh pengetahuan yang diperlukan untuk memanfaatkan tipe INT secara tepat di MySQL.
2. Spesifikasi Dasar Tipe INT
Nilai Maksimum dan Minimum INT
Tipe INT MySQL menggunakan 4 byte (32 bit) penyimpanan, dan rentang nilai yang dapat disimpannya adalah sebagai berikut:
- Signed (SIGNED) :
- Nilai minimum: -2,147,483,648
- Nilai maksimum: 2,147,483,647
- Unsigned (UNSIGNED) :
- Nilai minimum: 0
- Nilai maksimum: 4,294,967,295
Ukuran Penyimpanan INT
Tipe INT selalu menggunakan 4 byte penyimpanan. Ukuran ini tetap konstan terlepas dari nilai yang disimpan. Oleh karena itu, bila Anda tidak perlu menangani rentang numerik yang sangat besar, akan lebih efisien mempertimbangkan tipe data yang lebih kecil (misalnya, TINYINT atau SMALLINT).
Kasus Penggunaan INT
Tipe INT biasanya dipakai dalam skenario berikut:
- Nilai auto‑increment (misalnya, ID pengguna, nomor pesanan)
- Data integer yang digunakan dalam perhitungan atau pemrosesan statistik (misalnya, jumlah persediaan, hitungan klik)
- Data yang direpresentasikan dalam rentang tetap (misalnya, usia atau nilai tes)
Dalam kasus penggunaan tersebut, penting untuk mempertimbangkan rentang numerik yang dibutuhkan serta efisiensi memori.
3. Apa Arti M dalam INT(M)?
Apa Itu Lebar Tampilan (M)?
Di MySQL, M pada INT(M) menandakan “lebar tampilan”. Nilai ini tidak memengaruhi nilai numerik yang sebenarnya disimpan di basis data; melainkan menentukan bagaimana nilai tersebut diformat saat ditampilkan. Contohnya, bila didefinisikan sebagai INT(5), angka akan ditampilkan dengan lebar 5 digit.
Namun, lebar tampilan M hanya memiliki arti dalam kasus berikut:
- Ketika opsi ZEROFILL diaktifkan
- Contoh: Dengan
INT(5) ZEROFILL, bila nilainya123, maka akan ditampilkan sebagai00123.
Catatan Penting tentang ZEROFILL
Saat menggunakan opsi ZEROFILL, karakteristik berikut berlaku:
- Nol di depan secara otomatis ditambahkan di sebelah kiri.
- Atribut
UNSIGNEDsecara otomatis diterapkan.
Oleh karena itu, bila Anda perlu menyimpan nilai negatif, tidak dapat menggunakan ZEROFILL.
Menjelaskan Kesalahpahaman Umum
Banyak pemula keliru menganggap bahwa M membatasi nilai maksimum yang dapat disimpan. Padahal, M hanya memengaruhi format tampilan dan sama sekali tidak berpengaruh pada rentang penyimpanan yang sebenarnya.
4. Perbandingan dengan Tipe Integer Lain
Jenis-jenis Tipe Data Integer dan Rentangnya
MySQL menyediakan tipe integer berikut:
| Type Name | Bytes | Signed Range | Unsigned Range |
|---|---|---|---|
| TINYINT | 1 byte | -128 to 127 | 0 to 255 |
| SMALLINT | 2 bytes | -32,768 to 32,767 | 0 to 65,535 |
| MEDIUMINT | 3 bytes | -8,388,608 to 8,388,607 | 0 to 16,777,215 |
| INT | 4 bytes | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 |
| BIGINT | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 |
Kriteria Pemilihan
Gunakan pedoman berikut saat memilih tipe data yang tepat dalam perancangan basis data:
- Jika rentangnya kecil: Gunakan
TINYINTatauSMALLINTuntuk menghemat memori. - Jika diperlukan rentang yang sangat besar: Gunakan
BIGINT. - Jika penggunaan umum diinginkan:
INTbiasanya merupakan pilihan optimal.
5. Perubahan Sejak MySQL 8.0.17
Penghapusan Lebar Tampilan (M)
Mulai MySQL 8.0.17, “lebar tampilan (M)” untuk tipe integer telah dihapuskan. Perubahan ini diperkenalkan bersamaan dengan penghapusan opsi ZEROFILL, dan kemungkinan akan dihilangkan pada versi MySQL mendatang.
Alasan penghapusan lebar tampilan adalah sebagai berikut:
- Menimbulkan kesalahpahaman:
- Banyak pengguna mengira bahwa
Mmemengaruhi nilai maksimum yang dapat disimpan atau jumlah digit.
- Penggunaan praktis terbatas:
- Karena
Mhanya mengontrol format tampilan, format kini biasanya ditangani di sisi aplikasi, sehingga kebutuhan akanMberkurang.
Penghapusan ZEROFILL
The ZEROFILL option was also deprecated in the same version. Although ZEROFILL was convenient for padding numbers with leading zeros, it is no longer recommended for the following reasons:
- Pendekatan alternatif yang luas:
- Zero-padding can now be easily handled in the application or UI layer.
- Menghindari kebingungan:
- The automatic application of the
UNSIGNEDattribute when usingZEROFILLcaused confusion for beginner users.
How to Adapt to the Deprecation
In response to these deprecations, consider the following approaches in database design:
- Tangani pemformatan di lapisan aplikasi:
- Perform zero-padding and formatting in the application or presentation layer.
- Example: Implement zero-padding using PHP or JavaScript.
- Adopsi desain yang tidak bergantung pada lebar tampilan:
- Define the
INTtype without specifyingMand focus on data accuracy rather than display formatting.
6. Practical FAQ Section
Frequently Asked Questions
Q1. Apa yang terjadi jika saya menyimpan nilai yang melebihi maksimum tipe INT?
A. Di MySQL, mencoba menyimpan nilai di luar rentang tipe INT akan menghasilkan error. Anda harus memilih nilai dalam rentang yang didukung atau beralih ke tipe data dengan rentang yang lebih besar (misalnya, BIGINT).
Q2. Apa perbedaan antara INT dan BIGINT?
A. Tipe BIGINT menggunakan dua kali penyimpanan dibandingkan INT (8 byte) dan menyediakan rentang numerik yang jauh lebih luas. Misalnya, rentang bertanda BIGINT melebihi ±9 quintillion, menjadikannya cocok untuk menangani dataset yang sangat besar.
Q3. Setelah ZEROFILL dihentikan, bagaimana saya harus mengimplementasikan tampilan berisi nol di depan?
A. Disarankan untuk menangani penambahan nol di lapisan aplikasi. Misalnya, di PHP Anda dapat menggunakan fungsi str_pad(), dan di JavaScript Anda dapat menggunakan metode padStart() untuk mengimplementasikan penambahan nol.
Q4. Bagaimana saya harus memilih antara INT dan tipe integer lainnya?
A. Pilih tipe berdasarkan rentang data. Nilai numerik kecil (misalnya, usia atau skor) cocok untuk TINYINT, data skala menengah (misalnya, ID pengguna) cocok untuk INT, dan nilai yang sangat besar (misalnya, data transaksi keuangan) cocok untuk BIGINT.
7. Conclusion
Dalam artikel ini, kami memberikan penjelasan rinci tentang tipe data MySQL INT. Poin-poin utama adalah sebagai berikut:
- Memahami perbedaan antara nilai maksimum dan minimum bertanda serta tidak bertanda dari tipe
INTmenjadi dasar desain data yang tepat. - Penting untuk memahami pendekatan alternatif terhadap opsi “lebar tampilan (M)” dan “ZEROFILL” yang dihentikan serta merancang basis data yang dapat beradaptasi dengan pembaruan MySQL di masa depan.
- Pilih tipe integer yang tepat berdasarkan karakteristik data untuk membangun basis data yang efisien dan mudah dipelihara.
Gunakan artikel ini sebagai referensi untuk mengoptimalkan penggunaan tipe INT Anda dan lebih meningkatkan efisiensi dalam desain basis data MySQL.


