DB2 তে Joins এবং Subqueries ডেটাবেসে ডেটার সম্পর্ক স্থাপন এবং বিশ্লেষণ করার জন্য অত্যন্ত গুরুত্বপূর্ণ দুটি টুল। এগুলি SQL কুয়েরি প্রক্রিয়াতে ব্যবহৃত হয় এবং ডেটার মাঝে সম্পর্ক খুঁজে বের করতে সহায়তা করে। এখানে Joins এবং Subqueries সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Joins SQL তে দুটি বা ততোধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে ডেটা একত্রিত করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন টেবিলের ডেটার মধ্যে সম্পর্কিত তথ্য পাওয়ার জন্য ব্যবহৃত হয়।
INNER JOIN ব্যবহার করলে দুইটি টেবিলের মধ্যে কেবলমাত্র এমন রেকর্ডগুলো রিটার্ন হয় যেগুলি উভয় টেবিলেই মেলানো হয়।
উদাহরণ:
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
এই কুয়েরিতে employees
এবং departments
টেবিলের মধ্যে সম্পর্ক স্থাপন করা হচ্ছে। এখানে কেবল সেই কর্মচারীদের নাম এবং তাদের বিভাগের নাম আসবে যারা নির্দিষ্ট বিভাগে কাজ করছে।
LEFT JOIN (অথবা LEFT OUTER JOIN) ব্যবহৃত হলে, বাম দিকের টেবিলের সব রেকর্ড রিটার্ন হয়, এমনকি ডান দিকের টেবিলে সম্পর্কিত রেকর্ড না থাকলেও। ডান দিকের টেবিলের ক্ষেত্রগুলিতে NULL
মান আসবে।
উদাহরণ:
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
এখানে, এমন কর্মচারীদের নাম দেখানো হবে যাদের বিভাগে কাজ করার তথ্য নেই, তবে তাদের নামটি সবসময় প্রদর্শিত হবে।
RIGHT JOIN (অথবা RIGHT OUTER JOIN) হল LEFT JOIN এর বিপরীত, যেখানে ডান দিকের টেবিলের সমস্ত রেকর্ড রিটার্ন হয় এবং বাম দিকের টেবিলের ক্ষেত্রগুলোতে NULL
থাকতে পারে।
উদাহরণ:
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;
এখানে, এমন সব বিভাগ প্রদর্শিত হবে যেগুলোর সাথে কোনো কর্মচারী যুক্ত নয়।
FULL JOIN (অথবা FULL OUTER JOIN) ব্যবহার করলে উভয় টেবিলের সমস্ত রেকর্ড রিটার্ন হয়, এমনকি এক টেবিলের সাথে অন্য টেবিলের কোনো সম্পর্ক না থাকলেও।
উদাহরণ:
SELECT employees.name, departments.department_name
FROM employees
FULL JOIN departments ON employees.department_id = departments.id;
এখানে, সকল কর্মচারী এবং সকল বিভাগ রিটার্ন হবে, যাদের সম্পর্ক না থাকলেও তাদের জন্য NULL
মান প্রদর্শিত হবে।
Subqueries হল একটি SQL কুয়েরি যা আরেকটি কুয়েরির ভিতরে অন্তর্ভুক্ত থাকে। এগুলি মূল কুয়েরির ফলাফল হিসেবে ব্যবহার করা হয় এবং জটিল ডেটা বিশ্লেষণ করতে সাহায্য করে।
এটি এমন এক কুয়েরি যা প্রধান কুয়েরির মধ্যে ব্যবহার হয় এবং কিছু ফলাফল রিটার্ন করে। এই ধরনের সাবকুয়েরি IN
, NOT IN
, ANY
, ALL
বা EXISTS
এর সাথে ব্যবহার হতে পারে।
উদাহরণ:
SELECT name
FROM employees
WHERE department_id IN (SELECT id FROM departments WHERE department_name = 'HR');
এই কুয়েরি employees
টেবিলের কর্মচারীদের নাম রিটার্ন করবে যারা HR
বিভাগের সাথে যুক্ত।
স্কেলার সাবকুয়েরি হল এমন একটি সাবকুয়েরি যা একক মান রিটার্ন করে এবং প্রধান কুয়েরিতে একাধিক ক্ষেত্রের মানের সাথে তুলনা করতে ব্যবহার হয়।
উদাহরণ:
SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
এই কুয়েরি সকল কর্মচারীর নাম রিটার্ন করবে, যাদের বেতন গড় বেতনের চেয়ে বেশি।
কোরেলেটেড সাবকুয়েরি এমন একটি সাবকুয়েরি যা প্রধান কুয়েরির প্রতিটি সারির জন্য কার্যকরী হয়। এর মানে হলো সাবকুয়েরি প্রতিটি মূল কুয়েরির সারির জন্য পুনরায় চালিত হয়।
উদাহরণ:
SELECT name
FROM employees e
WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id);
এখানে, প্রতিটি কর্মচারীর বেতন তার বিভাগের গড় বেতনের চেয়ে বেশি কিনা তা যাচাই করা হয়।
EXISTS সাবকুয়েরি ব্যবহৃত হয় যখন মূল কুয়েরি সাবকুয়েরির রেকর্ডের উপস্থিতি যাচাই করতে চায়। এটি কেবলমাত্র TRUE
বা FALSE
রিটার্ন করে।
উদাহরণ:
SELECT name
FROM employees
WHERE EXISTS (SELECT 1 FROM departments WHERE departments.id = employees.department_id);
এখানে, সমস্ত কর্মচারীর নাম রিটার্ন হবে যারা একটি বিভাগে কাজ করছেন।
JOIN
যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN ব্যবহৃত হয় ডেটার মধ্যে সম্পর্ক স্থাপনের জন্য।Joins এবং Subqueries DB2 তে ডেটাবেসের জটিল কুয়েরি তৈরিতে সাহায্য করে এবং বড় ডেটা সেটের মধ্যে সম্পর্ক বিশ্লেষণ এবং ফিল্টার করতে অত্যন্ত কার্যকরী।
common.read_more