Baza de date MySQL unire interioară utilizarea mai multor tabele? stânga stânga alăturați eficiența utilizării

Baza de date MySQLutilizarea interioară a mai multor mese? stânga stânga alăturați eficiența utilizării

Mysql utilizarea conexiunii

În capitolele anterioare, am învățat cum să citim date dintr-un tabel, ceea ce este relativ simplu, dar în aplicațiile reale este adesea necesar să citim date din mai multe tabele de date.

În acest capitol vă vom arăta cum să utilizați JOIN de la MySQL pentru a interoga date în două sau mai multe tabele.

Puteți utiliza instrucțiunile Mysql JOIN în instrucțiunile SELECT, UPDATE și DELETE pentru a alătura interogări cu mai multe tabele.

JOIN este împărțit aproximativ în următoarele trei categorii în funcție de funcția sa:

  • INNER JOIN (unire interioară sau echijoin): Obțineți înregistrări cu câmpuri potrivite în două tabele.
  • LEFT JOIN (aderarea la stânga):Obțineți toate înregistrările din tabelul din stânga, chiar dacă nu există înregistrări care se potrivesc în tabelul din dreapta.
  • RIGHT JOIN (aderarea la dreapta): Spre deosebire de LEFT JOIN, este folosit pentru a obține toate înregistrările din tabelul din dreapta, chiar dacă nu există înregistrări corespunzătoare în tabelul din stânga.

Folosind INNER JOIN în linia de comandă

Avem două tabele tcount_tbl și chenweiliang_tbl în baza de date chenweiliang.Datele celor două tabele de date sunt următoarele:

Instanță

Încercați următoarele exemple:

date ale instanței de testare

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)

În continuare vom folosi MySQLINNER JOIN (puteți omite și INNER și utilizați JOIN, efectul este același)Pentru a conecta cele două tabele de mai sus pentru a citi valoarea câmpului chenweiliang_count corespunzătoare tuturor câmpurilor chenweiliang_author din tabelul chenweiliang_tbl din tabelul tcount_tbl:

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)

Instrucțiunea SQL de mai sus este echivalentă cu:

clauza 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)

MySQL LEFT JOIN

MySQL left join este diferit de join. MySQL LEFT JOIN va citi toate datele din tabelul de date din stânga, chiar dacă tabelul din dreapta nu are date corespunzătoare.

Instanță

Încercați următoarele exemple pentru a chenweiliang_tbl pentru masa din stânga,tcount_tbl Pentru tabelul potrivit, înțelegeți aplicația MySQL LEFT JOIN:

REDUCEREA LOCULUI

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)

În exemplul de mai sus, se folosește LEFT JOIN, iar această instrucțiune va citi toate datele câmpului selectat din tabelul de date chenweiliang_tbl din stânga, chiar dacă nu există o valoare a câmpului corespunzătoare pentru chenweiliang_author în tabelul tcount_tbl din dreapta.


MySQL RIGHT JOIN

MySQL RIGHT JOIN va citi toate datele din tabelul de date din dreapta, chiar dacă nu există date corespunzătoare în tabelul din stânga.

Instanță

Încercați următoarele exemple pentru a chenweiliang_tbl pentru masa din stânga,tcount_tbl Pentru tabelul potrivit, înțelegeți aplicația MySQL RIGHT JOIN:

ÎNSCRIEȚI DREPT

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 este folosită în exemplul de mai sus, această instrucțiune va citi toate datele câmpului selectat din tabelul de date tcount_tbl din dreapta, chiar dacă nu există o valoare de câmp corespunzătoare pentru chenweiliang_author în tabelul chenweiliang_tbl din stânga.


Folosind JOIN în scriptul PHP

Funcția mysqli_query() este folosită în PHP pentru a executa instrucțiuni SQL, puteți folosi aceeași instrucțiune SQL ca mai sus ca parametru al funcției mysqli_query().

Încercați următorul exemplu:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) a împărtășit „Utilizarea mai multor tabele a îmbinării interioare a bazei de date MySQL? stânga Left Join Usage Efficiency”, vă va ajuta.

Bine ați venit să distribuiți linkul acestui articol:https://www.chenweiliang.com/cwl-488.html

Bun venit pe canalul Telegram al blogului lui Chen Weiliang pentru a primi cele mai recente actualizări!

🔔 Fii primul care primește valorosul „Ghid de utilizare a instrumentului AI pentru marketing de conținut ChatGPT” în directorul de top al canalului! 🌟
📚 Acest ghid conține o valoare uriașă, 🌟Aceasta este o oportunitate rară, nu o ratați! ⏰⌛💨
Distribuie si da like daca iti place!
Partajarea și like-urile tale sunt motivația noastră continuă!

 

发表 评论

Adresa ta de email nu va fi publicată. Sunt utilizate câmpurile obligatorii * Eticheta

derulați în sus