কম্পিউটার

কিভাবে দেখাবেন যে প্রতিটি MySQL গণনার একটি সূচক মান আছে?


প্রকৃতপক্ষে, ENUM কলামের স্পেসিফিকেশনে তালিকাভুক্ত উপাদানগুলিকে সূচী নম্বর বরাদ্দ করা হয় যা 1 দিয়ে শুরু হয়৷ এখানে "সূচী" শব্দটি গণনার মানের তালিকার মধ্যে অবস্থানের দিকে নির্দেশ করে এবং সেগুলি টেবিলের সূচীগুলির সাথে সম্পর্কিত নয়৷ নিম্নলিখিত উদাহরণগুলির সাহায্যে আমরা দেখাতে পারি যে প্রতিটি MySQL গণনার একটি সূচক মান রয়েছে −

গণনার মানের পরিবর্তে সূচক নম্বর সন্নিবেশ করে

আমরা মানগুলি লেখার পরিবর্তে তাদের সূচক সংখ্যার সাহায্যে ENUM কলামে মান সন্নিবেশ করতে পারি। উদাহরণস্বরূপ, নীচের টেবিলে আমাদের দুটি ENUM মান রয়েছে 'পাস' এবং 'ফেল'। যেহেতু 'পাস' গণনা তালিকায় প্রথমে লেখা হয়েছে তাই সূচক নম্বর '1' পেয়েছে এবং এটি 'ফেল'-এর জন্য '2' হবে। এখন আমরা নিম্নরূপ −

সূচক সংখ্যা সন্নিবেশ করে মান সন্নিবেশ করতে পারি
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)

উপরের ক্যোয়ারীতে, আমরা সূচক সংখ্যা 1 এবং 2 ব্যবহার করেছি গণনার মান যথাক্রমে পাস এবং ফেল করার জন্য।

গণনার মানের পরিবর্তে খালি স্ট্রিং ঢোকানোর মাধ্যমে

খালি স্ট্রিংটির সূচকের মান হল 0৷ খালি স্ট্রিং ঢোকানোর আগে, SQL মোডটি ঐতিহ্যগত, 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 নিম্নলিখিত সতর্কতা সহ খালি স্ট্রিং সন্নিবেশ করায়।

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)
From the output of above query, it is clear that the index value of the empty string is 0.

গণনার মানের পরিবর্তে NULL ঢোকানোর মাধ্যমে

আমরা গণনার মানের জায়গায় NULL সন্নিবেশ করতে পারি কারণ আমরা ENUM কলামের সাথে NULL উল্লেখ করি না। NULL এর সূচকের মান হল NULL। উদাহরণ স্বরূপ, নিম্নলিখিত প্রশ্নের সাহায্যে, আমরা 'ফলাফল' টেবিলের গণনা কলামে NULL সন্নিবেশ করি এবং এর সূচকের মান পরীক্ষা করতে পারি।

mysql> Create table result(Id INT PRIMARY KEY NOT NULL, Name Varchar(10), GradeENUM('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. মাইএসকিউএল-এ একটি নির্দিষ্ট মান দিয়ে শুরু হওয়া রেকর্ডগুলি কীভাবে নির্বাচন করবেন?

  2. কিভাবে MySQL ডিফল্ট মান NONE সেট করবেন?

  3. মাইএসকিউএল সিলেক্টে কলামের মান দুবার দেখাবেন?

  4. মাইএসকিউএল-এ একটি নির্দিষ্ট ক্ষেত্রের মান কীভাবে অদলবদল করবেন?