Utilisation multi-tables de la jointure interne de la base de données MySQL ? efficacité d'utilisation de la jointure gauche gauche

Base de données MySQLutilisation multi-table de jointure interne ? efficacité d'utilisation de la jointure gauche gauche

Mysql utilisation de la connexion

Dans les chapitres précédents, nous avons appris à lire les données d'une table, ce qui est relativement simple, mais dans les applications réelles, il est souvent nécessaire de lire les données de plusieurs tables de données.

Dans ce chapitre, nous allons vous montrer comment utiliser le JOIN de MySQL pour interroger des données dans deux tables ou plus.

Vous pouvez utiliser Mysql JOIN dans les instructions SELECT, UPDATE et DELETE pour joindre des requêtes multi-tables.

JOIN est grossièrement divisé en trois catégories selon sa fonction :

  • INNER JOIN (jointure interne ou équijointure): Obtenir des enregistrements avec des champs correspondants dans deux tables.
  • LEFT JOIN (jointure à gauche):Obtenez tous les enregistrements de la table de gauche, même s'il n'y a pas d'enregistrements correspondants dans la table de droite.
  • RIGHT JOIN (jointure à droite): Contrairement à LEFT JOIN, il est utilisé pour obtenir tous les enregistrements de la table de droite, même s'il n'y a pas d'enregistrements correspondants dans la table de gauche.

Utilisation de INNER JOIN dans l'invite de commande

Nous avons deux tables tcount_tbl et chenweiliang_tbl dans la base de données chenweiliang.Les données des deux tables de données sont les suivantes :

Exemple

Essayez les exemples suivants :

données d'instance de test

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)

Ensuite, nous utiliserons MySQLINNER JOIN (vous pouvez également omettre INNER et utiliser JOIN, l'effet est le même)Pour connecter les deux tables ci-dessus pour lire la valeur du champ chenweiliang_count correspondant à tous les champs chenweiliang_author de la table chenweiliang_tbl dans la table tcount_tbl :

JOINTURE INTERNE

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)

L'instruction SQL ci-dessus est équivalente à :

Clause WHERE

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)

JOINTURE GAUCHE MySQL

La jointure gauche MySQL est différente de la jointure. MySQL LEFT JOIN lira toutes les données de la table de données de gauche, même si la table de droite n'a pas de données correspondantes.

Exemple

Essayez les exemples suivants pour chenweiliang_tbl pour la table de gauche,tcount_tbl Pour la bonne table, comprenez l'application de MySQL LEFT JOIN :

JOINDRE GAUCHE

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)

Dans l'exemple ci-dessus, LEFT JOIN est utilisé, et cette instruction lira toutes les données de champ sélectionnées de la table de données chenweiliang_tbl à gauche, même s'il n'y a pas de valeur de champ correspondante de chenweiliang_author dans la table tcount_tbl à droite.


MySQL REJOINDRE À DROITE

MySQL RIGHT JOIN lira toutes les données de la table de données de droite, même s'il n'y a pas de données correspondantes dans la table de gauche.

Exemple

Essayez les exemples suivants pour chenweiliang_tbl pour la table de gauche,tcount_tbl Pour la bonne table, comprenez l'application de MySQL RIGHT JOIN :

JOINDRE À DROITE

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 est utilisé dans l'exemple ci-dessus, cette instruction lira toutes les données de champ sélectionnées de la table de données de droite tcount_tbl, même s'il n'y a pas de valeur de champ chenweiliang_author correspondante dans la table de gauche chenweiliang_tbl.


Utilisation de JOIN dans un script PHP

La fonction mysqli_query() est utilisée en PHP pour exécuter des instructions SQL, vous pouvez utiliser la même instruction SQL que ci-dessus comme paramètre de la fonction mysqli_query().

Essayez l'exemple suivant :

Test ORDRE PAR 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);
?>

J'espère que le blog de Chen Weiliang ( https://www.chenweiliang.com/ ) partagé "Utilisation multi-tables de la jointure interne dans la base de données MySQL ? left Left Join Usage Efficiency", cela vous aidera.

Bienvenue à partager le lien de cet article :https://www.chenweiliang.com/cwl-488.html

Bienvenue sur la chaîne Telegram du blog de Chen Weiliang pour obtenir les dernières mises à jour !

🔔 Soyez le premier à obtenir le précieux « Guide d'utilisation de l'outil d'IA de marketing de contenu ChatGPT » dans le répertoire supérieur de la chaîne ! 🌟
📚 Ce guide contient une valeur énorme, 🌟C'est une opportunité rare, ne la manquez pas ! ⏰⌛💨
Partagez et likez si vous aimez !
Vos partages et likes sont notre motivation continue !

 

发表 评论

Votre adresse email ne sera pas publiée. 项 已 用 * 标注

到 顶部