Ús de múltiples taules d'unió interna a la base de dades MySQL? l'eficiència d'ús d'unió a l'esquerra a l'esquerra

Base de dades MySQLús de taules múltiples d'unió interna? eficàcia d'ús d'unió a l'esquerra a l'esquerra

Mysql ús de la connexió

En els capítols anteriors, hem après a llegir dades d'una taula, cosa que és relativament senzilla, però en aplicacions reals sovint és necessari llegir dades de múltiples taules de dades.

En aquest capítol us mostrarem com utilitzar JOIN de MySQL per consultar dades en dues o més taules.

Podeu utilitzar les instruccions JOIN de Mysql a SELECT, UPDATE i DELETE per unir consultes multitaules.

JOIN es divideix aproximadament en les tres categories següents segons la seva funció:

  • INNER JOIN (unió interna o equijoin): obteniu registres amb camps coincidents en dues taules.
  • LEFT JOIN (unió a l'esquerra):Obteniu tots els registres de la taula de l'esquerra, encara que no hi hagi cap registre coincident a la taula de la dreta.
  • RIGHT JOIN (unir-se a la dreta): Contràriament a LEFT JOIN, s'utilitza per obtenir tots els registres de la taula de la dreta, fins i tot si no hi ha registres coincidents corresponents a la taula de l'esquerra.

Utilitzant INNER JOIN al símbol del sistema

Tenim dues taules tcount_tbl i chenweiliang_tbl a la base de dades de chenweiliang.Les dades de les dues taules de dades són les següents:

Instància

Proveu els exemples següents:

dades de la instància de prova

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)

A continuació, utilitzarem MySQLINNER JOIN (també pots ometre INNER i utilitzar JOIN, l'efecte és el mateix)Per connectar les dues taules anteriors per llegir el valor del camp chenweiliang_count corresponent a tots els camps chenweiliang_author de la taula chenweiliang_tbl de la taula tcount_tbl:

COMBINACIÓ INTERNA

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)

La sentència SQL anterior és equivalent a:

clàusula ON

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 ESQUERRA UNIR

MySQL left join és diferent de join. MySQL LEFT JOIN llegirà totes les dades de la taula de dades de l'esquerra, encara que la taula de la dreta no tingui dades corresponents.

Instància

Proveu els exemples següents chenweiliang_tbl per a la taula de l'esquerra,tcount_tbl Per a la taula correcta, entengueu l'aplicació de MySQL LEFT JOIN:

ESQUERRA ESQUERRA

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)

A l'exemple anterior, s'utilitza LEFT JOIN i aquesta instrucció llegirà totes les dades de camp seleccionades de la taula de dades chenweiliang_tbl a l'esquerra, encara que no hi hagi cap valor de camp corresponent de chenweiliang_author a la taula tcount_tbl de la dreta.


UNIR-SE A LA DRETA de MySQL

MySQL RIGHT JOIN llegirà totes les dades de la taula de dades de la dreta, encara que no hi hagi dades corresponents a la taula de l'esquerra.

Instància

Proveu els exemples següents chenweiliang_tbl per a la taula de l'esquerra,tcount_tbl Per a la taula correcta, entengueu l'aplicació de MySQL RIGHT JOIN:

UNIR-SE A LA DRETA

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 s'utilitza a l'exemple anterior, aquesta instrucció llegirà totes les dades del camp seleccionat de la taula de dades de la dreta tcount_tbl, fins i tot si no hi ha cap valor de camp de chenweiliang_author corresponent a la taula de l'esquerra chenweiliang_tbl.


Utilitzant JOIN a l'script PHP

La funció mysqli_query() s'utilitza a PHP per executar sentències SQL, podeu utilitzar la mateixa instrucció SQL anterior com a paràmetre de la funció mysqli_query().

Proveu l'exemple següent:

MySQL ORDENA PER prova:

<?
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);
?>

Bloc d'Hope Chen Weiliang ( https://www.chenweiliang.com/ ) compartit "L'ús de taules múltiples de la unió interna de la base de dades MySQL? esquerra Eficiència d'ús d'unió a l'esquerra", us ajudarà.

Benvingut a compartir l'enllaç d'aquest article:https://www.chenweiliang.com/cwl-488.html

Benvingut al canal de Telegram del bloc de Chen Weiliang per rebre les últimes actualitzacions!

🔔 Sigues el primer a obtenir la valuosa "Guia d'ús de l'eina de màrqueting de continguts de ChatGPT" al directori principal del canal! 🌟
📚 Aquesta guia té un gran valor, 🌟Aquesta és una oportunitat rara, no la perdis! ⏰⌛💨
Comparteix i m'agrada si t'agrada!
Els vostres likes i compartir són la nostra motivació contínua!

 

发表 评论

La vostra adreça de correu electrònic no es publicarà. S'utilitzen els camps obligatoris * 标注

desplaçar-se a dalt