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

MySQL সাবকোয়েরি কী এবং এর সাধারণ ক্যাটাগরি?

সাবকোয়েরি হলো একটি কোয়েরির ভেতরে আরেকটি কোয়েরি। এটি রানটাইমে ডাইনামিকভাবে κριেরিয়া তৈরি করে ডেটা সিলেক্ট করতে সক্ষম করে। আনফরম্যালি, এটি অন্য একটি SELECT স্টেটমেন্টের ক্লজের ভেতরে SELECT স্টেটমেন্ট ব্যবহার। সাবকোয়েরি একে অপরের ভেতরে নেস্টেড হতে পারে। এটি INSERT, UPDATE, DELETE স্টেটমেন্টের ভেতরেও নেস্টেড হতে পারে। সাবকোয়েরি অবশ্যই প্যারেনথেসিসে বদ্ধ থাকতে হয়।

যেকোনো জায়গায় যেখানে এক্সপ্রেশন গ্রহণযোগ্য, সাবকোয়েরি ব্যবহার করা যায় (শর্ত হলো সেটি একক মান রিটার্ন করবে)। একক মান রিটার্নকারী সাবকোয়েরি FROM ক্লজে অবজেক্ট হিসেবে লিস্ট করা যায়, যাকে ইনলাইন ভিউ বলে। সাবকোয়েরি FROM, WHERE, বা HAVING ক্লজে রাখা যায়। এটিকে INNER QUERY বা INNER SELECT বলা হয়, আর এটিকে ধারণকারী কোয়েরিকে OUTER QUERY বলে। এর সাধারণ ক্যাটাগরিগুলো:

স্কেলার সাবকোয়েরি (Scalar Subquery)

স্কেলার সাবকোয়েরি একক মান রিটার্ন করে (এক রো, এক কলাম)। এটি একটি সিম্পল অপারেন্ড এবং প্রায় সব জায়গায় যেখানে একক কলাম বা লিটারেল লিগ্যাল, সেখানে ব্যবহার করা যায়।

mysql> Select Name from Customers WHERE Customer_id = (Select Customer_id FROM Reservations WHERE ID = 5);
+--------+
| Name   |
+--------+
| Gaurav |
+--------+

টেবিল সাবকোয়েরি (Table Subquery)

টেবিল সাবকোয়েরি এক বা একাধিক রো এবং এক বা একাধিক কলাম ধারণকারী রেজাল্ট রিটার্ন করে।

mysql> Select Name from customers where Customer_id IN (SELECT DISTINCT Customer_id from reservations);
+---------+
| Name    |
+---------+
| Rahul   |
| Yashpal |
| Gaurav  |
+---------+

কোরিলেটেড সাবকোয়েরি (Correlated Subquery)

কোরিলেটেড সাবকোয়েরি হলো যেটি আউটার কোয়েরির মান তার WHERE ক্লজে ব্যবহার করে।

mysql> Select Name from cars WHERE Price < (SELECT AVG(Price) from Cars);
+--------------+
| Name         |
+--------------+
| Nexa         |
| Maruti Swift |
| Alto         |
| Skoda        |
| Ford         |
+--------------+

mysql> Select Name from cars WHERE Price > (SELECT AVG(Price) from Cars);
+--------+
| Name   |
+--------+
| BMW    |
| VOLVO  |
| Toyota |
+--------+

এখানে আউটার কোয়েরির প্রতিটি রোের জন্য সাবকোয়েরি আলাদা করে রান হয় (AVG প্রতিবার একই হলেও)।

  1. MySQL-এ BLOB এবং TEXT ডেটা টাইপের পার্থক্য কী?

  2. MySQL 8.0-এ নতুন যোগ করা অপশন ও ভেরিয়েবল

  3. Windows Domain কী এবং এর সুবিধাগুলো কী?

  4. ডিস্ক ক্লিনআপ ব্যাখ্যা: মূল সুবিধা এবং সেরা অনুশীলন