SQL এর UNION, INTERSECT, এবং EXCEPT অপারেটরগুলি একসাথে ডেটাবেসের টেবিলের তথ্য ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। এগুলি বিভিন্ন কুয়েরি থেকে ডেটা একত্রিত, মিলিত, বা পার্থক্য নির্ধারণ করার জন্য ব্যবহৃত হয়। এই অপারেটরগুলির ব্যবহার সাধারণত তখনই হয় যখন একাধিক SELECT কুয়েরি থেকে ডেটা একত্রিত করতে বা তুলনা করতে হয়।
1. UNION – দুটি বা ততোধিক কুয়েরি থেকে ডেটা একত্রিত করা
UNION অপারেটর দুটি বা তার বেশি SELECT কুয়েরি থেকে ডেটা একত্রিত করে। এটি একমাত্র ইউনিক (distinct) রেকর্ডস ফিরিয়ে দেয়, অর্থাৎ ডুপ্লিকেট রেকর্ড বাদ দিয়ে কেবল একবার প্রদর্শন করবে।
1.1. UNION এর সাধারণ সিনট্যাক্স:
SELECT column1, column2
FROM table1
UNION
SELECT column1, column2
FROM table2;
- এখানে, দুটি SELECT কুয়েরি একত্রিত হচ্ছে এবং ডুপ্লিকেট রেকর্ড বাদ দিয়ে ইউনিক রেকর্ডগুলো দেখানো হচ্ছে।
1.2. UNION উদাহরণ:
ধরা যাক, আপনার দুটি টেবিল আছে: Employees_Dept1 এবং Employees_Dept2, এবং আপনি দুটো টেবিলের সকল কর্মচারীর নাম একত্রিত করতে চান:
SELECT Name
FROM Employees_Dept1
UNION
SELECT Name
FROM Employees_Dept2;
এখানে UNION কুয়েরি দুটি টেবিল থেকে সকল ইউনিক কর্মচারীর নাম একত্রিত করবে। যেকোনো ডুপ্লিকেট নাম শুধুমাত্র একবার দেখাবে।
1.3. UNION ALL এর ব্যবহার:
যদি আপনি ডুপ্লিকেট রেকর্ড অন্তর্ভুক্ত করতে চান, তাহলে UNION ALL ব্যবহার করতে হবে। এটি সমস্ত রেকর্ড, ডুপ্লিকেট সহ, ফিরিয়ে দেবে।
SELECT Name
FROM Employees_Dept1
UNION ALL
SELECT Name
FROM Employees_Dept2;
এখানে UNION ALL কুয়েরি দুটি টেবিল থেকে সব কর্মচারীর নাম দেখাবে, ডুপ্লিকেটসহ।
2. INTERSECT – দুটি কুয়েরির মিলিত ডেটা নির্বাচন
INTERSECT অপারেটর দুটি SELECT কুয়েরি থেকে কেবলমাত্র মিলিত (common) রেকর্ডগুলো নির্বাচন করে। অর্থাৎ, এটি দুটি কুয়েরি থেকে কেবল সেই রেকর্ডগুলো দেখাবে, যেগুলি উভয় কুয়েরি থেকেই পাওয়া যাবে।
2.1. INTERSECT এর সাধারণ সিনট্যাক্স:
SELECT column1, column2
FROM table1
INTERSECT
SELECT column1, column2
FROM table2;
- এখানে, দুটি SELECT কুয়েরির মধ্যে যেসব রেকর্ড মিল আছে, কেবলমাত্র সেগুলিই নির্বাচিত হবে।
2.2. INTERSECT উদাহরণ:
ধরা যাক, আপনার দুটি টেবিল রয়েছে Employees_Dept1 এবং Employees_Dept2, এবং আপনি দেখতে চান, কোন কর্মচারী দুটি টেবিলেই উপস্থিত আছে:
SELECT Name
FROM Employees_Dept1
INTERSECT
SELECT Name
FROM Employees_Dept2;
এখানে INTERSECT কেবলমাত্র সেই কর্মচারীদের নাম নির্বাচন করবে যারা উভয় টেবিলেই উপস্থিত রয়েছে।
3. EXCEPT – একটি কুয়েরির ডেটা অন্য কুয়েরি থেকে বাদ দেওয়া
EXCEPT অপারেটর দুটি SELECT কুয়েরি থেকে প্রথম কুয়েরির রেকর্ড গুলি, যেগুলি দ্বিতীয় কুয়েরি তে নেই, তা নির্বাচন করে। এটি প্রথম কুয়েরির ডেটা থেকে দ্বিতীয় কুয়েরির ডেটা বাদ দেয়।
3.1. EXCEPT এর সাধারণ সিনট্যাক্স:
SELECT column1, column2
FROM table1
EXCEPT
SELECT column1, column2
FROM table2;
- এখানে, প্রথম কুয়েরির সকল রেকর্ডগুলির মধ্যে সেই রেকর্ডগুলি নির্বাচন করা হবে যা দ্বিতীয় কুয়েরিতে নেই।
3.2. EXCEPT উদাহরণ:
ধরা যাক, আপনার দুটি টেবিল রয়েছে Employees_Dept1 এবং Employees_Dept2, এবং আপনি দেখতে চান কোন কর্মচারীরা Employees_Dept1 টেবিলে আছেন কিন্তু Employees_Dept2 টেবিলে নেই:
SELECT Name
FROM Employees_Dept1
EXCEPT
SELECT Name
FROM Employees_Dept2;
এখানে EXCEPT কেবলমাত্র সেই কর্মচারীদের নাম দেখাবে যারা Employees_Dept1 টেবিলে আছেন, কিন্তু Employees_Dept2 টেবিলে নেই।
4. অপারেটরগুলির মধ্যে পার্থক্য
| অপারেটর | বর্ণনা | ডুপ্লিকেট রেকর্ড | মিলিত রেকর্ড | ব্যবহারের উদাহরণ |
|---|---|---|---|---|
| UNION | দুটি কুয়েরি থেকে ইউনিক রেকর্ড একত্রিত করে | বাদ দেওয়া | দুটি কুয়েরির মিলিত রেকর্ডগুলো | কর্মচারী নাম একত্রিত করা |
| UNION ALL | সমস্ত রেকর্ড (ডুপ্লিকেট সহ) একত্রিত করে | অন্তর্ভুক্ত | সমস্ত রেকর্ড | একাধিক টেবিলের সব ডেটা একত্রিত করা |
| INTERSECT | দুটি কুয়েরি থেকে মিলিত রেকর্ড নির্বাচন করে | বাদ দেওয়া | দুটি কুয়েরির মিলিত রেকর্ড | দুটি টেবিলের মিলিত ডেটা দেখানো |
| EXCEPT | প্রথম কুয়েরির ডেটা দ্বিতীয় কুয়েরি থেকে বাদ দিয়ে দেখায় | বাদ দেওয়া | প্রথম কুয়েরির এক্সক্লুসিভ ডেটা | প্রথম টেবিলের ডেটা যেটি দ্বিতীয় টেবিলে নেই |
সারাংশ
UNION, INTERSECT, এবং EXCEPT অপারেটরগুলি SQL এ ডেটা একত্রিত, মিলিত বা বাদ দেওয়ার জন্য ব্যবহৃত হয়। UNION বিভিন্ন কুয়েরি থেকে ইউনিক ডেটা একত্রিত করে, INTERSECT কেবল মিলিত ডেটা প্রদান করে, এবং EXCEPT একটি কুয়েরি থেকে অপর কুয়েরির ডেটা বাদ দেয়। এগুলোর সঠিক ব্যবহার ডেটাবেস কুয়েরি উন্নত করতে সাহায্য করে এবং নির্দিষ্ট ডেটা নির্বাচন করতে কার্যকর।
Read more