Apa itu TINYINT di MySQL? Penjelasan Lengkap dengan Contoh Penggunaan

1. Apa itu TINYINT di MySQL?

TINYINT di MySQL adalah tipe data yang digunakan untuk menyimpan bilangan bulat yang sangat kecil. TINYINT menggunakan 1 byte (8 bit) memori, dengan rentang nilai dari -128 hingga 127 untuk signed, dan dari 0 hingga 255 untuk unsigned. TINYINT sering digunakan untuk menyimpan angka kecil atau nilai boolean secara efisien.

Karakteristik TINYINT

  • Efisiensi Memori: Karena hanya menggunakan 1 byte, TINYINT lebih hemat memori dibandingkan tipe integer lain seperti INT atau BIGINT.
  • Signed dan Unsigned: Dengan signed, nilai negatif bisa disimpan. Dengan unsigned, jangkauan nilai positif menjadi lebih luas.

Contoh Penggunaan TINYINT

Contoh berikut membuat tabel dengan kolom TINYINT untuk menyimpan angka kecil atau flag.

CREATE TABLE user_status (
    user_id INT PRIMARY KEY,
    is_active TINYINT(1) NOT NULL DEFAULT 0
);

Pada contoh ini, kolom is_active didefinisikan sebagai TINYINT(1) untuk mengelola status aktif pengguna. Nilai 0 berarti “tidak aktif”, sedangkan 1 berarti “aktif”.

2. Kapan Menggunakan TINYINT

TINYINT sangat cocok untuk menyimpan angka kecil atau nilai boolean. Tipe data ini sering dipakai untuk menghemat storage dan meningkatkan performa database.

Sebagai Nilai Boolean

Karena MySQL tidak memiliki tipe khusus BOOLEAN, biasanya TINYINT(1) digunakan sebagai gantinya. Umumnya, 0 dianggap “false” dan 1 dianggap “true”. Dengan cara ini, flag dapat dikelola dengan mudah.

UPDATE user_status SET is_active = NOT is_active WHERE user_id = 1;

Pada contoh ini, nilai is_active pengguna tertentu akan dibalik (toggle) dari 0 ke 1 atau sebaliknya.

Mengelola Angka Kecil

Misalnya, untuk menyimpan jumlah stok barang yang jumlahnya tidak lebih dari 255, kita bisa menggunakan TINYINT UNSIGNED. Dengan begitu, nilai disimpan dalam jangkauan yang efisien tanpa membuang memori.

3. Perbandingan TINYINT dengan Tipe Integer Lain

MySQL menyediakan berbagai tipe integer, dan TINYINT adalah yang terkecil. Sebaliknya, INT atau BIGINT mampu menyimpan angka dalam rentang jauh lebih besar. Berikut perbandingannya:

Perbedaan dengan INT

INT menggunakan 4 byte dengan rentang -2147483648 hingga 2147483647, sedangkan TINYINT hanya menggunakan 1 byte dengan rentang -128 hingga 127 (signed) atau 0 hingga 255 (unsigned). Dengan memilih TINYINT, kita bisa menghemat memori untuk data dengan rentang kecil.

Perbandingan dengan Integer Kecil Lain

Selain TINYINT, ada juga SMALLINT (2 byte), MEDIUMINT (3 byte), dan lainnya. Masing-masing memiliki rentang angka yang berbeda sesuai ukuran byte. Pemilihan tipe yang tepat akan mempengaruhi efisiensi database.

4. Penggunaan Signed vs Unsigned

Dalam MySQL, TINYINT bisa didefinisikan sebagai signed atau unsigned. Memahami perbedaannya akan membantu mengelola data dengan lebih efisien.

Keuntungan TINYINT Unsigned

TINYINT UNSIGNED menyimpan angka dari 0 hingga 255. Tipe ini ideal untuk data yang tidak mungkin bernilai negatif, seperti umur pengguna atau jumlah barang.

Keuntungan TINYINT Signed

TINYINT signed menyimpan angka dari -128 hingga 127. Tipe ini berguna untuk data yang memungkinkan nilai negatif, misalnya suhu atau perbedaan nilai.

5. Contoh Penggunaan TINYINT

Berikut contoh tabel untuk menyimpan jumlah produk dengan TINYINT:

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    quantity TINYINT UNSIGNED NOT NULL
);

Pada contoh ini, kolom quantity menggunakan TINYINT UNSIGNED sehingga mampu menyimpan nilai hingga 255. Dengan tambahan NOT NULL, setiap baris wajib memiliki nilai.

TINYINT juga sering digunakan untuk mengelola status pengguna atau flag lain dengan cara yang efisien. Dalam database dengan jumlah data besar, tipe ini dapat meningkatkan performa keseluruhan.

6. Kesimpulan dan Cara Terbaik Menggunakan TINYINT

TINYINT adalah tipe data yang sangat hemat memori di MySQL, ideal untuk menyimpan angka kecil dan flag. Dengan menggunakannya untuk nilai boolean atau angka berskala kecil, kita bisa mengoptimalkan penggunaan storage sekaligus meningkatkan performa database.