কম্পিউটার

MySQL যোগদান কি?


আমরা জানি যে MySQL SELECT এক সময়ে একটি টেবিল থেকে তথ্য পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে কিন্তু শুধুমাত্র একটি টেবিল ব্যবহার করে সমস্ত প্রশ্নের উত্তর দেওয়া যায় না। তাই উপরোক্ত উদ্দেশ্যের জন্য যেমন একাধিক টেবিলে সংরক্ষিত তথ্যের উপর অঙ্কন করা, আমরা জয়েন অপারেশন ব্যবহার করতে পারি।

মূলত, মাইএসকিউএল যোগ হল দুটি বা ততোধিক টেবিল থেকে ডেটা লিঙ্ক করার একটি পদ্ধতি যা তাদের মধ্যকার সাধারণ কলামের মানের উপর ভিত্তি করে, যার ফলাফল একটি নতুন অস্থায়ী টেবিল। অন্য কথায়, আমরা বলতে পারি যে একটি MySQL যোগদান আমাদেরকে একটি নতুন অস্থায়ী টেবিলে দুটি বা ততোধিক যৌক্তিকভাবে সম্পর্কিত টেবিল থেকে রেকর্ড পুনরুদ্ধার করতে সক্ষম করে। নতুন অস্থায়ী টেবিলটি দুটি টেবিলের ভাগ করা কলাম(গুলি) এর উপর ভিত্তি করে তৈরি করা হয়েছে, যা তুলনার অর্থপূর্ণ কলাম(গুলি) প্রতিনিধিত্ব করে৷

সাধারণ মানগুলি সাধারণত একই কলামের নাম এবং ডেটা-টাইপ হয় যা উভয় অংশগ্রহণকারী টেবিলে যোগদান করা হয়৷ এই কলামগুলিকে যোগ কী বা সাধারণ কী বলা হয়।

MySQL নিম্নলিখিত ধরনের যোগদান সমর্থন করে:

ক্রস জয়েন

প্রকৃতপক্ষে, একটি ক্রস যোগ একটি যোগদানের মৌলিক রূপ। যদি আমাদের দুটি টেবিল থাকে তবে এটি টেবিল 1 এর প্রতিটি সারি নেয় এবং টেবিল 2 এর প্রতিটি সারিতে এটি যুক্ত করে। তাই যদি টেবিল 1-এ 3টি সারি থাকে এবং টেবিল 2-এ 2টি সারি থাকে তবে এই টেবিলগুলি ক্রস যুক্ত করার পরে আমরা মোট 6টি সারি পাব। এটি বোঝার জন্য, আমরা tbl_1 এবং tbl_2 নামের দুটি টেবিলের উদাহরণ নিচ্ছি যেটিতে নিম্নলিখিত ডেটা রয়েছে:

mysql> Select * from tbl_1;
+----+--------+
| Id | Name   |
+----+--------+
| 1  | Gaurav  |
| 2  | Rahul   |
| 3  | Raman   |
| 4  | Aarav   |
+----+--------+
4 rows in set (0.00 sec)

mysql> Select * from tbl_2;
+----+---------+
| Id | Name    |
+----+---------+
| A  | Aarav   |
| B  | Mohan   |
| C  | Jai     |
| D  | Harshit |
+----+---------+
4 rows in set (0.00 sec)

এখন, নীচের প্রশ্নটি উপরে উল্লিখিত টেবিলের মধ্যে ক্রস যোগদান করবে।

mysql> Select tbl_1.id, tbl_2.id FROM tbl_1 CROSS JOIN tbl_2;
+----+----+
| id | id |
+----+----+
| 1  | A  |
| 2  | A  |
| 3  | A  |
| 4  | A  |
| 1  | B  |
| 2  | B  |
| 3  | B  |
| 4  | B  |
| 1  | C  |
| 2  | C  |
| 3  | C  |
| 4  | C  |
| 1  | D  |
| 2  | D  |
| 3  | D  |
| 4  | D  |
+----+----+
16 rows in set (0.00 sec)

