Joins এবং Subqueries SQL ডেটাবেসে ডেটা পুনরুদ্ধার এবং বিশ্লেষণ করার জন্য অত্যন্ত গুরুত্বপূর্ণ কৌশল। HSQLDB SQL:2011 স্ট্যান্ডার্ড অনুসরণ করে, যা এই দুটি ফিচার ব্যবহারে শক্তিশালী সমর্থন প্রদান করে। Joins ব্যবহার করে একাধিক টেবিলের ডেটা একত্রিত করা যায় এবং Subqueries ব্যবহার করে একটি প্রশ্নের ভিতরে আরও একটি প্রশ্ন চালানো যায়।
Joins
Joins হল একাধিক টেবিল থেকে ডেটা পুনরুদ্ধারের পদ্ধতি। এটি টেবিলগুলির মধ্যে সম্পর্ক স্থাপন করে এবং ডেটাকে একত্রিত করে।
INNER JOIN
INNER JOIN এমন একটি পদ্ধতি যা শুধুমাত্র সেই রেকর্ডগুলিকে ফেরত দেয় যেখানে দুটি টেবিলের মধ্যে মিল আছে।
উদাহরণ
employees এবং departments টেবিল:
| employees | departments |
|---|---|
| employee_id | dept_id |
| 1 | 101 |
| 2 | 102 |
| 3 | 103 |
SELECT e.employee_name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.dept_id = d.dept_id;
ফলাফল:
| employee_name | department_name |
|---|---|
| Alice | HR |
| Bob | IT |
| Charlie | Sales |
OUTER JOIN
OUTER JOIN তিন ধরনের হতে পারে:
- LEFT JOIN: বাম দিকের টেবিলের সমস্ত রেকর্ড রাখে এবং ডান দিকের মিলযুক্ত রেকর্ড।
- RIGHT JOIN: ডান দিকের টেবিলের সমস্ত রেকর্ড রাখে এবং বাম দিকের মিলযুক্ত রেকর্ড।
- FULL JOIN: উভয় টেবিলের সমস্ত রেকর্ড রাখে, মিল থাকুক বা না থাকুক।
উদাহরণ: LEFT JOIN
SELECT e.employee_name, d.department_name
FROM employees e
LEFT JOIN departments d
ON e.dept_id = d.dept_id;
ফলাফল:
| employee_name | department_name |
|---|---|
| Alice | HR |
| Bob | IT |
| Charlie | Sales |
উদাহরণ: FULL OUTER JOIN
SELECT e.employee_name, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON e.dept_id = d.dept_id;
ফলাফল (যদি departments এ অতিরিক্ত ডেটা থাকে):
| employee_name | department_name |
|---|---|
| Alice | HR |
| Bob | IT |
| Charlie | Sales |
| NULL | Marketing |
Subqueries
Subqueries হল এমন একটি কৌশল যেখানে একটি SQL প্রশ্নের ভিতরে আরেকটি SQL প্রশ্ন চালানো হয়। এটি জটিল ডেটা বিশ্লেষণ এবং পুনরুদ্ধারে ব্যবহৃত হয়।
উদাহরণ ১: WHERE-এ Subquery ব্যবহার
ধরা যাক, আমরা সেই কর্মচারীদের নাম বের করতে চাই যারা HR ডিপার্টমেন্টে কাজ করে।
SELECT employee_name
FROM employees
WHERE dept_id = (
SELECT dept_id
FROM departments
WHERE department_name = 'HR'
);
ফলাফল:
| employee_name |
|---|
| Alice |
উদাহরণ ২: SELECT-এ Subquery ব্যবহার
সবচেয়ে বেশি কর্মচারী রয়েছে এমন ডিপার্টমেন্টের নাম বের করা:
SELECT department_name
FROM departments
WHERE dept_id = (
SELECT dept_id
FROM employees
GROUP BY dept_id
ORDER BY COUNT(*) DESC
LIMIT 1
);
উদাহরণ ৩: FROM-এ Subquery ব্যবহার
সব ডিপার্টমেন্টের কর্মচারী সংখ্যা গণনা করা:
SELECT department_name, employee_count
FROM (
SELECT d.department_name, COUNT(e.employee_id) AS employee_count
FROM departments d
LEFT JOIN employees e ON d.dept_id = e.dept_id
GROUP BY d.department_name
) AS dept_summary;
Joins এবং Subqueries এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Joins | Subqueries |
|---|---|---|
| ব্যবহার | একাধিক টেবিল থেকে ডেটা একত্রিত করা | একটি প্রশ্নের ভিতরে অন্য প্রশ্ন চালানো |
| পারফরম্যান্স | সাধারণত দ্রুত (বিশেষ করে বড় ডেটাতে) | জটিল হলে ধীর হতে পারে |
| সহজতা | নির্দিষ্ট সম্পর্কের জন্য সহজ | জটিল বিশ্লেষণের জন্য উপযোগী |
সারাংশ
Joins এবং Subqueries SQL ডেটা ম্যানিপুলেশনের দুটি শক্তিশালী টুল। Joins ব্যবহার করে একাধিক টেবিলের ডেটা একত্রিত করা সম্ভব, যেখানে Subqueries একটি প্রশ্নের ভিতরে আরও একটি প্রশ্ন চালানোর সুযোগ দেয়। HSQLDB এ SQL:2011 স্ট্যান্ডার্ড সমর্থন থাকায় এই দুটি কৌশল সহজে এবং দক্ষতার সাথে ব্যবহার করা যায়।
Read more