কম্পিউটার টিউটোরিয়াল

MySQL ENUM-এর প্রতিটি মান একটি সূচক মানের সাথে থাকে কীভাবে দেখাবেন?

ENUM কলামে তালিকাভুক্ত উপাদানগুলোকে ১ থেকে শুরু করে সূচক নম্বর বরাদ্দ করা হয়। এখানে "সূচক" বলতে ENUM মানের তালিকায় অবস্থান বোঝায়, টেবিল সূচক নয়। নিচের উদাহরণগুলো দেখিয়ে দেবে কিভাবে প্রতিটি ENUM মানের একটি সূচক মান থাকে।

১. সূচক নম্বর দিয়ে ENUM মান ইনসার্ট করা

ENUM কলামে মানগুলো তাদের সূচক নম্বর দিয়েও ইনসার্ট করা যায়। নিচের টেবিলে 'Pass' এবং 'Fail' দুটি ENUM মান আছে। 'Pass' প্রথমে লেখা থাকায় এর সূচক ১, 'Fail'-এর সূচক ২।

mysql> INSERT INTO marks(id, name, result) VALUES(103, 'Daksh', '1');
Query OK, 1 row affected (0.06 sec)
mysql> INSERT INTO marks(id, name, result) VALUES(104, 'Shayra', '2');
Query OK, 1 row affected (0.07 sec)
mysql> SELECT * FROM marks;

আউটপুট:

+-----+---------+--------+
| id  | Name    | Result |
+-----+---------+--------+
| 101 | Aarav   | Pass   |
| 102 | Yashraj | Fail   |
| 103 | Daksh   | Pass   |
| 104 | Shayra  | Fail   |
+-----+---------+--------+
4 rows in set (0.00 sec)

উপরোক্ত কোয়েরিতে 'Pass' এবং 'Fail'-এর স্থানে সূচক ১ এবং ২ ব্যবহার করা হয়েছে।

২. খালি স্ট্রিং দিয়ে ENUM মান ইনসার্ট করা

খালি স্ট্রিংর সূচক মান ০। এটি ইনসার্ট করার আগে SQL mode অবশ্যই TRADITIONAL, STRICT_TRANS_TABLES বা STRICT_ALL_TABLES নয়।

mysql> SET SESSION sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO marks(id, name, result) VALUES(105, 'Yashraj', '');
Query OK, 1 row affected, 1 warning (0.06 sec)

এটি একটি সতর্কতা দেবে:

mysql> SHOW WARNINGS;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1265 | Data truncated for column 'Result' at row 1 |
+---------+------+---------------------------------------------+
1 row in set (0.00 sec)

এখন টেবিল চেক করলে ENUM ফিল্ডে খালি স্ট্রিং দেখাবে:

mysql> SELECT * FROM marks;
+-----+---------+--------+
| id  | Name    | Result |
+-----+---------+--------+
| 101 | Aarav   | Pass   |
| 102 | Yashraj | Fail   |
| 103 | Daksh   | Pass   |
| 104 | Shayra  | Fail   |
| 105 | Yash    |        |
+-----+---------+--------+
5 rows in set (0.00 sec)
mysql> SELECT result+0 AS result_index FROM marks;
+--------------+
| result_index |
+--------------+
| 1            |
| 2            |
| 1            |
| 2            |
| 0            |
+--------------+
5 rows in set (0.01 sec)

আউটপুট থেকে স্পষ্ট হয় খালি স্ট্রিংর সূচক মান ০।

৩. NULL দিয়ে ENUM মান ইনসার্ট করা

ENUM কলামে NOT NULL নির্দিষ্ট না করলে NULL ইনসার্ট করা যায়। NULL-এর সূচক মান NULL।

mysql> CREATE TABLE result(Id INT PRIMARY KEY NOT NULL, Name VARCHAR(10), Grade ENUM('POOR', 'GOOD'));
Query OK, 0 rows affected (0.25 sec)
mysql> INSERT INTO result(id, name, grade) VALUES(100, 'Rahul', NULL);
Query OK, 1 row affected (0.06 sec)

NULL ইনসার্ট হয়েছে কিনা চেক করুন:

mysql> SELECT * FROM result;
+-----+-------+-------+
| Id  | Name  | Grade |
+-----+-------+-------+
| 100 | Rahul | NULL  |
+-----+-------+-------+
1 row in set (0.00 sec)

NULL-এর সূচক মান NULL কিনা দেখুন:

mysql> SELECT Grade+0 AS Grade_index FROM result;
+-------------+
| Grade_index |
+-------------+
| NULL        |
+-------------+
1 row in set (0.00 sec)
  1. MySQL-এ নির্দিষ্ট ভ্যালু দিয়ে শুরু হওয়া রেকর্ড নির্বাচন করা

  2. MySQL-এ DEFAULT 'NONE' সেট করে কলামের ডিফল্ট মান নির্ধারণ করা

  3. MySQL SELECT-এ কলামের মান দুবার দেখানো (CONCAT ব্যবহার করে)

  4. MySQL-এ ইউজার-ডিফাইনড ভেরিয়েবল দিয়ে দুটি কলামের মান সোয়াপ করা