MySQL база на податоци за внатрешна употреба на повеќе табели? лево лево приклучување на ефикасноста на користење

MySQL база на податоциКако да се користи внатрешно спојување со повеќе табели? лево лево приклучување на ефикасноста на користење

Mysql Употреба на врски

Во претходните поглавја научивме како да читаме податоци од една табела, што е релативно едноставно, но во реални апликации често е потребно да се читаат податоци од повеќе табели со податоци.

Во ова поглавје, ќе ве запознаеме како да го користите JOIN на MySQL за барање податоци во две или повеќе табели.

Можете да го користите JOIN на Mysql во изјавите SELECT, UPDATE и DELETE за да се придружите на повеќе барања за табели.

JOIN е грубо поделен на следните три категории според неговите функции:

  • ВНАТРЕШЕН ПРИКЛУЧУВАЊЕ (внатрешно спојување или еквивалентно спојување): Добијте записи за односите со совпаѓање на полињата во две табели.
  • LEFT JOIN (лево приклучување):Добијте ги сите записи во левата табела, дури и ако нема соодветни записи што се совпаѓаат во десната табела.
  • ПРИКЛУЧУВАЈ ДЕСНО (десно приклучување): Спротивно на LEFT JOIN, се користи за добивање на сите записи во десната табела, дури и ако нема соодветни записи што се совпаѓаат во левата табела.

Користење на ВНАТРЕШЕН ПРИКЛУЧУВАЊЕ во командната линија

Имаме две табели 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, ефектот е ист)За да ги поврзете горните две табели за да ги прочитате вредностите на полето 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 изјава е еквивалентна на:

КАДЕ клаузула

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 лево, дури и ако нема соодветна вредност на полето chenweiliang_author во табелата tcount_tbl на десната страна.


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_author во левата табела chenweiliang_tbl.


Користење 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 ( https://www.chenweiliang.com/ ) shared "Како да користите внатрешно спојување на повеќе табели во базата на податоци MySQL?" „Ефикасноста на користењето лево спојување“ ќе ви биде од помош.

Добредојдовте да ја споделите врската од оваа статија:https://www.chenweiliang.com/cwl-488.html

За да отклучите повеќе скриени трикови🔑, добредојдени сте да се придружите на нашиот Телеграм канал!

Споделете и лајкнете ако ви се допаѓа! Вашите споделувања и лајкови се наша постојана мотивација!

 

评论

Вашата адреса за е-пошта нема да биде објавена. Се користат задолжителните полиња * Етикета

Директориум за статии
Дојдете до врв