আমরা MySQL সংস্করণ 8.0.12 ব্যবহার করছি। প্রথমে MySQL সংস্করণ যাচাই করা যাক:
mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)
MySQL-এ Boolean ডেটা টাইপের জন্য BOOL, BOOLEAN বা TINYINT(1) ব্যবহার করা যায়। BOOL বা BOOLEAN ব্যবহার করলে MySQL এটিকে অভ্যন্তরীণভাবে TINYINT(1)-এ রূপান্তর করে।
BOOL বা BOOLEAN ডেটা টাইপে true লিটারেল MySQL-এ 1 হিসেবে এবং false লিটারেল 0 হিসেবে উপস্থাপিত হয়, ঠিক PHP/C/C++ ভাষার মতো।
MySQL BOOL বা BOOLEAN-কে TINYINT(1)-এ রূপান্তর করে তা প্রমাণ করার জন্য একটি টেবিল তৈরি করা যাক BOOLEAN বা BOOL কলামসহ।
এখানে BOOLEAN কলামসহ একটি টেবিল তৈরি করা হচ্ছে। টেবিল তৈরির কোয়েরি নিচে দেওয়া হলো:
mysql> create table BoolOrBooleanOrTinyintDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> isvalidAddress BOOLEAN,
-> PRIMARY KEY(Id)
-> ); Query OK, 0 rows affected (0.74 sec)
এখন উপরের টেবিলের DDL যাচাই করতে SHOW CREATE কমান্ড ব্যবহার করা যাক। কোয়েরিটি হলো:
mysql> show create table BoolOrBooleanOrTinyintDemo\G
আউটপুট নিচে দেওয়া হলো:
*************************** 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)
isvalidAddress কলামটি দেখুন, BOOLEAN ডেটা টাইপ অভ্যন্তরীণভাবে tinyint(1)-এ রূপান্তরিত হয়েছে। এখন true লিটারেল 1 হিসেবে এবং false লিটারেল 0 হিসেবে উপস্থাপিত হবে তা যাচাই করা যাক। টেবিলে কিছু রেকর্ড ইনসার্ট করা যাক true এবং false লিটারেল মানসহ। রেকর্ড ইনসার্ট করার কোয়েরি:
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)
সিলেক্ট স্টেটমেন্ট দিয়ে টেবিলের সব রেকর্ড দেখানো যাক। কোয়েরিটি হলো:
mysql> select *from BoolOrBooleanOrTinyintDemo;
আউটপুট নিচে দেওয়া হলো:
+----+----------------+ | Id | isvalidAddress | +----+----------------+ | 1 | 1 | | 2 | 0 | | 3 | 1 | | 4 | 0 | | 5 | 1 | +----+----------------+ 5 rows in set (0.00 sec)
উপরের স্যাম্পল আউটপুটে দেখা যাচ্ছে, true = 1 এবং false = 0 হিসেবে উপস্থাপিত হয়েছে।
PHP-এ Boolean হ্যান্ডলিং
PHP-এ যদি true ব্যবহার করা হয় তবে সেটি 1 হিসেবে এবং false 0 হিসেবে উপস্থাপিত হয়।
নিচের PHP কোডটি দেখুন। এখানে isValidAddress ভেরিয়েবলের মান 1 সেট করা হয়েছে, অর্থাৎ if কন্ডিশনটি true হয়ে যাবে এবং if ব্লকটি এক্সিকিউট হবে। কোডটি নিচে দেওয়া হলো:
$isValidAddress = 1; if($isValidAddress) { echo 'true is represented as '; echo ($isValidAddress); } else { echo 'false is represented as '; echo ($isValidAddress); }
আউটপুট হবে: true is represented as 1
যদি isValidAddress ভেরিয়েবলের মান 0 করা হয়, তবে if কন্ডিশনটি false হয়ে যাবে এবং else ব্লকটি এক্সিকিউট হবে। কোডটি নিচে দেওয়া হলো:
$isValidAddress=0; if($isValidAddress) { echo 'true is represented as '; echo ($isValidAddress); } else { echo 'false is represented as '; echo ($isValidAddress); }
আউটপুট হবে: false is represented as 0
সারসংক্ষেপে, MySQL-এ BOOL/BOOLEAN আসলে TINYINT(1) এবং PHP-এও বুলিয়ান মান 1 (true) এবং 0 (false) হিসেবে কাজ করে। তাই PHP এবং MySQL-এর মাঝপথে বুলিয়ান ডেটা হ্যান্ডলিং খুব সহজ এবং সামঞ্জস্যপূর্ণ।