কম্পিউটার

মাইএসকিউএল জেনারেটেড কলাম কী এবং একটি টেবিল তৈরি করার সময় এটি কীভাবে ব্যবহার করবেন?


মূলত জেনারেট করা কলামগুলি হল এমন একটি বৈশিষ্ট্য যা টেবিল তৈরি করুন বা টেবিলের পরিবর্তন করুন বিবৃতিতে ব্যবহার করা যেতে পারে এবং এটি এসকিউএল-এ INSERT বা UPDATE ধারার মাধ্যমে প্রকৃতপক্ষে ডেটা না পাঠিয়েই সংরক্ষণ করার একটি উপায়৷ এই বৈশিষ্ট্যটি MySQL 5.7 এ যোগ করা হয়েছে। একটি জেনারেট করা কলাম টেবিল ডোমেনের মধ্যে কাজ করে। এর সিনট্যাক্স নিম্নরূপ হবে -

সিনট্যাক্স

column_name data_type [GENERATED ALWAYS] AS (expression)
[VIRTUAL | STORED] [UNIQUE [KEY]]

এখানে, সবার আগে, কলামের নাম এবং এর ডেটা টাইপ উল্লেখ করুন।

  • তারপর কলামটি একটি জেনারেটেড কলাম তা বোঝাতে GENERATED ALWAYS ক্লজ যোগ করুন।
  • তারপর, সংশ্লিষ্ট বিকল্পটি ব্যবহার করে উত্পন্ন কলামের ধরন কিনা তা নির্দেশ করুন - ভার্চুয়াল বা সংরক্ষিত। ডিফল্টরূপে, MySQL ভার্চুয়াল ব্যবহার করে যদি আপনি জেনারেট করা কলামের ধরন স্পষ্টভাবে উল্লেখ না করেন।

এর পরে, AS কীওয়ার্ডের পরে ধনুর্বন্ধনীর মধ্যে অভিব্যক্তিটি নির্দিষ্ট করুন। অভিব্যক্তিতে আক্ষরিক, বিল্ট-ইন ফাংশন থাকতে পারে যার মধ্যে কোনো পরামিতি, অপারেটর বা একই টেবিলের কোনো কলামের রেফারেন্স নেই। আপনি যদি একটি ফাংশন ব্যবহার করেন তবে এটি অবশ্যই স্কেলার এবং নির্ধারক হতে হবে৷

অবশেষে, যদি জেনারেট করা কলাম সংরক্ষণ করা হয়, আপনি এটির জন্য একটি অনন্য সীমাবদ্ধতা সংজ্ঞায়িত করতে পারেন।

উদাহরণ

এই উদাহরণে, আমরা নিচের মত একটি জেনারেট কলাম সহ কর্মীদের বিবরণ সহ employee_data নামে একটি টেবিল তৈরি করছি -

mysql> Create table employee_data(ID INT AUTO_INCREMENT PRIMARY KEY, First_name VARCHAR(50) NOT NULL, Last_name VARCHAR(50) NOT NULL, FULL_NAME VARCHAR(90) GENERATED ALWAYS AS(CONCAT(First_name,' ',Last_name)));
Query OK, 0 rows affected (0.55 sec)

mysql> DESCRIBE employee_data;
+------------+-------------+------+-----+---------+-------------------+
| Field      | Type        | Null | Key | Default | Extra             |
+------------+-------------+------+-----+---------+-------------------+
| ID         | int(11)     | NO   | PRI | NULL    | auto_increment    |
| First_name | varchar(50) | NO   |     | NULL    |                   |
| Last_name  | varchar(50) | NO   |     | NULL    |                   |
| FULL_NAME  | varchar(90) | YES  |     | NULL    | VIRTUAL GENERATED |
+------------+-------------+------+-----+---------+-------------------+
4 rows in set (0.00 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Yashpal','Sharma');
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Krishan','Kumar');
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Rakesh','Arora');
Query OK, 1 row affected (0.08 sec)

mysql> Select * from employee_data;
+----+------------+-----------+----------------+
| ID | First_name | Last_name | FULL_NAME      |
+----+------------+-----------+----------------+
| 1  | Yashpal    | Sharma    | Yashpal Sharma |
| 2  | Krishan    | Kumar     | Krishan Kumar  |
| 3  | Rakesh     | Arora     | Rakesh Arora   |
+----+------------+-----------+----------------+
3 rows in set (0.00 sec)

  1. একটি MySQL টেবিল তৈরি করার সময় আমরা কি {} ব্যবহার করতে পারি?

  2. MySQL এ তৈরি করার সময় একটি টেবিলে AUTO_INCREMENT সেট করবেন?

  3. ইতিমধ্যে তৈরি করা MySQL টেবিলে কীভাবে একটি নতুন কলাম তৈরি এবং পূরণ করবেন?

  4. একটি MySQL টেবিল তৈরি করার সময় সংরক্ষিত কীওয়ার্ড 'কী' ব্যবহার করুন