Untuk menangani Boolean di MySQL, Anda dapat menggunakan BOOL atau BOOLEAN atau TINYINT(1). Jika Anda menggunakan BOOL atau BOOLEAN, maka MySQL secara internal mengubahnya menjadi TINYINT(1)
Pada tipe data BOOL atau BOOLEAN, jika menggunakan true literal maka MySQL merepresentasikannya sebagai 1 dan false literal sebagai 0 seperti pada bahasa PHP/C/C++
Untuk membuktikan bahwa MySQL mengonversi BOOL atau BOOLEAN menjadi TINYINT(1), mari kita buat tabel dengan kolom BOOLEAN atau BOOL
Di sini, kami membuat tabel dengan kolom BOOLEAN. Permintaan untuk membuat tabel adalah sebagai berikut
mysql> create table BoolOrBooleanOrTinyintDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> isvalidAddress BOOLEAN, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.74 sec)Sekarang periksa DDL dari tabel di atas menggunakan perintah SHOW CREATE. Kuerinya adalah sebagai berikut
mysql> show create table BoolOrBooleanOrTinyintDemo\G_Berikut ini adalah outputnya
*************************** 1. row *************************** Table: BoolOrBooleanOrTinyintDemo Create Table: CREATE TABLE `boolorbooleanortinyintdemo` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `isvalidAddress` tinyint(1) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec)Perhatikan kolom isvalidAddress, tipe data BOOLEAN diubah menjadi tinyint(1) secara internal. Sekarang Anda dapat memeriksa literal yang benar akan diwakili oleh 1 dan literal yang salah dengan 0. Sisipkan beberapa catatan dalam tabel dengan nilai literal benar dan salah. Permintaan untuk memasukkan catatan adalah sebagai berikut
mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true); Query OK, 1 row affected (0.43 sec) mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(false); Query OK, 1 row affected (0.17 sec) mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true); Query OK, 1 row affected (0.29 sec) mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(false); Query OK, 1 row affected (0.12 sec) mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true); Query OK, 1 row affected (0.33 sec)Tampilkan semua rekaman dari tabel menggunakan pernyataan pilih. Permintaan untuk menampilkan semua catatan adalah sebagai berikut
mysql> select *from BoolOrBooleanOrTinyintDemo;_Berikut ini adalah outputnya
+----+----------------+ | Id | isvalidAddress | +----+----------------+ | 1 | 1 | | 2 | 0 | | 3 | 1 | | 4 | 0 | | 5 | 1 | +----+----------------+ 5 rows in set (0.00 sec)Lihatlah output sampel di atas, true direpresentasikan sebagai 1 dan false direpresentasikan sebagai 0
Dalam PHP, jika Anda menggunakan true maka akan direpresentasikan sebagai 1 dan false akan direpresentasikan sebagai 0
Perhatikan kode PHP berikut. Di sini, saya telah mengatur variabel 'isValidAddress'. Nilainya adalah 1, artinya mengevaluasi kondisi if benar dan mengeksekusi pernyataan if saja. Periksa kode berikut
Ini snapshot dari kode
Berikut ini adalah outputnya
Jika Anda mengubah variabel 'isValidAddress' menjadi nilai 0. Itu berarti mengevaluasi kondisi if false dan mengeksekusi tubuh pernyataan lain saja. Berikut ini adalah kodenya
Perhatikan contoh pernyataan DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _6 berikut ini. Perhatikan bagaimana kolom DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _7 ditandai sebagai tipe DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 0
CREATE TABLE books ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(150) NOT NULL, published BOOLEAN );
Saat Anda berhasil membuat tabel, Anda dapat memeriksa tipe data yang diimplementasikan untuk kolom menggunakan pernyataan DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 9
Perhatikan bagaimana kolom DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _7 memiliki DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 3 ketik hasil yang ditetapkan di bawah ini
DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+
Kata kunci DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _4 atau DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 0 sebenarnya adalah alias dari DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 3
Seperti bahasa pemrograman lainnya, MySQL menganggap angka SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 5 sama dengan DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 2, sedangkan angka SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 7 dianggap DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 1
Anda sebenarnya dapat menguji ini menggunakan pernyataan SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ _9 sebagai berikut
SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+
Nilai DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 1 sebenarnya adalah angka selain SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 5, tetapi disarankan untuk menggunakan angka SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 7 agar penyimpanan nilai boolean menjadi sederhana dan konsisten
Anda dapat menguji ini di MySQL dengan menggunakan fungsi SELECT IF(7, 'true', 'false'), IF(-7, 'true', 'false'), IF(0, 'true', 'false'); 3
SELECT IF(7, 'true', 'false'), IF(-7, 'true', 'false'), IF(0, 'true', 'false');
Set hasil yang dikembalikan akan seperti yang ditunjukkan di bawah ini
+------------------------+-------------------------+------------------------+ | IF(7, 'true', 'false') | IF(-7, 'true', 'false') | IF(0, 'true', 'false') | +------------------------+-------------------------+------------------------+ | true | true | false | +------------------------+-------------------------+------------------------+
Seperti yang Anda lihat, bahkan angka negatif dianggap DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 1 oleh MySQL
Meskipun MySQL menggunakan DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 3 untuk kolom DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 0, Anda tidak perlu menyisipkan SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 5 atau SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 7 untuk kolom saat Anda mengeluarkan pernyataan SELECT IF(7, 'true', 'false'), IF(-7, 'true', 'false'), IF(0, 'true', 'false'); 9
MySQL akan secara otomatis mengonversi nilai DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 1 atau DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 2 menjadi nilai numerik yang sesuai
Kembali ke contoh tabel +------------------------+-------------------------+------------------------+ | IF(7, 'true', 'false') | IF(-7, 'true', 'false') | IF(0, 'true', 'false') | +------------------------+-------------------------+------------------------+ | true | true | false | +------------------------+-------------------------+------------------------+ _2, mari sisipkan dua buku dengan salah satunya tidak diterbitkan sebagai berikut
INSERT INTO books VALUE (NULL, "The Three Musketeers", true), (NULL, "The Sound of Storm", false);
Tabel +------------------------+-------------------------+------------------------+ | IF(7, 'true', 'false') | IF(-7, 'true', 'false') | IF(0, 'true', 'false') | +------------------------+-------------------------+------------------------+ | true | true | false | +------------------------+-------------------------+------------------------+ _2 sekarang akan memiliki data berikut
+----+----------------------+-----------+ | id | title | published | +----+----------------------+-----------+ | 1 | The Three Musketeers | 1 | | 2 | The Sound of Storm | 0 | +----+----------------------+-----------+
Anda juga dapat menanyakan tabel Anda menggunakan nilai DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _1 atau DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 2 sebagai berikut
SELECT * FROM BOOKS WHERE published IS NOT true; -- +----+--------------------+-----------+ -- | id | title | published | -- +----+--------------------+-----------+ -- | 2 | The Sound of Storm | 0 | -- +----+--------------------+-----------+ SELECT * FROM BOOKS WHERE published IS true; -- +----+----------------------+-----------+ -- | id | title | published | -- +----+----------------------+-----------+ -- | 1 | The Three Musketeers | 1 | -- +----+----------------------+-----------+
Tetapi masalah dengan menggunakan DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 3 untuk tipe DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 0 adalah bahwa output dari pernyataan SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 9 akan menampilkan SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 7 atau SELECT true, false; -- +------+-------+ -- | true | false | -- +------+-------+ -- | 1 | 0 | -- +------+-------+ 5 alih-alih DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 1 atau DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 2
Anda perlu menggunakan fungsi SELECT IF(7, 'true', 'false'), IF(-7, 'true', 'false'), IF(0, 'true', 'false'); 3 untuk mengonversi nilai angka menjadi ekuivalen boolean
SELECT id, title, IF(published, 'true', 'false') AS published FROM BOOKS;
Dengan kueri SQL di atas, kolom DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _7 akan memiliki nilai DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 1 atau DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 2 seperti yang ditunjukkan di bawah ini
+----+----------------------+-----------+ | id | title | published | +----+----------------------+-----------+ | 1 | The Three Musketeers | true | | 2 | The Sound of Storm | false | +----+----------------------+-----------+
Dan begitulah tipe DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _0 digunakan di MySQL
Selain tipe DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _3, administrator MySQL juga dapat menggunakan tipe INSERT INTO books VALUE (NULL, "The Three Musketeers", true), (NULL, "The Sound of Storm", false); 9 atau +----+----------------------+-----------+ | id | title | published | +----+----------------------+-----------+ | 1 | The Three Musketeers | 1 | | 2 | The Sound of Storm | 0 | +----+----------------------+-----------+ 0 untuk menyimpan nilai boolean
Anda dapat mempelajari lebih lanjut tentang mereka di sini
- Jenis data MySQL INSERT INTO books VALUE (NULL, "The Three Musketeers", true), (NULL, "The Sound of Storm", false); _9 dijelaskan
- Jenis data MySQL +----+----------------------+-----------+ | id | title | published | +----+----------------------+-----------+ | 1 | The Three Musketeers | 1 | | 2 | The Sound of Storm | 0 | +----+----------------------+-----------+ _0 dijelaskan
DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ _3 adalah alias default untuk tipe DESCRIBE books; -- +-----------+--------------+ -- | Field | Type | -- +-----------+--------------+ -- | id | int | -- | title | varchar(150) | -- | published | tinyint(1) | -- +-----------+--------------+ 0 seperti yang didefinisikan oleh MySQL, tetapi Anda dapat menggunakan tipe lain jika Anda tahu apa yang Anda lakukan. 😉