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

MySQL-এ GENERATED VIRTUAL COLUMN ব্যবহার করে গড় স্কোর অটো ক্যালকুলেট করা

MySQL 5.7+ এ GENERATED ALWAYS AS ... VIRTUAL কলাম ব্যবহার করে অন্য কলামের ভ্যালুর ভিত্তিতে অটোমেটিক্যালি ক্যালকুলেটেড ভ্যালু দেখানো যায়, কোনো INSERT/UPDATE দরকার নয়। এটি স্টোরেজ না নেওয়া সত্ত্বেও রিয়েল-টাইমে আপডেট হয়।

টেবিল তৈরি

mysql> CREATE TABLE demo32 (value1 INT, value2 INT);
mysql> INSERT INTO demo32 VALUES (30,60), (20,40), (35,35);
mysql> SELECT * FROM demo32;
+--------+--------+
| value1 | value2 |
+--------+--------+
| 30     | 60     |
| 20     | 40     |
| 35     | 35     |
+--------+--------+

ভার্চুয়াল কলাম যোগ করা (গড় স্কোর)

mysql> ALTER TABLE demo32 
    -> ADD COLUMN `Average Score` FLOAT 
    -> GENERATED ALWAYS AS ((value1 + value2) / 2) VIRTUAL;
Query OK, 0 rows affected (1.57 sec)

ফলাফল (অটোমেটিক্যালি ক্যালকুলেটেড)

mysql> SELECT * FROM demo32;
+--------+--------+---------------+
| value1 | value2 | Average Score |
+--------+--------+---------------+
| 30     | 60     | 45            |
| 20     | 40     | 30            |
| 35     | 35     | 35            |
+--------+--------+---------------+

VIRTUAL vs STORED:

  • VIRTUAL (ডিফল্ট): রিড টাইমে ক্যালকুলেট, স্টোরেজ নেই, সবসময় আপডেটেড
  • STORED: লিখা টাইমে ক্যালকুলেট, স্টোরেজ নেয়, দ্রুত রিড

ব্যবহার: রিপোর্টিং, ড্যাশবোর্ড, ক্যালকুলেটেড ফিল্ডের জন্য আদর্শ। ইনডেক্সও দেওয়া যায় (STORED-এ)।

  1. MySQL-এ একটি টেবিলের মান দিয়ে অন্য টেবিলের ফিল্ড আপডেট করা (ভেরিয়েবল ব্যবহার করে)

  2. MySQL-এ TIMESTAMP কালাম আপডেট করা (NOW() ফাংশন ব্যবহার)

  3. MySQL LIKE ব্যবহার করে প্রথম টেবিল থেকে নতুন টেবিল তৈরির পদ্ধতি

  4. MySQL-এ DATE_ADD ব্যবহার করে টেবিলের তারিখ আপডেট করা (বছর যোগ/বিয়োগ)