¿Uso de múltiples tablas de unión interna de la base de datos MySQL? eficiencia de uso de combinación izquierda izquierda

base de datos mysqluso de tablas múltiples de unión interna? eficiencia de uso de combinación izquierda izquierda

Mysql uso de conexión

En los capítulos anteriores, aprendimos cómo leer datos de una tabla, lo cual es relativamente simple, pero en aplicaciones reales a menudo es necesario leer datos de varias tablas de datos.

En este capítulo le mostraremos cómo usar JOIN de MySQL para consultar datos en dos o más tablas.

Puede usar JOIN de Mysql en las declaraciones SELECT, UPDATE y DELETE para unir consultas de tablas múltiples.

JOIN se divide aproximadamente en las siguientes tres categorías según su función:

  • INNER JOIN (unión interna o equijoin): Obtener registros con campos coincidentes en dos tablas.
  • UNIRSE A LA IZQUIERDA (unirse a la izquierda):Obtenga todos los registros de la tabla de la izquierda, incluso si no hay registros coincidentes en la tabla de la derecha.
  • UNIRSE A LA DERECHA (unirse a la derecha): A diferencia de LEFT JOIN, se utiliza para obtener todos los registros de la tabla de la derecha, incluso si no hay registros coincidentes correspondientes en la tabla de la izquierda.

Uso de INNER JOIN en el símbolo del sistema

Tenemos dos tablas tcount_tbl y chenweiliang_tbl en la base de datos de chenweiliang.Los datos de las dos tablas de datos son los siguientes:

Ejemplo

Pruebe los siguientes ejemplos:

datos de la instancia de prueba

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ón usaremos MySQLINNER JOIN (también puede omitir INNER y usar JOIN, el efecto es el mismo)Para conectar las dos tablas anteriores para leer el valor del campo chenweiliang_count correspondiente a todos los campos chenweiliang_author en la tabla chenweiliang_tbl en la tabla 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)

La instrucción SQL anterior es equivalente a:

Dónde cláusula

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 IZQUIERDA UNIRSE

La combinación izquierda de MySQL es diferente de la combinación. MySQL LEFT JOIN leerá todos los datos en la tabla de datos de la izquierda, incluso si la tabla de la derecha no tiene datos correspondientes.

Ejemplo

Pruebe los siguientes ejemplos para chenweiliang_tbl para la mesa de la izquierda,tcount_tbl Para la tabla de la derecha, comprenda la aplicación de MySQL LEFT JOIN:

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)

En el ejemplo anterior, se usa LEFT JOIN. Esta declaración leerá todos los datos de campo seleccionados de la tabla de datos chenweiliang_tbl a la izquierda, incluso si no hay un valor de campo correspondiente de chenweiliang_author en la tabla tcount_tbl a la derecha.


MySQL ÚNETE A LA DERECHA

MySQL RIGHT JOIN leerá todos los datos en la tabla de datos de la derecha, incluso si no hay datos correspondientes en la tabla de la izquierda.

Ejemplo

Pruebe los siguientes ejemplos para chenweiliang_tbl para la mesa de la izquierda,tcount_tbl Para la tabla de la derecha, comprenda la aplicación de MySQL RIGHT JOIN:

UNIRSE A LA DERECHA

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 se usa en el ejemplo anterior, esta declaración leerá todos los datos de campo seleccionados de la tabla de datos tcount_tbl a la derecha, incluso si no hay un valor de campo correspondiente de chenweiliang_author en la tabla chenweiliang_tbl a la izquierda.


Usando JOIN en script PHP

La función mysqli_query() se usa en PHP para ejecutar sentencias SQL, puede usar la misma sentencia SQL que la anterior como parámetro para la función mysqli_query().

Pruebe el siguiente ejemplo:

MySQL ORDEN POR prueba:

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

Esperanza Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartido "¿Uso de tablas múltiples de unión interna en la base de datos MySQL? Left Left Join Usage Efficiency", te ayudará.

Bienvenido a compartir el enlace de este artículo:https://www.chenweiliang.com/cwl-488.html

¡Bienvenido al canal de Telegram del blog de Chen Weiliang para obtener las últimas actualizaciones!

🔔 ¡Sea el primero en obtener la valiosa "Guía de uso de la herramienta de inteligencia artificial para marketing de contenidos ChatGPT" en el directorio superior del canal! 🌟
📚 Esta guía contiene un gran valor. 🌟Esta es una oportunidad única, ¡no la pierdas! ⏰⌛💨
¡Comparte y dale me gusta si te gusta!
¡Su compartir y Me gusta son nuestra motivación continua!

 

发表 评论

Su dirección de correo electrónico no será publicada. 项 已 用 * 标注

滚动 到 顶部