Mengenal tipe data utama MySQL (angka, desimal, teks, tanggal, boolean, enum), cara memilih yang paling cocok, dan kesalahan umum seperti menyimpan uang sebagai FLOAT.
Kenapa tipe data penting?
Setiap kolom harus punya tipe, yaitu jenis isi yang boleh disimpan. Tipe yang tepat membuat data lebih hemat tempat, lebih cepat dicari, dan lebih aman (kamu tidak bisa menyimpan huruf di kolom umur). Anggap tipe data seperti wadah: gelas untuk air, kotak untuk sepatu — pilih sesuai isinya.
1. Bilangan bulat
| Tipe | Rentang (bertanda) | Cocok untuk |
TINYINT | -128 s.d. 127 | Status kecil, flag 0/1 |
SMALLINT | -32.768 s.d. 32.767 | Tahun, jumlah kecil |
INT | ±2,1 miliar | Pilihan umum: id, stok, jumlah |
BIGINT | ±9,2 triliun | Data raksasa, id sangat banyak |
2. Bilangan desimal
DECIMAL(10,2) — angka persis: total 10 digit, 2 di antaranya di belakang koma. Pilihan wajib untuk uang.
FLOAT / DOUBLE — angka pecahan pendekatan (cepat, tapi ada pembulatan kecil). Cocok untuk data ilmiah, bukan uang.
Mitos berbahaya: menyimpan uang di FLOAT. Hitung 0.1 + 0.2 di banyak sistem hasilnya 0.30000000000000004. Pada ribuan transaksi, selisih kecil itu menumpuk jadi laporan keuangan yang tidak cocok. Gunakan DECIMAL, atau simpan dalam satuan terkecil dengan INT (misal rupiah utuh).
3. Teks
| Tipe | Keterangan |
CHAR(n) | Panjang tetap n karakter. Cocok untuk kode pasti, mis. kode negara CHAR(2). |
VARCHAR(n) | Panjang berubah-ubah sampai n. Pilihan umum untuk nama, email, judul. |
TEXT | Teks panjang (artikel, deskripsi, sinopsis) sampai 64 KB. Ada juga MEDIUMTEXT dan LONGTEXT. |
4. Tanggal & waktu
| Tipe | Format | Contoh |
DATE | YYYY-MM-DD | 2024-03-15 (tanggal lahir, tanggal pesan) |
TIME | HH:MM:SS | 14:30:00 |
DATETIME | tanggal + jam | 2024-03-15 14:30:00 (waktu kejadian) |
TIMESTAMP | seperti DATETIME, otomatis mengikuti zona waktu | kapan baris dibuat/diubah |
5. Lain-lain
BOOLEAN — benar/salah. Di MySQL sebenarnya alias TINYINT(1): 0 = salah, 1 = benar.
ENUM('baru','lunas','batal') — hanya boleh salah satu dari daftar.
JSON — menyimpan data berbentuk JSON.
Jurus memilih cepat
| Data | Tipe yang tepat |
| Nomor id | INT (atau BIGINT) |
| Nama, email, alamat singkat | VARCHAR(100) dsb. |
| Harga, saldo | DECIMAL(12,2) atau INT |
| Nomor telepon | VARCHAR(20) — bukan INT, karena angka 0 di depan akan hilang! |
| Tanggal lahir | DATE |
| Aktif / tidak | BOOLEAN |