Якҷоякунии дохилии пойгоҳи додаҳои MySQL истифодаи чанд ҷадвал? ба чапи чап самаранокии истифодаи пайвастшавӣ

пойгоҳи додаҳои MySQLдарунӣ пайвастшавӣ истифодаи чанд мизи? самаранокии истифодаи чап ҳамроҳшавӣ

MySQL истифодаи пайвастшавӣ

Дар бобҳои қаблӣ мо тарзи хондани маълумотро аз як ҷадвал омӯхтем, ки ин нисбатан содда аст, аммо дар барномаҳои воқеӣ аксар вақт хондани маълумот аз ҷадвалҳои сершумори додаҳо зарур аст.

Дар ин боб мо ба шумо нишон медиҳем, ки чӣ тавр истифода бурдани JOIN-и MySQL барои дархост кардани маълумот дар ду ё зиёда ҷадвалҳо.

Шумо метавонед JOIN-и Mysql-ро дар изҳороти SELECT, UPDATE ва DELETE барои ҳамроҳ шудан ба дархостҳои бисёрҷадвал истифода баред.

JOIN аз рӯи вазифааш тақрибан ба се категорияи зерин тақсим мешавад:

  • ҲАМОИШИ ДОХИЛӢ (ҳамбастагии ботинӣ ё мувозинат): Сабтҳоро бо майдонҳои мувофиқ дар ду ҷадвал гиред.
  • ҶАҲОНИ ЧАП (пайвастани чап):Ҳама сабтҳоро дар ҷадвали чап гиред, ҳатто агар дар ҷадвали рост ягон сабти мувофиқ мавҷуд набошад.
  • ХАМРОХИ РОСТ (пайвастани рост): Бар хилофи LEFT 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 JOIN (шумо инчунин метавонед INNER-ро тарк кунед ва JOIN-ро истифода баред, таъсир ҳамон аст)Барои пайваст кардани ду ҷадвали боло барои хондани арзиши майдони chenweiliang_count, ки ба ҳамаи майдонҳои chenweiliang_author дар ҷадвали chenweiliang_tbl дар ҷадвали tcount_tbl мувофиқ аст:

ИНТИХОБОТ

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 ЧАП ХАМРОХ

Пайвастшавии чапи MySQL аз ҳамроҳшавӣ фарқ мекунад. 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 дар тарафи чапро мехонад, ҳатто агар дар ҷадвали tcount_tbl дар тарафи рост арзиши майдони мувофиқи chenweiliang_author мавҷуд набошад.


ХАМРОХ шудан бо MySQL

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_tbl арзиши майдони мувофиқи chenweiliang_author мавҷуд набошад.


Истифодаи JOIN дар скрипти PHP

Функсияи mysqli_query() дар PHP барои иҷрои изҳороти SQL истифода мешавад, шумо метавонед ҳамон изҳороти SQL-ро, ки дар боло зикр шудааст, ҳамчун параметр ба функсияи mysqli_query() истифода баред.

Намунаи зеринро санҷед:

Тартиби 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);
?>

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) муштарак "Истифодаи чандмизии пойгоҳи додаҳои MySQL пайвасти дохилии? Самаранокии истифодаи чапи ҳамроҳшавӣ», он ба шумо кӯмак мекунад.

Хуш омадед ба мубодилаи истиноди ин мақола:https://www.chenweiliang.com/cwl-488.html

Хуш омадед ба канали Telegram блоги Чен Вейлян барои гирифтани навсозиҳои охирин!

🔔 Аввалин шуда дар феҳристи болоии канал "Дастури истифодаи абзори AI-и ChatGPT Content Marketing" -ро гиред! 🌟
📚 Ин дастур дорои арзиши бузург аст, 🌟Ин як имконияти нодир аст, онро аз даст надиҳед! ⏰⌛💨
Агар ба шумо маъқул бошад, мубодила кунед ва лайк монед!
Мубодилаи шумо ва лайкҳои шумо ангезаи доимии мост!

 

发表 评论

Суроғаи почтаи электронии шумо нашр карда намешавад. 必填 项 已 用 * Нишон

ба боло ҳаракат кунед