Përdorimi i brendshëm i bazës së të dhënave MySQL i bashkimit me shumë tabela? efikasiteti i përdorimit të bashkimit majtas majtas

Baza e të dhënave MySQLpërdorimi i bashkimit të brendshëm me shumë tabela? efikasiteti i përdorimit të bashkimit majtas majtas

Mysql përdorimi i lidhjes

Në kapitujt e mëparshëm, ne kemi mësuar se si të lexojmë të dhëna nga një tabelë, gjë që është relativisht e thjeshtë, por në aplikacionet reale shpesh është e nevojshme të lexohen të dhëna nga tabela të shumta të të dhënave.

Në këtë kapitull do t'ju tregojmë se si të përdorni JOIN të MySQL për të kërkuar të dhëna në dy ose më shumë tabela.

Ju mund të përdorni JOIN të Mysql në deklaratat SELECT, UPDATE dhe DELETE për t'u bashkuar me pyetjet me shumë tabela.

JOIN ndahet afërsisht në tre kategoritë e mëposhtme sipas funksionit të tij:

  • BASHKIMI I BRENDSHËM (bashkim i brendshëm, ose ekuijoin): Merrni regjistrime me fusha që përputhen në dy tabela.
  • LEFT JOIN (bashkimi majtas):Merrni të gjitha rekordet në tabelën e majtë, edhe nëse nuk ka të dhëna që përputhen në tabelën e djathtë.
  • RIGHT JOIN (bashkimi djathtas): Ndryshe nga LEFT JOIN, përdoret për të marrë të gjitha regjistrimet në tabelën e djathtë, edhe nëse nuk ka regjistrime përkatëse që përputhen në tabelën e majtë.

Përdorimi i BASHKIMIT TË BRENDSHËM në vijën e komandës

Ne kemi dy tabela tcount_tbl dhe chenweiliang_tbl në bazën e të dhënave chenweiliang.Të dhënat e dy tabelave të të dhënave janë si më poshtë:

Shembull

Provoni shembujt e mëposhtëm:

të dhënat e shembullit të testimit

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)

Më pas do të përdorim MySQLBASHKIMI I BRENDSHËM (mund të anashkaloni gjithashtu INNER-in dhe të përdorni JOIN, efekti është i njëjtë)Për të lidhur dy tabelat e mësipërme për të lexuar vlerën e fushës chenweiliang_count që korrespondon me të gjitha fushat chenweiliang_author në tabelën chenweiliang_tbl në tabelën 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)

Deklarata e mësipërme SQL është ekuivalente me:

Klauzola 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

Lidhja e majtë e MySQL është e ndryshme nga bashkimi. MySQL LEFT JOIN do të lexojë të gjitha të dhënat në tabelën e majtë të të dhënave, edhe nëse tabela e djathtë nuk ka të dhëna përkatëse.

Shembull

Provoni shembujt e mëposhtëm për të chenweiliang_tbl për tryezën e majtë,tcount_tbl Për tabelën e duhur, kuptoni aplikimin e 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)

Në shembullin e mësipërm, përdoret LEFT JOIN Kjo deklaratë do të lexojë të gjitha të dhënat e zgjedhura të fushës së tabelës së të dhënave chenweiliang_tbl në të majtë, edhe nëse nuk ka vlerë përkatëse të fushës së chenweiliang_author në tabelën tcount_tbl në të djathtë.


BASHKOHUNI DREJTA në MySQL

MySQL RIGHT JOIN do të lexojë të gjitha të dhënat në tabelën e të dhënave në të djathtë, edhe nëse nuk ka të dhëna përkatëse në tabelën në të majtë.

Shembull

Provoni shembujt e mëposhtëm për të chenweiliang_tbl për tryezën e majtë,tcount_tbl Për tabelën e duhur, kuptoni aplikimin e MySQL RIGHT JOIN:

BASHKOHUNI DREJTË

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 përdoret në shembullin e mësipërm, kjo deklaratë do të lexojë të gjitha të dhënat e zgjedhura të fushës së tabelës së të dhënave tcount_tbl në të djathtë, edhe nëse nuk ka vlerë përkatëse të fushës së chenweiliang_author në tabelën chenweiliang_tbl në të majtë.


Përdorimi i JOIN në skriptin PHP

Funksioni mysqli_query() përdoret në PHP për të ekzekutuar deklaratat SQL, ju mund të përdorni të njëjtën deklaratë SQL si më sipër si parametër për funksionin mysqli_query().

Provoni shembullin e mëposhtëm:

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

Blogu Hope Chen Weiliang ( https://www.chenweiliang.com/ ) shared "Përdorimi me shumë tabela i bashkimit të brendshëm në bazën e të dhënave MySQL? majtas Left Join Usage Efficiency", do t'ju ndihmojë.

Mirë se vini të shpërndani lidhjen e këtij artikulli:https://www.chenweiliang.com/cwl-488.html

Mirësevini në kanalin Telegram të blogut të Chen Weiliang për të marrë përditësimet më të fundit!

🔔 Bëhu i pari që merr "Udhëzuesin e përdorimit të mjeteve të marketingut të përmbajtjes AI" me vlerë "ChatGPT Content Marketing AI" në drejtorinë kryesore të kanalit! 🌟
📚 Ky udhëzues përmban vlera të mëdha, 🌟Ky është një mundësi e rrallë, mos e humbisni! ⏰⌛💨
Shpërndaje dhe like nëse të pëlqen!
Ndarjet dhe pëlqimet tuaja janë motivimi ynë i vazhdueshëm!

 

发表 评论

Adresa juaj e emailit nuk do të publikohet. Përdoren fushat e kërkuara * Etiketa

lëvizni në krye