Ang sulud sa MySQL database nag-apil sa paggamit sa multi-table? wala sa wala apil ang kahusayan sa paggamit

database sa MySQLsulod nga apil multi-table paggamit? wala sa wala apil ang kahusayan sa paggamit

Mysql paggamit sa koneksyon

Sa miaging mga kapitulo, nahibal-an namon kung giunsa pagbasa ang datos gikan sa usa ka lamesa, nga medyo yano, apan sa tinuud nga mga aplikasyon kanunay kinahanglan nga basahon ang datos gikan sa daghang mga lamesa sa datos.

Niini nga kapitulo ipakita namo kanimo kung unsaon paggamit ang MySQL's JOIN sa pagpangutana sa datos sa duha o labaw pa nga mga lamesa.

Mahimo nimong gamiton ang JOIN sa Mysql sa SELECT, UPDATE ug DELETE nga mga pahayag aron moapil sa daghang mga pangutana sa lamesa.

Ang JOIN halos gibahin sa mosunod nga tulo ka mga kategorya sumala sa function niini:

  • INNER JOIN (inner join, o equijoin): Pagkuha og mga rekord nga adunay magkaparehas nga mga natad sa duha ka mga lamesa.
  • LEFT JOIN (left join):Kuhaa ang tanan nga mga rekord sa wala nga lamesa, bisan kung wala’y managsama nga mga rekord sa tuo nga lamesa.
  • RIGHT JOIN (right join): Sukwahi sa LEFT JOIN, gigamit kini aron makuha ang tanan nga mga rekord sa tuo nga lamesa, bisan kung wala’y katugbang nga managsama nga mga rekord sa wala nga lamesa.

Paggamit sa INNER JOIN sa Command Prompt

Kami adunay duha ka lamesa nga tcount_tbl ug chenweiliang_tbl sa chenweiliang database.Ang datos sa duha ka mga talaan sa datos mao ang mosunod:

pananglitan

Sulayi ang mosunod nga mga pananglitan:

data sa pananglitan sa pagsulay

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)

Sunod atong gamiton ang MySQLINNER JOIN (mahimo usab nimo i-omit ang INNER ug gamiton ang JOIN, parehas ang epekto)Aron masumpay ang duha ka lamesa sa ibabaw aron mabasa ang bili sa chenweiliang_count field nga katumbas sa tanang chenweiliang_author fields sa chenweiliang_tbl table sa tcount_tbl table:

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)

Ang pahayag sa ibabaw sa SQL katumbas sa:

ASA clause

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

Ang MySQL left join lahi sa join. Ang MySQL LEFT JOIN mobasa sa tanan nga datos sa wala nga lamesa sa datos, bisan kung ang tuo nga lamesa walay katugbang nga datos.

pananglitan

Sulayi ang mosunod nga mga pananglitan sa chenweiliang_tbl para sa wala nga lamesa,tcount_tbl Alang sa husto nga lamesa, sabta ang aplikasyon sa MySQL LEFT JOIN:

BIYAAN AMBAY

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)

Sa pananglitan sa ibabaw, LEFT JOIN ang gigamit, ug kini nga pahayag magbasa sa tanang pinili nga field data sa data table chenweiliang_tbl sa wala, bisan kung walay katumbas nga field value sa chenweiliang_author sa table tcount_tbl sa tuo.


MySQL RIGHT ADUNAY

Ang MySQL RIGHT JOIN mobasa sa tanang datos sa data table sa tuo, bisan kung walay katugbang nga datos sa lamesa sa wala.

pananglitan

Sulayi ang mosunod nga mga pananglitan sa chenweiliang_tbl para sa wala nga lamesa,tcount_tbl Alang sa husto nga lamesa, sabta ang aplikasyon sa MySQL RIGHT JOIN:

TARONG API

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)

Ang RIGHT JOIN gigamit sa pananglitan sa ibabaw, kini nga pahayag magbasa sa tanan nga pinili nga field data sa right data table tcount_tbl, bisan kung walay katumbas nga chenweiliang_author field value sa left table chenweiliang_tbl.


Gamit ang JOIN sa PHP script

Ang mysqli_query() function kay gigamit sa PHP para i-execute ang SQL statements, pwede nimo gamiton ang parehas nga SQL statement sama sa taas isip parameter sa mysqli_query() function.

Sulayi ang mosunod nga pananglitan:

MySQL ORDER PINAAGI sa pagsulay:

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

Paglaum Chen Weiliang Blog ( https://www.chenweiliang.com/ ) mipaambit sa "Multi-table nga paggamit sa MySQL database sa sulod nga pag-apil? left Left Join Usage Efficiency", makatabang kini kanimo.

Welcome sa pagpaambit sa link niini nga artikulo:https://www.chenweiliang.com/cwl-488.html

Malipayon nga pag-abut sa channel sa Telegram sa blog ni Chen Weiliang aron makuha ang labing bag-ong mga update!

🔔 Mahimong una nga makakuha sa bililhon nga "ChatGPT Content Marketing AI Tool Usage Guide" sa direktoryo sa taas nga channel! 🌟
📚 Kini nga giya adunay daghang kantidad, 🌟Kini usa ka talagsaon nga oportunidad, ayaw palabya ​​kini! ⏰⌛💨
Share ug like kung ganahan ka!
Ang imong pagpaambit ug pag-like mao ang among padayon nga kadasig!

 

发表 评论

Ang imong email address dili mapatik. Gigamit ang mga kinahanglanon nga uma * Label

scroll sa ibabaw