ইনার জয়েন বা ইকুই জয়েন করুন

একটি অভ্যন্তরীণ যোগদান তৈরি করতে আমাদের একটি নির্দিষ্ট শর্ত উল্লেখ করতে হবে যা যোগ-প্রেডিকেট নামে পরিচিত। প্রকৃতপক্ষে অভ্যন্তরীণ বা সমান যোগদানের জন্য মিলিত কলামের মান থাকতে দুটি সংযুক্ত টেবিলে সারি প্রয়োজন। এটি বোঝার জন্য, নিম্নোক্ত ক্যোয়ারীটি 'tbl_1' এবং 'tbl_2' নামের টেবিলে অভ্যন্তরীণ যোগদান করবে।

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 INNER JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+----+
| id | id |
+----+----+
| 4  | A  |
+----+----+
1 row in set (0.00 sec)

ফলাফল সেট দেখায় যে কলামের নামের id =4-এর জন্য tbl_1 এবং id ='A'-এর জন্য tbl_2-এ একই মান রয়েছে।

বাম যোগদান করুন

বাম যোগদানের জন্যও একটি যোগ-প্রেডিকেট প্রয়োজন, যেমনটি অভ্যন্তরীণ যোগদানের প্রয়োজন ছিল৷ শুধুমাত্র পার্থক্য হল একটি বাম যোগদান ব্যবহার করে দুটি টেবিলে যোগদান করার সময়, বাম টেবিল এবং ডান টেবিলের ধারণাটি চালু করা হয়। এটি বাম টেবিলের সমস্ত সারি ফেরত দেয় যার মধ্যে সারিগুলি যোগদান-প্রেডিকেটকে সন্তুষ্ট করে এবং সেই সারিগুলি যা যোগ-প্রেডিকেটকে সন্তুষ্ট করে না। যে সারি জয়েন-প্রেডিকেটের সাথে মেলে না, তাদের জন্য ফলাফল সেটে ডান টেবিলের কলামে NULL প্রদর্শিত হবে। এটি বোঝার জন্য, টেবিল tbl_1 এবং tbl_2 ব্যবহার করে নিম্নলিখিত ক্যোয়ারী বাম যোগদান সম্পাদন করুন:

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+------+
| id | id   |
+----+------+
| 1  | NULL  |
| 2  | NULL  |
| 3  | NULL  |
| 4  | A     |
+----+------+
4 rows in set (0.02 sec)

ডান যোগদান করুন

এটি LEFT যোগদানের অনুরূপ ব্যতীত যে টেবিলের চিকিত্সা বিপরীত হয়। একটি ডান যোগদানের সাথে ডান টেবিল থেকে প্রতিটি সারি ফলাফল সেটে উপস্থিত হবে। ডান টেবিলের সারিগুলির জন্য যেগুলির বাম টেবিলে মিলিত সারি নেই, বাম টেবিলের কলামগুলির জন্য NULL প্রদর্শিত হবে৷ এটি বোঝার জন্য, টেবিল tbl_1 এবং tbl_2 ব্যবহার করে নিম্নলিখিত ক্যোয়ারী সঠিক যোগদান করুন:

mysql> SELECT tbl_1.id,tbl_2.id
-> FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+------+----+
| id   | id |
+------+----+
| 4    | A  |
| NULL | B  |
| NULL | C  |
| NULL | D  |
+------+----+
4 rows in set (0.00 sec)

  1. MySQL 8.0-এ অপশন এবং ভেরিয়েবল কি কি অবচয়?

  2. MySQL 8.0 এ কোন বিকল্প এবং ভেরিয়েবল চালু করা হয়েছে?

  3. মাইএসকিউএল সমর্থিত প্ল্যাটফর্মগুলি কী কী?

  4. C# এ প্রতিফলন কি?