MySQL ডাটাবেস অভ্যন্তরীণ যোগদান মাল্টি-টেবিল ব্যবহার? বাম বাম যোগদান ব্যবহার দক্ষতা

মাইএসকিউএল ডাটাবেসঅভ্যন্তরীণ যোগদান মাল্টি টেবিল ব্যবহার? বাম বাম যোগদান ব্যবহার দক্ষতা

মাইএসকিউএল সংযোগ ব্যবহার

পূর্ববর্তী অধ্যায়গুলিতে, আমরা শিখেছি কিভাবে একটি টেবিল থেকে ডেটা পড়তে হয়, যা তুলনামূলকভাবে সহজ, কিন্তু বাস্তব অ্যাপ্লিকেশনগুলিতে এটি প্রায়ই একাধিক ডেটা টেবিল থেকে ডেটা পড়তে হয়।

এই অধ্যায়ে আমরা আপনাকে দেখাব কিভাবে MySQL এর JOIN ব্যবহার করে দুই বা ততোধিক টেবিলে ডেটা জিজ্ঞাসা করতে হয়।

আপনি মাল্টি-টেবিল প্রশ্নে যোগ দিতে SELECT, UPDATE এবং DELETE স্টেটমেন্টে Mysql-এর JOIN ব্যবহার করতে পারেন।

JOIN এর কার্য অনুসারে মোটামুটিভাবে নিম্নলিখিত তিনটি বিভাগে বিভক্ত:

  • অভ্যন্তরীণ যোগদান (অভ্যন্তরীণ যোগদান, বা সমকক্ষ): দুটি টেবিলে মিলে যাওয়া ক্ষেত্রগুলির সাথে রেকর্ডগুলি পান৷
  • বাম যোগদান (বাম যোগদান):বাম টেবিলে সব রেকর্ড পান, এমনকি ডান টেবিলে কোনো মিলে যাওয়া রেকর্ড না থাকলেও।
  • ডান যোগদান (ডান যোগদান): বাম যোগদানের বিপরীতে, এটি ডান সারণীতে সমস্ত রেকর্ড পেতে ব্যবহার করা হয়, এমনকি যদি বাম সারণীতে কোনো সংশ্লিষ্ট মিলে যাওয়া রেকর্ড না থাকে।

কমান্ড প্রম্পটে INNER JOIN ব্যবহার করে

chenweiliang ডাটাবেসে আমাদের tcount_tbl এবং chenweiliang_tbl দুটি টেবিল আছে।দুটি ডেটা টেবিলের ডেটা নিম্নরূপ:

দৃষ্টান্ত

নিম্নলিখিত উদাহরণ চেষ্টা করুন:

পরীক্ষার উদাহরণ ডেটা

mysql> use chenweiliang;
Database changed
mysql> SELECT * FROM tcount_tbl;
+---------------+--------------+
| chenweiliang_author | chenweiliang_count |
+---------------+--------------+
| 陈沩亮博客 | 10 |
| chenweiliang.com | 20 |
| Google | 22 |
+---------------+--------------+
3 rows in set (0.01 sec)
 
mysql> SELECT * from chenweiliang_tbl;
+-----------+---------------+---------------+-----------------+
| chenweiliang_id | chenweiliang_title | chenweiliang_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 1 | 学习 PHP | 陈沩亮博客 | 2017-04-12 |
| 2 | 学习 MySQL | 陈沩亮博客 | 2017-04-12 |
| 3 | 学习 Java | chenweiliang.com | 2015-05-01 |
| 4 | 学习 Python | chenweiliang.com | 2016-03-06 |
| 5 | 学习 C | FK | 2017-04-05 |
+-----------+---------------+---------------+-----------------+
5 rows in set (0.01 sec)

পরবর্তীতে আমরা MySQL ব্যবহার করবঅভ্যন্তরীণ যোগদান (আপনি INNER বাদ দিয়ে যোগদান ব্যবহার করতে পারেন, প্রভাব একই)tcount_tbl টেবিলের chenweiliang_tbl টেবিলের সমস্ত chenweiliang_author ক্ষেত্রের সাথে সম্পর্কিত chenweiliang_count ক্ষেত্রের মান পড়তে উপরের দুটি টেবিলের সাথে সংযোগ করতে:

ভেতরের যোগ দিতে

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a INNER JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
+-------------+-----------------+----------------+
4 rows in set (0.00 sec)

উপরের এসকিউএল বিবৃতিটি এর সমতুল্য:

WHERE ধারা

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a, tcount_tbl b WHERE a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
+-------------+-----------------+----------------+
4 rows in set (0.01 sec)

MySQL বাম যোগদান

