Artikelverzeichnis
MySQL-DatenbankInner Join Multi-Table-Nutzung? left left join Nutzungseffizienz
Mysql Nutzung der Verbindung
In den vorherigen Kapiteln haben wir gelernt, wie man Daten aus einer Tabelle liest, was relativ einfach ist, aber in realen Anwendungen ist es oft notwendig, Daten aus mehreren Datentabellen zu lesen.
In diesem Kapitel zeigen wir Ihnen, wie Sie MySQLs JOIN verwenden, um Daten in zwei oder mehr Tabellen abzufragen.
Sie können MySQLs JOIN in SELECT-, UPDATE- und DELETE-Anweisungen verwenden, um Abfragen mit mehreren Tabellen zu verbinden.
JOIN wird je nach Funktion grob in die folgenden drei Kategorien eingeteilt:
- INNER JOIN (innerer Join oder Equijoin): Datensätze mit übereinstimmenden Feldern in zwei Tabellen abrufen.
- LEFT JOIN (links verbinden):Erhalten Sie alle Datensätze in der linken Tabelle, auch wenn es keine übereinstimmenden Datensätze in der rechten Tabelle gibt.
- RIGHT JOIN (rechter Join): Im Gegensatz zu LEFT JOIN wird es verwendet, um alle Datensätze in der rechten Tabelle zu erhalten, auch wenn es keine entsprechenden übereinstimmenden Datensätze in der linken Tabelle gibt.
Verwenden von INNER JOIN in der Eingabeaufforderung
Wir haben zwei Tabellen tcount_tbl und chenweiliang_tbl in der chenweiliang-Datenbank.Die Daten der beiden Datentabellen sind wie folgt:
Beispiel
Probieren Sie die folgenden Beispiele aus:
Testinstanzdaten
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)
Als nächstes werden wir MySQL verwendenINNER JOIN (Sie können INNER auch weglassen und JOIN verwenden, der Effekt ist derselbe)So verbinden Sie die beiden obigen Tabellen, um den Wert des Felds chenweiliang_count zu lesen, der allen Feldern chenweiliang_author in der Tabelle chenweiliang_tbl in der Tabelle tcount_tbl entspricht:
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)
Die obige SQL-Anweisung ist äquivalent zu:
WHERE-Klausel
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-LINKSVERBINDUNG
MySQL Left Join unterscheidet sich von Join. MySQL LEFT JOIN liest alle Daten in der linken Datentabelle, auch wenn die rechte Tabelle keine entsprechenden Daten enthält.
Beispiel
Probieren Sie die folgenden Beispiele aus chenweiliang_tbl für den linken Tisch,tcount_tbl Verstehen Sie für die rechte Tabelle die Anwendung von 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)
Im obigen Beispiel wird LEFT JOIN verwendet, und diese Anweisung liest alle ausgewählten Felddaten der Datentabelle chenweiliang_tbl auf der linken Seite, auch wenn es keinen entsprechenden Feldwert von chenweiliang_author in der Tabelle tcount_tbl auf der rechten Seite gibt.
MySQL RECHTER JOIN
MySQL RIGHT JOIN liest alle Daten in der Datentabelle auf der rechten Seite, auch wenn es keine entsprechenden Daten in der Tabelle auf der linken Seite gibt.
Beispiel
Probieren Sie die folgenden Beispiele aus chenweiliang_tbl für den linken Tisch,tcount_tbl Verstehen Sie für die rechte Tabelle die Anwendung von MySQL RIGHT JOIN:
RICHTIG BEITRETEN
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 wird im obigen Beispiel verwendet, diese Anweisung liest alle ausgewählten Felddaten der rechten Datentabelle tcount_tbl, auch wenn es keinen entsprechenden chenweiliang_author-Feldwert in der linken Tabelle chenweiliang_tbl gibt.
Verwendung von JOIN in PHP-Skript
Die Funktion mysqli_query() wird in PHP verwendet, um SQL-Anweisungen auszuführen. Sie können dieselbe SQL-Anweisung wie oben als Parameter für die Funktion mysqli_query() verwenden.
Versuchen Sie folgendes Beispiel:
MySQL ORDER BY-Test:
<?
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);
?>Hoffnung Chen Weiliang Blog ( https://www.chenweiliang.com/ ) shared "Verwendung mehrerer Tabellen von MySQL-Datenbank-Innenverknüpfungen? left Left Join Usage Efficiency", wird es Ihnen helfen.
Willkommen, um den Link dieses Artikels zu teilen:https://www.chenweiliang.com/cwl-488.html
Um weitere versteckte Tricks freizuschalten🔑, treten Sie unserem Telegram-Kanal bei!
Teilen und liken, wenn es Ihnen gefällt! Ihre Shares und Likes sind unsere ständige Motivation!