Apakah ada tipe boolean di mysql?

Apakah Anda perlu menyimpan nilai boolean di database SQL Anda?

Daftar isi

Apa itu Boolean?

Boolean adalah tipe data yang dapat menyimpan nilai True atau False. Ini sering disimpan sebagai 1 (benar) atau 0 (salah). Itu dinamai George Boole yang pertama kali mendefinisikan sistem logika aljabar di abad ke-19

Apakah ada tipe boolean di mysql?

Nilai Boolean umum dalam bahasa pemrograman, tetapi apakah ada dalam SQL?

Jawabannya tergantung pada vendor database mana yang Anda gunakan

Kabar baiknya adalah meskipun tidak ada tipe data boolean khusus, Anda dapat mencapai fungsionalitas yang sama menggunakan tipe data lainnya

 

Apakah Ada Boolean di SQL?

Tabel ini menunjukkan ada atau tidaknya tipe data boolean di setiap vendor SQL

DatabaseBoolean?Gunakan SebaliknyaOracleNoNUMBER(1)SQL ServerNoBITMySQLNoBIT atau TINYINTPostgreSQLYa

 

Oracle Boolean

Apakah ada tipe data boolean di Oracle SQL?

Tidak, tidak ada

Anda tidak dapat mendeklarasikan kolom dengan tipe data BOOLEAN

Namun, ada beberapa alternatif, yang telah saya jelaskan di bawah ini

Cara yang disarankan untuk menyimpan boolean di Oracle SQL adalah dengan menggunakan kolom NUMBER(1). Ini dapat menyimpan 1 sebagai benar dan 0 sebagai salah

CREATE TABLE testbool (
  sometext VARCHAR2(10),
  is_checked NUMBER(1)
);

Anda dapat menambahkan batasan centang pada kolom untuk memastikan nilai lain tidak dapat dimasukkan

CREATE TABLE testbool (
  sometext VARCHAR2(10),
  is_checked NUMBER(1),
  CONSTRAINT ck_testbool_ischk CHECK (is_checked IN (1,0))
);
_

Ini berarti Anda dapat memasukkan 1 (untuk BENAR) atau 0 (untuk SALAH) ke dalam kolom ini

INSERT INTO testbool (sometext, is_checked) VALUES ('a', 1);
INSERT INTO testbool (sometext, is_checked) VALUES ('b', 0);

Saat Anda memilih nilai ini, nilai tersebut ditampilkan hanya sebagai 1 atau 0

SELECT sometext, is_checked
FROM testbool;
SOMETEXTIS_CHECKEDa1b0

Anda dapat mengonversi nilai ini menjadi nilai lain untuk ditampilkan dalam aplikasi jika Anda tidak ingin menampilkan 1 atau 0

Ada beberapa metode lain untuk menyimpan boolean, yang telah saya soroti di akhir postingan, termasuk alasan mengapa saya tidak merekomendasikannya

PL/SQL memiliki tipe data boolean, jadi jika Anda menulis kode PL/SQL (prosedur tersimpan, misalnya), Anda dapat menggunakan tipe data boolean

 

SQL Server Boolean

Tidak ada tipe data boolean di SQL Server

Namun, opsi umum adalah menggunakan tipe data BIT

Tipe data BIT digunakan untuk menyimpan nilai bit dari 1 hingga 64. Jadi, bidang BIT dapat digunakan untuk boolean, memberikan 1 untuk BENAR dan 0 untuk SALAH

CREATE TABLE testbool (
  sometext VARCHAR(10),
  is_checked BIT
);
_

Ini berarti Anda dapat memasukkan 1 (untuk BENAR) atau 0 (untuk SALAH) ke dalam kolom ini. Tidak perlu menambahkan batasan centang karena nilai BIT hanya menerima 1 atau 0

INSERT INTO testbool (sometext, is_checked) VALUES ('a', 1);
INSERT INTO testbool (sometext, is_checked) VALUES ('b', 0);

Saat Anda memilih nilai ini, nilai tersebut ditampilkan sebagai 1 atau 0

SELECT sometext, is_checked
FROM testbool;
SOMETEXTIS_CHECKEDa1b0

Anda dapat mengonversi nilai ini menjadi nilai lain untuk ditampilkan dalam aplikasi jika Anda tidak ingin menampilkan 1 atau 0

 

Boolean MySQL

MySQL memang memiliki tipe data boolean. Namun, itu hanya sinonim untuk TINYINT yang merupakan bidang numerik

Alternatif umum adalah menggunakan bidang BIT

Tipe data BIT digunakan untuk menyimpan nilai bit dari 1 hingga 64. Jadi, bidang BIT(1) dapat digunakan untuk boolean, memberikan 1 untuk BENAR dan 0 untuk SALAH. Sama seperti di SQL Server

CREATE TABLE testbool (
  sometext VARCHAR(10),
  is_checked BIT(1)
);

Ini berarti Anda dapat memasukkan 1 (untuk BENAR) atau 0 (untuk SALAH) ke dalam kolom ini. Tidak perlu menambahkan batasan centang karena nilai BIT hanya menerima 1 atau 0

INSERT INTO testbool (sometext, is_checked) VALUES ('a', 1);
INSERT INTO testbool (sometext, is_checked) VALUES ('b', 0);

Saat Anda memilih nilai ini, nilai tersebut ditampilkan hanya sebagai 1 atau 0

SELECT sometext, is_checked
FROM testbool;
SOMETEXTIS_CHECKEDa1b0

Anda dapat mengonversi nilai ini menjadi nilai lain untuk ditampilkan dalam aplikasi jika Anda tidak ingin menampilkan 1 atau 0