মাইএসকিউএল বাম যোগ যোগদান থেকে আলাদা। MySQL LEFT JOIN বাম ডাটা টেবিলের সমস্ত ডেটা পড়বে, এমনকি ডান টেবিলে কোনো সংশ্লিষ্ট ডেটা না থাকলেও।

দৃষ্টান্ত

নিম্নলিখিত উদাহরণ চেষ্টা করুন chenweiliang_tbl বাম টেবিলের জন্য,tcount_tbl সঠিক টেবিলের জন্য, MySQL বাম যোগদানের আবেদনটি বুঝুন:

বাম যোগ দিন

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a LEFT JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
| 5 | FK | NULL |
+-------------+-----------------+----------------+
5 rows in set (0.01 sec)

উপরের উদাহরণে, LEFT JOIN ব্যবহার করা হয়েছে, এবং এই বিবৃতিটি বাম দিকে chenweiliang_tbl-এর সমস্ত নির্বাচিত ফিল্ড ডেটা পড়বে, এমনকি ডানদিকে tcount_tbl টেবিলে chenweiliang_author-এর কোনো সংশ্লিষ্ট ফিল্ড মান না থাকলেও।


মাইএসকিউএল ডান যোগদান

MySQL RIGHT JOIN ডানদিকের ডাটা টেবিলের সমস্ত ডেটা পড়বে, এমনকি বাম দিকের টেবিলে কোনো সংশ্লিষ্ট ডেটা না থাকলেও।

দৃষ্টান্ত

নিম্নলিখিত উদাহরণ চেষ্টা করুন chenweiliang_tbl বাম টেবিলের জন্য,tcount_tbl সঠিক টেবিলের জন্য, MySQL এর আবেদনটি বুঝুন ডান যোগ দিন:

ডান যোগদান

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a RIGHT JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
| NULL | NULL | 22 |
+-------------+-----------------+----------------+
5 rows in set (0.01 sec)

উপরের উদাহরণে RIGHT JOIN ব্যবহার করা হয়েছে, এই বিবৃতিটি ডান ডেটা টেবিল tcount_tbl-এর সমস্ত নির্বাচিত ফিল্ড ডেটা পড়বে, এমনকি বাম টেবিলে chenweiliang_author ক্ষেত্রের মান না থাকলেও৷


PHP স্ক্রিপ্টে JOIN ব্যবহার করে

mysqli_query() ফাংশনটি পিএইচপি-তে SQL স্টেটমেন্ট চালানোর জন্য ব্যবহার করা হয়, আপনি mysqli_query() ফাংশনের প্যারামিটার হিসাবে উপরের মত একই SQL স্টেটমেন্ট ব্যবহার করতে পারেন।

নিম্নলিখিত উদাহরণ চেষ্টা করুন:

পরীক্ষা দ্বারা MySQL ক্রম:

<?
php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$sql = 'SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a INNER JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author';
 
mysqli_select_db( $conn, 'chenweiliang' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
 die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>陈沩亮博客 MySQL JOIN 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>作者</td><td>登陆次数</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{
 echo "<tr><td> {$row['chenweiliang_id']}</td> ".
 "<td>{$row['chenweiliang_author']} </td> ".
 "<td>{$row['chenweiliang_count']} </td> ".
 "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

হোপ চেন উইলিয়াং ব্লগ ( https://www.chenweiliang.com/ ) ভাগ করেছেন "মাল্টি-টেবিল ব্যবহার মাইএসকিউএল ডাটাবেসের অভ্যন্তরীণ যোগদান? বাম যোগদান ব্যবহার দক্ষতা", এটি আপনাকে সাহায্য করবে।

এই নিবন্ধটির লিঙ্ক শেয়ার করতে স্বাগতম:https://www.chenweiliang.com/cwl-488.html

সর্বশেষ আপডেট পেতে চেন ওয়েইলিয়াং এর ব্লগের টেলিগ্রাম চ্যানেলে স্বাগতম!

🔔 চ্যানেলের শীর্ষ ডিরেক্টরিতে মূল্যবান "ChatGPT সামগ্রী বিপণন AI টুল ব্যবহারের নির্দেশিকা" পেতে প্রথম হন! 🌟
📚 এই গাইডটিতে বিশাল মূল্য রয়েছে, 🌟এটি একটি বিরল সুযোগ, এটি মিস করবেন না! ⏰⌛💨
ভালো লাগলে শেয়ার এবং লাইক করুন!
আপনার শেয়ার এবং লাইক আমাদের ক্রমাগত অনুপ্রেরণা!

 

发表 评论

আপনার ইমেইল ঠিকানা প্রচার করা হবে না. 必填 项 已 用 * 标注

উপরে যান