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

Jenis | Tipe Data | Ukuran | Rentang Nilai | Keterangan
Bilangan Bulat | TINYINT | 1 byte | -128 hingga 127 (0 hingga 255 jika unsigned) | Cocok untuk nilai kecil seperti status atau kategori.
| SMALLINT | 2 byte | -32.768 hingga 32.767 | Digunakan untuk angka dengan skala kecil-menengah.
| MEDIUMINT | 3 byte | -8.388.608 hingga 8.388.607 | Berguna untuk angka dengan skala lebih besar dari SMALLINT.
| INT (INTEGER) | 4 byte | -2.147.483.648 hingga 2.147.483.647 | Umum digunakan untuk ID, jumlah, atau angka besar.
| BIGINT | 8 byte | -9.223.372.036.854.775.808 hingga 9.223.372.036.854.775.807 | Cocok untuk data dengan angka yang sangat besar, seperti transaksi finansial.
Bilangan Pecahan | FLOAT | 4 byte | -3.4E+38 hingga 3.4E+38 | Menyimpan angka desimal dengan presisi tunggal.
| DOUBLE (REAL) | 8 byte | -1.8E+308 hingga 1.8E+308 | Menyimpan angka desimal dengan presisi ganda.
| DECIMAL (NUMERIC) | Bervariasi | Ditentukan oleh (M,D) | Cocok untuk angka keuangan karena memiliki presisi tetap.

Tipe Data String

Tipe Data | Ukuran | Keterangan
CHAR(n) | 1 – 255 karakter | Panjang tetap, efisien untuk data yang memiliki panjang tetap seperti kode pos.
VARCHAR(n) | 1 – 65.535 karakter | Panjang variabel, lebih fleksibel dibanding CHAR.
TEXT (Tipe Teks Besar) | |
TINYTEXT | 255 karakter | Cocok untuk teks pendek seperti deskripsi singkat.
TEXT | 65.535 karakter | Umum digunakan untuk deskripsi panjang.
MEDIUMTEXT | 16.777.215 karakter | Cocok untuk artikel atau dokumen besar.
LONGTEXT | 4.294.967.295 karakter | Digunakan untuk data teks yang sangat besar, seperti buku atau arsip.
ENUM | 1 – 2 byte | Menyimpan satu nilai dari daftar nilai yang telah ditentukan, cocok untuk status (misalnya: ‘aktif’, ‘nonaktif’).
SET | 1 – 8 byte | Menyimpan satu atau lebih nilai dari daftar nilai yang telah ditentukan.

Tipe Data Tanggal dan Waktu

Tipe Data | Ukuran | Format | Keterangan
DATE | 3 byte | ‘YYYY-MM-DD’ | Menyimpan tanggal tanpa waktu.
DATETIME | 8 byte | ‘YYYY-MM-DD HH:MM:SS’ | Menyimpan tanggal dan waktu lengkap.
TIMESTAMP | 4 byte | ‘YYYY-MM-DD HH:MM:SS’ | Menyimpan stempel waktu yang dapat diperbarui otomatis.
TIME | 3 byte | ‘HH:MM:SS’ | Menyimpan waktu tanpa tanggal.
YEAR | 1 byte | ‘YYYY’ | Menyimpan tahun saja.

Tipe Data JSON

Tipe Data | Keterangan
JSON | Menyimpan data dalam format JSON, berguna untuk menyimpan data terstruktur yang fleksibel.

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

Efisiensi penyimpanan: Gunakan tipe data dengan ukuran yang sesuai untuk menghemat ruang penyimpanan.

Kinerja query: Hindari penggunaan tipe data yang besar untuk meningkatkan kecepatan pencarian dan indexing.

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:

Kolom | Tipe Data | Deskripsi | Alasan Pemilihan
id | INT PRIMARY KEY AUTO_INCREMENT | ID unik untuk setiap produk. | INT digunakan untuk efisiensi penyimpanan angka, PRIMARY KEY menjadikannya unik, dan AUTO_INCREMENT agar bertambah otomatis.
nama | VARCHAR(255) NOT NULL | Nama produk. | VARCHAR(255) cukup untuk menyimpan nama produk dengan fleksibilitas tinggi, dan NOT NULL memastikan nama tidak kosong.
satuan | VARCHAR(50) NOT NULL | Satuan produk (kg, liter, pcs, dll.). | VARCHAR(50) cukup untuk berbagai satuan dan lebih efisien dibanding TEXT. NOT NULL memastikan setiap produk memiliki satuan.
harga | DECIMAL(10,2) NOT NULL | Harga 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.
stok | INT NOT NULL | Jumlah stok produk yang tersedia. | INT digunakan karena stok adalah bilangan bulat, dan NOT NULL agar stok selalu tercatat.
deskripsi | TEXT | Deskripsi lengkap tentang produk. | TEXT dipilih karena dapat menyimpan teks dalam jumlah besar tanpa batasan panjang tertentu seperti VARCHAR.