MySQL database inner join multi-table gebruik? links links deelnemen aan gebruiksefficiëntie

MySQL-databaseinner join multi-table gebruik? links links deelnemen aan gebruiksefficiëntie

mysql gebruik van verbinding

In de vorige hoofdstukken hebben we geleerd hoe we gegevens uit één tabel kunnen lezen, wat relatief eenvoudig is, maar in echte toepassingen is het vaak nodig om gegevens uit meerdere gegevenstabellen te lezen.

In dit hoofdstuk laten we u zien hoe u MySQL's JOIN kunt gebruiken om gegevens in twee of meer tabellen op te vragen.

U kunt de JOIN-instructies van Mysql gebruiken in SELECT-, UPDATE- en DELETE-instructies om query's met meerdere tabellen samen te voegen.

JOIN is ruwweg onderverdeeld in de volgende drie categorieën, afhankelijk van zijn functie:

  • INNER JOIN (innerlijke join of equijoin): Haal records met overeenkomende velden op in twee tabellen.
  • LEFT JOIN (linker join):Krijg alle records in de linkertabel, zelfs als er geen overeenkomende records in de rechtertabel zijn.
  • RIGHT JOIN (rechter join): In tegenstelling tot LEFT JOIN wordt het gebruikt om alle records in de rechtertabel te krijgen, zelfs als er geen overeenkomende overeenkomende records in de linkertabel zijn.

INNER JOIN gebruiken in opdrachtprompt

We hebben twee tabellen tcount_tbl en chenweiliang_tbl in de chenweiliang-database.De gegevens van de twee gegevenstabellen zijn als volgt:

Voorbeeld

Probeer de volgende voorbeelden:

testinstantiegegevens

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)

Vervolgens gebruiken we MySQLINNER JOIN (je kunt INNER ook weglaten en JOIN gebruiken, het effect is hetzelfde)Om de bovenstaande twee tabellen te verbinden om de waarde van het chenweiliang_count-veld te lezen dat overeenkomt met alle chenweiliang_author-velden in de chenweiliang_tbl-tabel in de tcount_tbl-tabel:

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)

De bovenstaande SQL-instructie is gelijk aan:

WHERE-clausule

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 LINKS DOE MEE

MySQL left join is anders dan join. MySQL LEFT JOIN leest alle gegevens in de linkergegevenstabel, zelfs als de rechtertabel geen overeenkomstige gegevens heeft.

Voorbeeld

Probeer de volgende voorbeelden om chenweiliang_tbl voor de linker tafel,tcount_tbl Voor de juiste tabel, begrijp de toepassing van MySQL LEFT JOIN:

Links aansluiten

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)

In het bovenstaande voorbeeld wordt LEFT JOIN gebruikt en deze instructie leest alle geselecteerde veldgegevens van de gegevenstabel chenweiliang_tbl aan de linkerkant, zelfs als er geen corresponderende veldwaarde van chenweiliang_author in de tabel tcount_tbl aan de rechterkant is.


MySQL RECHTS AANMELDEN

MySQL RIGHT JOIN leest alle gegevens in de gegevenstabel aan de rechterkant, zelfs als er geen overeenkomstige gegevens in de tabel aan de linkerkant staan.

Voorbeeld

Probeer de volgende voorbeelden om chenweiliang_tbl voor de linker tafel,tcount_tbl Voor de juiste tabel, begrijp de toepassing van MySQL RIGHT JOIN:

RECHTS AANMELDEN

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 wordt gebruikt in het bovenstaande voorbeeld, deze instructie leest alle geselecteerde veldgegevens van de gegevenstabel tcount_tbl aan de rechterkant, zelfs als er geen corresponderende veldwaarde van chenweiliang_author in de tabel chenweiliang_tbl aan de linkerkant is.


JOIN gebruiken in PHP-script

De functie mysqli_query() wordt in PHP gebruikt om SQL-instructies uit te voeren, u kunt dezelfde SQL-instructie als hierboven gebruiken als de parameter van de functie mysqli_query().

Probeer het volgende voorbeeld:

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

Hoop Chen Weiliang Blog ( https://www.chenweiliang.com/ ) gedeeld "Gebruik van meerdere tabellen van MySQL-database inner join? left Left Join Usage Efficiency", zal het u helpen.

Welkom om de link van dit artikel te delen:https://www.chenweiliang.com/cwl-488.html

Welkom op het Telegram-kanaal van Chen Weiliang's blog voor de laatste updates!

🔔 Wees de eerste die de waardevolle "ChatGPT Content Marketing AI Tool Usage Guide" in de bovenste kanaaldirectory ontvangt! 🌟
📚 Deze gids bevat enorme waarde, 🌟Dit is een zeldzame kans, mis hem niet! ⏰⌛💨
Deel en like als je wilt!
Uw delen en likes zijn onze voortdurende motivatie!

 

发表 评论

Uw e-mailadres wordt niet gepubliceerd. 必填 项 已 用 * 标注

scroll naar boven