Alternatifnya, karena MySQL memetakan tipe data BOOLEAN ke tipe data TINYINT, menggunakan BOOLEAN atau TINYINT(1) bisa mendapatkan hasil yang sama

Ada beberapa metode lain untuk menyimpan boolean, yang telah saya soroti di akhir postingan, termasuk alasan mengapa saya tidak merekomendasikannya

 

PostgreSQL Boolean

PostgreSQL memang memiliki tipe data boolean

Anda dapat menyimpan benar atau salah dalam kolom ini, yang dapat diwakili oleh banyak nilai yang berbeda

  • BENAR. diwakili oleh TRUE, 't', 'true', 'y', 'yes', 'on', '1'
  • SALAH. diwakili oleh FALSE, 'f', 'false', 'n', 'no', 'off', '0'

Kata kunci BENAR dan SALAH lebih disukai

Contoh tipe data boolean di PostgreSQL adalah

CREATE TABLE testbool (
  sometext VARCHAR2(10),
  is_checked NUMBER(1),
  CONSTRAINT ck_testbool_ischk CHECK (is_checked IN (1,0))
);
_0

Anda dapat menyisipkan nilai boolean menggunakan pernyataan INSERT

CREATE TABLE testbool (
  sometext VARCHAR2(10),
  is_checked NUMBER(1),
  CONSTRAINT ck_testbool_ischk CHECK (is_checked IN (1,0))
);
_1

Saat Anda memilih nilai boolean, nilai itu ditampilkan sebagai 't' atau 'f'

SELECT sometext, is_checked
FROM testbool;
SOMETEXTIS_CHECKEDatbf

 

Alternatif Boolean

Jika database Anda tidak mendukung tipe data boolean, ada beberapa metode alternatif

 

NOMOR(1) dengan 1 dan 0

Ini adalah opsi yang bagus untuk Oracle karena tidak menyertakan tipe data BIT

Anda dapat membuat kolom dengan tipe data NUMBER(1), dan menggunakan batasan centang untuk menerapkan 1 atau 0

CREATE TABLE testbool (
  sometext VARCHAR2(10),
  is_checked NUMBER(1),
  CONSTRAINT ck_testbool_ischk CHECK (is_checked IN (1,0))
);
_

Ini akan berfungsi sebagai boolean. Namun, jika Anda menggunakan SQL Server atau MySQL, tipe data BIT lebih tepat karena lebih sederhana dan memiliki pemeriksaan bawaan jika nilainya 1 atau 0

Kalau tidak, itu alternatif yang bagus

 

CHAR(1) atau VARCHAR(1) dengan T dan F

Menggunakan bidang CHAR satu karakter adalah opsi lain yang disarankan. Dua karakter bisa jadi T untuk TRUE dan F untuk FALSE

CREATE TABLE testbool (
  sometext VARCHAR2(10),
  is_checked NUMBER(1),
  CONSTRAINT ck_testbool_ischk CHECK (is_checked IN (1,0))
);
_4

Anda bisa menambahkan batasan centang untuk memastikan nilainya T atau F

Namun, masalahnya adalah itu tidak diakui secara global. Dalam bahasa Inggris, T dan F bisa berarti Benar atau Salah. Tapi bagaimana dengan bahasa Prancis atau Jerman atau Spanyol atau bahasa lainnya?

Jika Anda mengharapkan pengembang lain dari negara lain maka T/F mungkin bukan pilihan terbaik

 

CHAR(1) atau VARCHAR(1) dengan Y dan N

Alasan yang sama seperti menggunakan T/F dapat diterapkan untuk menggunakan Y/N. Bidang karakter tunggal yang didesain hanya untuk menampung Y atau N dapat digunakan untuk boolean

Batasan pemeriksaan bersifat opsional tetapi disarankan

CREATE TABLE testbool (
  sometext VARCHAR2(10),
  is_checked NUMBER(1),
  CONSTRAINT ck_testbool_ischk CHECK (is_checked IN (1,0))
);
_5

Namun, seperti menggunakan T/F, menggunakan Y/N tidak dapat dikenali dalam bahasa lain. Itu bisa membingungkan pengembang lain yang tidak terbiasa melihat Y untuk Ya dan N untuk Tidak

 

Kesimpulan

Tipe data boolean yang umum di bahasa pemrograman lain tidak selalu tersedia di SQL. PostgreSQL memiliki tipe data boolean, dan vendor database lainnya mengizinkan metode lain untuk menangkap nilai benar/salah yang digunakan untuk boolean

Bagaimana cara menggunakan boolean di MySQL?

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++.

Bagaimana cara menambahkan bidang boolean di MySQL?

MySQL tidak berisi tipe data Boolean atau Bool bawaan . Mereka menyediakan tipe data TINYINT, bukan tipe data Boolean atau Bool. MySQL menganggap nilai nol sebagai salah dan nilai bukan nol sebagai benar. Jika Anda ingin menggunakan literal Boolean, gunakan true atau false yang selalu bernilai 0 dan 1.

Apakah SQL memiliki tipe boolean?

PostgreSQL menyediakan boolean tipe SQL standar ; . 19. Tipe boolean dapat memiliki beberapa status. "benar", "salah", dan status ketiga, "tidak diketahui", yang diwakili oleh nilai nol SQL.

Bagaimana Anda mengatur boolean menjadi true di MySQL?

Anda dapat memperbarui nilai boolean menggunakan perintah UPDATE . Jika Anda menggunakan tipe data BOOLEAN, MySQL secara internal mengubahnya menjadi tinyint(1). Ini dapat berupa literal benar atau salah di mana true menunjukkan 1 hingga tinyint(1) dan false menunjukkan 0 hingga tinyint(1).