MySQL andmebaasi sisemine liituda mitme tabeli kasutamine? vasak vasak liitumise kasutamise tõhusus

MySQL andmebaassisemine liite mitme laua kasutamine? vasak vasak liitumise kasutamise tõhusus

Mysql ühenduse kasutamine

Eelmistes peatükkides oleme õppinud, kuidas lugeda andmeid ühest tabelist, mis on suhteliselt lihtne, kuid reaalsetes rakendustes on sageli vaja andmeid lugeda mitmest andmetabelist.

Selles peatükis näitame teile, kuidas kasutada MySQL-i JOIN-i kahe või enama tabelis olevate andmete päringute tegemiseks.

Mitme tabeli päringute ühendamiseks saate kasutada Mysql-i JOIN-i lausetes SELECT, UPDATE ja DELETE.

JOIN jaguneb selle funktsiooni järgi laias laastus järgmisesse kolme kategooriasse:

  • INNER JOIN (sisemine liitumine või equijoin): hankige kahes tabelis vastavate väljadega kirjed.
  • LEFT JOIN (vasak liitumine):Hankige kõik vasakpoolses tabelis olevad kirjed, isegi kui paremas tabelis pole sobivaid kirjeid.
  • RIGHT JOIN (parem liitumine): Vastupidiselt LEFT JOIN-ile kasutatakse seda kõigi kirjete saamiseks paremasse tabelisse, isegi kui vasakpoolses tabelis pole vastavaid kirjeid.

INNER JOIN kasutamine käsuviibas

Meil on chenweiliangi andmebaasis kaks tabelit tcount_tbl ja chenweiliang_tbl.Kahe andmetabeli andmed on järgmised:

Esimese astme

Proovige järgmisi näiteid.

testeksemplari andmed

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)

Järgmisena kasutame MySQL-iINNER JOIN (võite ka INNER ära jätta ja kasutada JOIN, efekt on sama)Ülaltoodud kahe tabeli ühendamiseks, et lugeda välja chenweiliang_count väärtus, mis vastab kõigile chenweiliang_author väljadele tabelis chenweiliang_tbl tabelis 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)

Ülaltoodud SQL-lause on samaväärne:

KUS 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 LÄKS LIITUMINE

MySQL vasak liitumine erineb liitumisest. MySQL LEFT JOIN loeb kõik vasakpoolses andmetabelis olevad andmed, isegi kui parempoolses tabelis pole vastavaid andmeid.

Esimese astme

Proovige järgmisi näiteid chenweiliang_tbl vasakpoolse laua jaoks,tcount_tbl Õige tabeli jaoks mõistke MySQL LEFT JOIN rakendust:

VASAK LIITU

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)

Ülaltoodud näites kasutatakse LEFT JOIN ja see lause loeb kõik vasakpoolse andmetabeli chenweiliang_tbl valitud väljaandmed, isegi kui parempoolses tabelis tcount_tbl pole chenweiliang_author vastavat välja väärtust.


MySQL RIGHT JOIN

MySQL RIGHT JOIN loeb kõik andmed paremal asuvas andmetabelis, isegi kui vasakpoolses tabelis pole vastavaid andmeid.

Esimese astme

Proovige järgmisi näiteid chenweiliang_tbl vasakpoolse laua jaoks,tcount_tbl Õige tabeli jaoks mõistke MySQL RIGHT JOIN rakendust:

ÕIGE LIITUMINE

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)

Ülaltoodud näites kasutatakse RIGHT JOIN, see lause loeb kõik valitud välja andmed parempoolsest andmetabelist tcount_tbl, isegi kui vasakpoolses tabelis chenweiliang_tbl pole vastavat välja väärtust chenweiliang_author.


JOIN kasutamine PHP skriptis

Funktsiooni mysqli_query() kasutatakse PHP-s SQL-lausete täitmiseks, funktsiooni mysqli_query() parameetrina saate kasutada sama SQL-lauset nagu ülal.

Proovige järgmist näidet.

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 Weiliangi ajaveeb ( https://www.chenweiliang.com/ ) jagatud "MySQL-i andmebaasi sisemise liitumise mitme tabeli kasutamine? vasakpoolse liitumise kasutamise tõhusus", see aitab teid.

Tere tulemast selle artikli linki jagama:https://www.chenweiliang.com/cwl-488.html

Tere tulemast Chen Weiliangi ajaveebi Telegrami kanalile, et saada uusimaid värskendusi!

🔔 Olge esimene, kes saab kanali ülemises kataloogis väärtusliku "ChatGPT sisuturunduse AI tööriista kasutamise juhendi"! 🌟
📚 See juhend sisaldab tohutut väärtust, 🌟See on harukordne võimalus, ärge jätke seda kasutamata! ⏰⌛💨
Jaga ja like kui meeldib!
Teie jagamine ja meeldimised on meie pidev motivatsioon!

 

发表 评论

Teie e-posti aadressi ei avaldata. Kasutatakse kohustuslikke välju * Silt

kerige üles