Memahami Tipe Data MySQL untuk Efisiensi Database

Logic Community – MySQL adalah salah satu sistem manajemen basis data relasional (RDBMS) populer dan banyak digunakan. Dalam MySQL, pemilihan tipe data yang tepat sangat penting karena dapat mempengaruhi performa, penggunaan penyimpanan, dan validasi data. Berikut adalah beberapa kategori utama tipe data dalam MySQL:

Tipe Data Numerik

JenisTipe DataUkuranRentang NilaiKeterangan
Bilangan BulatTINYINT1 byte-128 hingga 127 (0 hingga 255 jika unsigned)Cocok untuk nilai kecil seperti status atau kategori.
 SMALLINT2 byte-32.768 hingga 32.767Digunakan untuk angka dengan skala kecil-menengah.
 MEDIUMINT3 byte-8.388.608 hingga 8.388.607Berguna untuk angka dengan skala lebih besar dari SMALLINT.
 INT (INTEGER)4 byte-2.147.483.648 hingga 2.147.483.647Umum digunakan untuk ID, jumlah, atau angka besar.
 BIGINT8 byte-9.223.372.036.854.775.808 hingga 9.223.372.036.854.775.807Cocok untuk data dengan angka yang sangat besar, seperti transaksi finansial.
Bilangan PecahanFLOAT4 byte-3.4E+38 hingga 3.4E+38Menyimpan angka desimal dengan presisi tunggal.
 DOUBLE (REAL)8 byte-1.8E+308 hingga 1.8E+308Menyimpan angka desimal dengan presisi ganda.
 DECIMAL (NUMERIC)BervariasiDitentukan oleh (M,D)Cocok untuk angka keuangan karena memiliki presisi tetap.

Tipe Data String

Tipe DataUkuranKeterangan
CHAR(n)1 – 255 karakterPanjang tetap, efisien untuk data yang memiliki panjang tetap seperti kode pos.
VARCHAR(n)1 – 65.535 karakterPanjang variabel, lebih fleksibel dibanding CHAR.
TEXT (Tipe Teks Besar)  
TINYTEXT255 karakterCocok untuk teks pendek seperti deskripsi singkat.
TEXT65.535 karakterUmum digunakan untuk deskripsi panjang.
MEDIUMTEXT16.777.215 karakterCocok untuk artikel atau dokumen besar.
LONGTEXT4.294.967.295 karakterDigunakan untuk data teks yang sangat besar, seperti buku atau arsip.
ENUM1 – 2 byteMenyimpan satu nilai dari daftar nilai yang telah ditentukan, cocok untuk status (misalnya: ‘aktif’, ‘nonaktif’).
SET1 – 8 byteMenyimpan satu atau lebih nilai dari daftar nilai yang telah ditentukan.

Tipe Data Tanggal dan Waktu

Tipe DataUkuranFormatKeterangan
DATE3 byte‘YYYY-MM-DD’Menyimpan tanggal tanpa waktu.
DATETIME8 byte‘YYYY-MM-DD HH:MM:SS’Menyimpan tanggal dan waktu lengkap.
TIMESTAMP4 byte‘YYYY-MM-DD HH:MM:SS’Menyimpan stempel waktu yang dapat diperbarui otomatis.
TIME3 byte‘HH:MM:SS’Menyimpan waktu tanpa tanggal.
YEAR1 byte‘YYYY’Menyimpan tahun saja.

Tipe Data JSON

Tipe DataKeterangan
JSONMenyimpan data dalam format JSON, berguna untuk menyimpan data terstruktur yang fleksibel.

Pemilihan tipe data yang tepat dalam MySQL harus mempertimbangkan beberapa faktor seperti:

  1. Efisiensi penyimpanan: Gunakan tipe data dengan ukuran yang sesuai untuk menghemat ruang penyimpanan.
  2. Kinerja query: Hindari penggunaan tipe data yang besar untuk meningkatkan kecepatan pencarian dan indexing.
  3. Kesesuaian dengan data yang disimpan: Pilih tipe data yang sesuai dengan nilai yang akan disimpan agar validasi lebih mudah.

Dengan memahami dan memilih tipe data yang tepat, performa dan efisiensi database MySQL dapat ditingkatkan secara signifikan.

Berikut contoh penggunaan tipe data pada query table :

CREATE TABLE produk (
  id INT PRIMARY KEY AUTO_INCREMENT,
  nama VARCHAR(255) NOT NULL,
  satuan VARCHAR(50) NOT NULL,
  harga DECIMAL(10,2) NOT NULL,
  stok INT NOT NULL,
  deskripsi TEXT
);

pada query tabel produk terdiri dari field id, nama, satuan, harga, stok dan deskripsi. penggunaan tipe data pada masing-masing field menyesuaikan dengan kebutuhan data yang akan disimpan yang bertujuan untuk memberikan efisiensi dan kinerja yang baik pada tabel.

Berikut penjelasan dari masing-masing kolom dan alasan pemilihan tipe datanya:

KolomTipe DataDeskripsiAlasan Pemilihan
idINT PRIMARY KEY AUTO_INCREMENTID unik untuk setiap produk.INT digunakan untuk efisiensi penyimpanan angka, PRIMARY KEY menjadikannya unik, dan AUTO_INCREMENT agar bertambah otomatis.
namaVARCHAR(255) NOT NULLNama produk.VARCHAR(255) cukup untuk menyimpan nama produk dengan fleksibilitas tinggi, dan NOT NULL memastikan nama tidak kosong.
satuanVARCHAR(50) NOT NULLSatuan produk (kg, liter, pcs, dll.).VARCHAR(50) cukup untuk berbagai satuan dan lebih efisien dibanding TEXT. NOT NULL memastikan setiap produk memiliki satuan.
hargaDECIMAL(10,2) NOT NULLHarga produk dengan dua digit desimal.DECIMAL(10,2) digunakan untuk menyimpan angka dengan dua desimal, sehingga cocok untuk data harga. NOT NULL agar harga selalu ada.
stokINT NOT NULLJumlah stok produk yang tersedia.INT digunakan karena stok adalah bilangan bulat, dan NOT NULL agar stok selalu tercatat.
deskripsiTEXTDeskripsi lengkap tentang produk.TEXT dipilih karena dapat menyimpan teks dalam jumlah besar tanpa batasan panjang tertentu seperti VARCHAR.