Saya sedang merancang database untuk situs di mana saya perlu menggunakan tipe data boolean untuk menyimpan hanya 2 status, benar atau salah. Saya menggunakan MySQL.
Saat mendesain database menggunakan phpMyAdmin, saya menemukan bahwa saya memiliki tipe data BOOLEAN dan tipe data TINYINT.
Saya membaca artikel yang berbeda, beberapa mengatakan TINYINT sama dengan BOOLEAN, tidak ada perbedaan. Ada yang bilang BOOLEAN diubah menjadi TINYINT di MySQL.
Pertanyaan SAYA adalah, jika keduanya sama mengapa ada dua? Seharusnya hanya ada satu dari mereka.
Berikut referensi artikel yang saya baca:
http://www.careerride.com/MySQL-BOOL-TINYINT-BIT.aspx
http://dev.mysql.com/doc/refman/5.5/en/numeric-type -overview.html
BIT(1)
atauBIT(17)
atau bahkanBIT(64)
Sekadar catatan untuk pengembang php (saya kekurangan poin stackoverflow yang diperlukan untuk memposting ini sebagai komentar) ... konversi automagic (dan diam) ke TINYINT berarti bahwa php mengambil nilai dari kolom "BOOLEAN" sebagai "0" atau "1", bukan yang diharapkan (oleh saya) benar / salah.
Pengembang yang melihat SQL yang digunakan untuk membuat tabel dan melihat sesuatu seperti: "some_boolean BOOLEAN NOT NULL DEFAULT FALSE", mungkin cukup berharap untuk melihat hasil benar / salah ketika baris yang berisi kolom itu diambil. Sebaliknya (setidaknya dalam versi PHP saya), hasilnya adalah "0" atau "1" (ya, string "0" atau string "1", bukan int 0/1, terima kasih php).
Ini nit, tapi cukup untuk menyebabkan tes unit gagal.
sumber
Versi MySQL Terbaru memiliki
BIT
tipe data baru di mana Anda dapat menentukan jumlah bit di lapangan, misalnyaBIT(1)
untuk digunakan sebagaiBoolean
tipe, karena bisa saja0
atau1
.sumber
Pada referensi versi MySql 5.1
================================================== =======================
https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-numeric
sumber
Gambaran umum tipe numerik untuk status MySQL: BOOL, BOOLEAN: Tipe ini adalah sinonim untuk TINYINT (1). Nilai nol dianggap salah. Nilai bukan nol dianggap benar.
Lihat di sini: https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html
sumber