پایگاه داده MySQL داخلی پیوستن به چند جدول استفاده؟ بهره وری استفاده از اتصال چپ

پایگاه داده MySQLاستفاده از اتصال داخلی چند جدول؟ بهره وری استفاده از اتصال چپ

خروجی زیر استفاده از اتصال

در فصل‌های قبل، نحوه خواندن داده‌ها از یک جدول را یاد گرفتیم که نسبتاً ساده است، اما در برنامه‌های واقعی اغلب لازم است داده‌ها را از چندین جدول داده بخوانیم.

در این فصل به شما نشان خواهیم داد که چگونه از JOIN MySQL برای جستجوی داده ها در دو یا چند جدول استفاده کنید.

می توانید از JOIN Mysql در دستورات SELECT، UPDATE و DELETE برای پیوستن به پرس و جوهای چند جدولی استفاده کنید.

JOIN با توجه به عملکرد آن تقریباً به سه دسته زیر تقسیم می شود:

  • پیوستن داخلی (اتصال داخلی یا معادل): رکوردهایی را با فیلدهای منطبق در دو جدول دریافت کنید.
  • LEFT JOIN (پیوستن به چپ):تمام رکوردهای جدول سمت چپ را دریافت کنید، حتی اگر هیچ رکورد مشابهی در جدول سمت راست وجود نداشته باشد.
  • RIGHT JOIN (پیوستن راست): برخلاف LEFT JOIN، برای به دست آوردن تمام رکوردها در جدول سمت راست استفاده می شود، حتی اگر هیچ رکورد منطبقی در جدول سمت چپ وجود نداشته باشد.

استفاده از JOIN داخلی در Command Prompt

ما دو جدول tcount_tbl و chenweiliang_tbl در پایگاه داده chenweiliang داریم.داده های دو جدول داده به شرح زیر است:

نمونه، مثال

نمونه های زیر را امتحان کنید:

داده های نمونه آزمایشی

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 استفاده خواهیم کردJOIN داخلی (شما همچنین می توانید INNER را حذف کنید و از JOIN استفاده کنید، اثر یکسان است)برای اتصال دو جدول بالا برای خواندن مقدار فیلد chenweiliang_count مربوط به تمام فیلدهای chenweiliang_author در جدول chenweiliang_tbl در جدول tcount_tbl:

INNER JOIN

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)

دستور SQL فوق معادل است با:

بند 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 LEFT JOIN

Join چپ MySQL با Join متفاوت است. MySQL LEFT JOIN تمام داده های جدول داده سمت چپ را می خواند، حتی اگر جدول سمت راست هیچ داده متناظری نداشته باشد.

نمونه، مثال

نمونه های زیر را امتحان کنید chenweiliang_tbl برای میز سمت چپ،tcount_tbl برای جدول مناسب، کاربرد MySQL LEFT JOIN را درک کنید:

پیوستن به چپ

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 در سمت چپ را می خواند، حتی اگر مقدار فیلد مربوطه chenweiliang_author در جدول tcount_tbl در سمت راست وجود نداشته باشد.


MySQL RIGHT JOIN

MySQL RIGHT JOIN تمام داده های جدول داده سمت راست را می خواند، حتی اگر هیچ داده مربوطه در جدول سمت چپ وجود نداشته باشد.

نمونه، مثال

نمونه های زیر را امتحان کنید chenweiliang_tbl برای میز سمت چپ،tcount_tbl برای جدول مناسب، کاربرد MySQL RIGHT JOIN را درک کنید:

راست بپیوندید

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 در جدول chenweiliang_tbl در سمت چپ وجود نداشته باشد.


استفاده از JOIN در اسکریپت PHP

تابع ()mysqli_query در PHP برای اجرای دستورات SQL استفاده می‌شود، می‌توانید از همان دستور SQL که در بالا گفته شد به عنوان پارامتر تابع mysqli_query() استفاده کنید.

مثال زیر را امتحان کنید:

MySQL ORDER BY تست:

<?
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/ ) به اشتراک گذاشته شده "استفاده چند جدولی از پیوستن داخلی پایگاه داده MySQL؟ سمت چپ Join Usage Efficiency، به شما کمک خواهد کرد.

به اشتراک گذاری لینک این مقاله خوش آمدید:https://www.chenweiliang.com/cwl-488.html

به کانال تلگرام وبلاگ چن ویلیانگ خوش آمدید تا از آخرین به روز رسانی ها مطلع شوید!

🔔 اولین نفری باشید که "راهنمای استفاده از ابزار هوش مصنوعی بازاریابی محتوایی ChatGPT" را در فهرست بالای کانال دریافت می کنید! 🌟
📚 این راهنما حاوی ارزش بسیار زیادی است، 🌟این یک فرصت نادر است، آن را از دست ندهید! ⏰⌛💨
اگر دوست داشتید به اشتراک بگذارید و لایک کنید
اشتراک گذاری و لایک های شما انگیزه مستمر ما هستند!

 

发表 评论

آدرس ایمیل شما منتشر نخواهد شد. از زمینه های مورد نیاز استفاده می شود * 标注

به بالا بروید