Apa manfaat menggunakan BOOLEAN dibandingkan TINYINT (1)?


16

Dari manual MySQL, tertulis:

BOOL, BOOLEAN

Tipe-tipe ini adalah sinonim untuk TINYINT (1). Nilai nol dianggap salah. Nilai bukan nol dianggap benar:

Saya membuat kolom BOOLEAN dengan 0sebagai nilai default. Lalu saya memperbarui nilainya ke 2. Secara logis, saya mengharapkan MySQL untuk menerima salah satu 0atau 1karena itu adalah boolean. Namun, MySQL tidak mengeluarkan kesalahan atau mencegah saya melakukan pembaruan.

Jika BOOLEAN bekerja persis sama dengan TINYINT (1), apakah ada bedanya apakah saya menggunakan TINYINT (1) atau BOOLEAN?

Jawaban:


11

Keduanya benar-benar sinonim, sehingga Anda dapat menggunakannya secara bergantian. Anda tidak akan melihat perbedaan di antara mereka.

Jika Anda ingin mengizinkan 0 dan 1 saja, Anda masih bisa menggunakan bittipe itu.


1
@QuestionOverflow Perlu diingat bahwa BITini benar-benar bidang bit yang menampung satu hingga enam puluh empat bit secara kompak.
David Harkness

2

Jika Anda bekerja dengan orang lain (atau Anda ingin mengingatkan diri sendiri), Anda dapat menggunakan tipe data BOOLEANuntuk menyarankan bahwa data hanya dimaksudkan untuk mengambil nilai 1 atau 0.


0

Menurut saya memang ada perbedaan.

Dalam tabel yang saya gunakan, saya memiliki kolom yang didefinisikan sebagai tinyint dengan indeks pada kolom. Ketika saya memunculkan kueri berikut "jelaskan pilih * dari tabel di mana kolom itu benar" itu menunjukkan bahwa ia akan membaca semua baris dalam tabel (kolom "mungkin_kunci" dan "ref" adalah nol meskipun kolom "kunci" menunjukkan indeks).

Mengubah kueri menjadi "jelaskan pilih * dari tabel di mana kolom = 1" indeks menendang dengan benar, dengan "kemungkinan kunci" dan "ref" kolom diberi nilai dan "baris" diatur ke angka yang jauh lebih rendah.

Saya juga mencoba mengganti "true" dengan "false" dan 1 dengan 0 dan mendapat hasil yang sebanding.

Melangkah lebih jauh, saya beralih dari intik ke int dan tidak ada bedanya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.