Directorio de artículos
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!
📚 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!