Resumir algunos puntos de conocimiento de MySQL: el uso de la conexión MySQL

Uso de conexiones MySQL

En los capítulos anteriores, aprendimos cómo leer datos en 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, presentaremos cómo usar JOIN de MySQL para consultar datos en dos o más tablas.

Puede usar JOIN de Mysql en declaraciones SELECT, UPDATE y DELETE para combinar consultas de varias tablas.

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

  • INNER JOIN (conexión interna o conexión equivalente) : obtenga los registros de la relación de coincidencia de campo en las dos tablas.
  • **LEFT JOIN (unión izquierda): **Obtenga todos los registros en la tabla de la izquierda, incluso si no hay un registro coincidente correspondiente en la tabla de la derecha.
  • RIGHT JOIN (junta derecha):  A diferencia de LEFT JOIN, se utiliza para obtener todos los registros de la tabla de la derecha, incluso si no hay un registro coincidente correspondiente en la tabla de la izquierda.

La estructura de la base de datos y la descarga de datos utilizada en este capítulo: kxdang-mysql-join-test.sql .


En el símbolo del sistema, use INNER JOIN

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

ejemplo

Pruebe los siguientes ejemplos:

Datos de la instancia de prueba

mysql> use RUNOOB;
Database changed
mysql> SELECT * FROM tcount_tbl;
+---------------+--------------+
| kxdang_author | kxdang_count |
+---------------+--------------+
| 菜鸟教程  | 10           |
| RUNOOB.COM    | 20           |
| Google        | 22           |
+---------------+--------------+
3 rows in set (0.01 sec)
 
mysql> SELECT * from kxdang_tbl;
+-----------+---------------+---------------+-----------------+
| kxdang_id | kxdang_title  | kxdang_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 1         | 学习 PHP    | 菜鸟教程  | 2017-04-12      |
| 2         | 学习 MySQL  | 菜鸟教程  | 2017-04-12      |
| 3         | 学习 Java   | RUNOOB.COM    | 2015-05-01      |
| 4         | 学习 Python | RUNOOB.COM    | 2016-03-06      |
| 5         | 学习 C      | FK            | 2017-04-05      |
+-----------+---------------+---------------+-----------------+
5 rows in set (0.01 sec)

A continuación, usamos **INNER JOIN de MySQL (también puede omitir INNER y usar JOIN, el efecto es el mismo)** para conectar las dos tablas anteriores para leer todos los campos kxdang_author en la tabla kxdang_tbl correspondientes a los valores de campo kxdang_count ​en la tabla tcount_tbl:

UNIR INTERNAMENTE

mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a INNER JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;
+-------------+-----------------+----------------+
| a.kxdang_id | a.kxdang_author | b.kxdang_count |
+-------------+-----------------+----------------+
| 1           | 菜鸟教程    | 10             |
| 2           | 菜鸟教程    | 10             |
| 3           | RUNOOB.COM      | 20             |
| 4           | RUNOOB.COM      | 20             |
+-------------+-----------------+----------------+
4 rows in set (0.00 sec)

La instrucción SQL anterior es equivalente a:

WHERE cláusula secundaria

mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a, tcount_tbl b WHERE a.kxdang_author = b.kxdang_author;
+-------------+-----------------+----------------+
| a.kxdang_id | a.kxdang_author | b.kxdang_count |
+-------------+-----------------+----------------+
| 1           | 菜鸟教程    | 10             |
| 2           | 菜鸟教程    | 10             |
| 3           | RUNOOB.COM      | 20             |
| 4           | RUNOOB.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 la izquierda, incluso si no hay datos correspondientes en la tabla de la derecha.

ejemplo

Pruebe el siguiente ejemplo, con  kxdang_tbl  como la tabla de la izquierda y tcount_tbl  como la tabla de la derecha, para comprender la aplicación de MySQL LEFT JOIN:

UNIRSE A LA IZQUIERDA

mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a LEFT JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;
+-------------+-----------------+----------------+
| a.kxdang_id | a.kxdang_author | b.kxdang_count |
+-------------+-----------------+----------------+
| 1           | 菜鸟教程    | 10             |
| 2           | 菜鸟教程    | 10             |
| 3           | RUNOOB.COM      | 20             |
| 4           | RUNOOB.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 de la izquierda kxdang_tbl, incluso si no hay un valor de campo kxdang_author correspondiente en la tabla de la derecha tcount_tbl. 


MySQL ÚNETE A LA DERECHA

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

ejemplo

Pruebe el siguiente ejemplo, con  kxdang_tbl  como la tabla de la izquierda y tcount_tbl  como la tabla de la derecha, para comprender la aplicación de MySQL RIGHT JOIN:

UNIÓN DERECHA

mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a RIGHT JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;
+-------------+-----------------+----------------+
| a.kxdang_id | a.kxdang_author | b.kxdang_count |
+-------------+-----------------+----------------+
| 1           | 菜鸟教程    | 10             |
| 2           | 菜鸟教程    | 10             |
| 3           | RUNOOB.COM      | 20             |
| 4           | RUNOOB.COM      | 20             |
| NULL        | NULL            | 22             |
+-------------+-----------------+----------------+
5 rows in set (0.01 sec)

En el ejemplo anterior, se usa RIGHT JOIN, y esta declaración leerá todos los datos de campo seleccionados en la tabla de datos de la derecha tcount_tbl, incluso si no hay un valor de campo kxdang_author correspondiente en la tabla de la izquierda kxdang_tbl. 


Usando JOIN en script PHP

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

Pruebe el siguiente ejemplo:

MySQL ORDEN POR prueba:

<?php
$dbhost = 'localhost';  // 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.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a INNER JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author';
 
mysqli_select_db( $conn, 'RUNOOB' );
$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, MYSQLI_ASSOC))
{
    echo "<tr><td> {$row['kxdang_id']}</td> ".
         "<td>{$row['kxdang_author']} </td> ".
         "<td>{$row['kxdang_count']} </td> ".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

Supongo que te gusta

Origin blog.csdn.net/2301_77125316/article/details/130890645
Recomendado
Clasificación