MySQL-tietokanta sisäinen liittyä usean taulukon käyttö? vasen vasen liitoksen käytön tehokkuus

MySQL-tietokantasisäliitoksen usean pöydän käyttö? vasen vasen liitoksen käytön tehokkuus

Mysql yhteyden käyttöä

Aiemmissa luvuissa olemme oppineet lukemaan tietoja yhdestä taulukosta, mikä on suhteellisen yksinkertaista, mutta todellisissa sovelluksissa on usein tarpeen lukea tietoja useista tietotaulukoista.

Tässä luvussa näytämme, kuinka voit käyttää MySQL:n JOIN-toimintoa kahden tai useamman taulukon tietojen kyselyyn.

Voit käyttää Mysql:n JOIN-komentoa SELECT-, UPDATE- ja DELETE-käskyissä usean taulukon kyselyjen yhdistämiseen.

JOIN on karkeasti jaettu kolmeen luokkaan sen toiminnan mukaan:

  • INNER JOIN (sisäliitos tai tasaliitos): Hae tietueet, joissa on vastaavat kentät kahdessa taulukossa.
  • LEFT JOIN (vasen liittyminen):Hae kaikki tietueet vasemmassa taulukossa, vaikka oikeanpuoleisessa taulukossa ei olisi vastaavia tietueita.
  • RIGHT JOIN (oikea liittyminen): Toisin kuin LEFT JOIN, sitä käytetään saamaan kaikki tietueet oikeaan taulukkoon, vaikka vasemmassa taulukossa ei olisi vastaavia tietueita.

INNER JOIN käyttö komentokehotteessa

Meillä on kaksi taulukkoa tcount_tbl ja chenweiliang_tbl chenweiliang-tietokannassa.Kahden tietotaulukon tiedot ovat seuraavat:

Ilmentymä

Kokeile seuraavia esimerkkejä:

testiesiintymän tiedot

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)

Seuraavaksi käytämme MySQL:ääINNER JOIN (voit myös jättää INNERin pois ja käyttää JOIN, vaikutus on sama)Yhdistä yllä olevat kaksi taulukkoa lukeaksesi chenweiliang_count-kentän arvon, joka vastaa kaikkia chenweiliang_author-kenttiä tcount_tbl-taulukon chenweiliang_tbl-taulukossa:

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)

Yllä oleva SQL-lause vastaa:

WHERE-lauseke

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 LEFT LIITY

MySQL vasen liittyminen on eri asia kuin join. MySQL LEFT JOIN lukee kaikki tiedot vasemmassa tietotaulukossa, vaikka oikealla taulukolla ei olisi vastaavaa tietoa.

Ilmentymä

Kokeile seuraavia esimerkkejä chenweiliang_tbl vasemmalle pöydälle,tcount_tbl Jos haluat oikean taulukon, ymmärrä MySQL LEFT JOIN -sovelluksen:

LEFT LIITY

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)

Yllä olevassa esimerkissä käytetään LEFT JOIN, ja tämä käsky lukee kaikki vasemmalla olevan tietotaulukon chenweiliang_tbl valitut kenttätiedot, vaikka oikeanpuoleisessa taulukossa tcount_tbl ei olisi vastaavaa chenweiliang_author-kentän arvoa.


MySQL RIGHT LIITY

MySQL RIGHT JOIN lukee kaikki tiedot oikealla olevasta tietotaulukosta, vaikka vastaavaa tietoa ei olisi vasemmalla olevassa taulukossa.

Ilmentymä

Kokeile seuraavia esimerkkejä chenweiliang_tbl vasemmalle pöydälle,tcount_tbl Ymmärrä oikeaa taulukkoa varten MySQL RIGHT JOINin sovellus:

OIKEA LIITTYMINEN

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)

Yllä olevassa esimerkissä käytetään RIGHT JOIN -käskyä, tämä käsky lukee kaikki oikean tietotaulukon tcount_tbl valitut kenttätiedot, vaikka vasemmassa taulukossa chenweiliang_tbl ei olisi vastaavaa chenweiliang_author -kentän arvoa.


JOIN käyttö PHP-skriptissä

Mysqli_query()-funktiota käytetään PHP:ssä SQL-lauseiden suorittamiseen, voit käyttää samaa SQL-lausetta kuin yllä mysqli_query()-funktion parametrina.

Kokeile seuraavaa esimerkkiä:

MySQL ORDER BY testi:

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

Hope Chen Weiliang -blogi ( https://www.chenweiliang.com/ ) jaettu "MySQL-tietokannan usean pöydän sisäinen liittyminen? left Left Liity Usage Efficiency", se auttaa sinua.

Tervetuloa jakamaan tämän artikkelin linkki:https://www.chenweiliang.com/cwl-488.html

Tervetuloa Chen Weiliangin blogin Telegram-kanavalle saadaksesi viimeisimmät päivitykset!

🔔 Saat ensimmäisenä arvokkaan "ChatGPT Content Marketing AI Toolin käyttöoppaan" kanavan ylähakemistoon! 🌟
📚 Tämä opas sisältää valtavasti arvoa, 🌟Tämä on harvinainen tilaisuus, älä missaa sitä! ⏰⌛💨
Jaa ja tykkää jos tykkäät!
Jakamasi ja tykkäyksesi ovat jatkuva motivaatiomme!

 

发表 评论

Sähköpostiosoitettasi ei julkaista. 必填 项 已 用 * 标注

Vieritä ylös