ຖານຂໍ້ມູນ MySQL ພາຍໃນເຂົ້າຮ່ວມການນໍາໃຊ້ຫຼາຍຕາຕະລາງ? ປະສິດຕິພາບການນໍາໃຊ້ການເຂົ້າຮ່ວມຊ້າຍ

ຖານຂໍ້ມູນ MySQLinner join ການນໍາໃຊ້ຫຼາຍຕາຕະລາງ? ປະສິດຕິພາບການນໍາໃຊ້ການເຂົ້າຮ່ວມຊ້າຍຊ້າຍ

Mysql ການ​ນໍາ​ໃຊ້​ການ​ເຊື່ອມ​ຕໍ່​

ໃນບົດທີ່ຜ່ານມາ, ພວກເຮົາໄດ້ຮຽນຮູ້ວິທີການອ່ານຂໍ້ມູນຈາກຕາຕະລາງຫນຶ່ງ, ເຊິ່ງຂ້ອນຂ້າງງ່າຍດາຍ, ແຕ່ໃນການນໍາໃຊ້ຕົວຈິງມັນມັກຈະຈໍາເປັນຕ້ອງອ່ານຂໍ້ມູນຈາກຕາຕະລາງຂໍ້ມູນຫຼາຍ.

ໃນບົດນີ້ພວກເຮົາຈະສະແດງໃຫ້ທ່ານເຫັນວິທີການໃຊ້ MySQL's JOIN ເພື່ອສອບຖາມຂໍ້ມູນໃນສອງຕາຕະລາງຫຼືຫຼາຍກວ່ານັ້ນ.

ທ່ານສາມາດໃຊ້ Mysql's JOIN ໃນ SELECT, UPDATE ແລະ DELETE statements ເພື່ອເຂົ້າຮ່ວມການສອບຖາມຫຼາຍຕາຕະລາງ.

JOIN ແບ່ງອອກເປັນສາມປະເພດຕໍ່ໄປນີ້ຕາມໜ້າທີ່ຂອງມັນ:

  • ເຂົ້າຮ່ວມພາຍໃນ (ເຂົ້າຮ່ວມພາຍໃນ, ຫຼື equijoin): ເອົາບັນທຶກທີ່ມີຊ່ອງຂໍ້ມູນທີ່ກົງກັນໃນສອງຕາຕະລາງ.
  • LEFT JOIN (ເຂົ້າຮ່ວມຊ້າຍ):ເອົາບັນທຶກທັງຫມົດໃນຕາຕະລາງຊ້າຍ, ເຖິງແມ່ນວ່າບໍ່ມີບັນທຶກທີ່ກົງກັນຢູ່ໃນຕາຕະລາງຂວາ.
  • RIGHT JOIN (ເຂົ້າຮ່ວມຂວາ): ກົງກັນຂ້າມກັບ LEFT JOIN, ມັນຖືກນໍາໃຊ້ເພື່ອເອົາບັນທຶກທັງຫມົດໃນຕາຕະລາງທີ່ຖືກຕ້ອງ, ເຖິງແມ່ນວ່າບໍ່ມີບັນທຶກການຈັບຄູ່ທີ່ກົງກັນຢູ່ໃນຕາຕະລາງຊ້າຍ.

ໃຊ້ INNER JOIN ໃນ Command Prompt

ພວກເຮົາມີສອງຕາຕະລາງ tcount_tbl ແລະ chenweiliang_tbl ໃນຖານຂໍ້ມູນ chenweiliang.ຂໍ້ມູນຂອງສອງຕາຕະລາງຂໍ້ມູນມີດັ່ງນີ້:

ຕົວຢ່າງ

ລອງໃຊ້ຕົວຢ່າງຕໍ່ໄປນີ້:

ຂໍ້ມູນຕົວຢ່າງການທົດສອບ

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)

ຕໍ່ໄປພວກເຮົາຈະໃຊ້ MySQLການ​ເຂົ້າ​ຮ່ວມ​ພາຍ​ໃນ (ທ່ານ​ຍັງ​ສາ​ມາດ​ຍົກ​ເວັ້ນ​ການ​ເຂົ້າ​ຮ່ວມ​ພາຍ​ໃນ​ແລະ​ການ​ນໍາ​ໃຊ້ JOIN ໄດ້​, ຜົນ​ກະ​ທົບ​ແມ່ນ​ຄື​ກັນ​)ເພື່ອເຊື່ອມຕໍ່ສອງຕາຕະລາງຂ້າງເທິງເພື່ອອ່ານຄ່າຂອງຊ່ອງຂໍ້ມູນ chenweiliang_count ທີ່ສອດຄ້ອງກັບຊ່ອງຂໍ້ມູນ chenweiliang_author ທັງໝົດໃນຕາຕະລາງ chenweiliang_tbl ໃນຕາຕະລາງ 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)

ຄໍາຖະແຫຼງທີ່ SQL ຂ້າງເທິງແມ່ນທຽບເທົ່າກັບ:

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 ຊ້າຍ

MySQL ຊ້າຍເຂົ້າຮ່ວມແມ່ນແຕກຕ່າງຈາກເຂົ້າຮ່ວມ. MySQL LEFT JOIN ຈະອ່ານຂໍ້ມູນທັງຫມົດໃນຕາຕະລາງຂໍ້ມູນຊ້າຍ, ເຖິງແມ່ນວ່າຕາຕະລາງຂວາບໍ່ມີຂໍ້ມູນທີ່ສອດຄ້ອງກັນ.

ຕົວຢ່າງ

ລອງໃຊ້ຕົວຢ່າງຕໍ່ໄປນີ້ເພື່ອ chenweiliang_tbl ສໍາ​ລັບ​ຕາ​ຕະ​ລາງ​ຊ້າຍ​,tcount_tbl ສໍາລັບຕາຕະລາງທີ່ຖືກຕ້ອງ, ເຂົ້າໃຈຄໍາຮ້ອງສະຫມັກຂອງ MySQL 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)

ໃນຕົວຢ່າງຂ້າງເທິງ, LEFT JOIN ຖືກນໍາໃຊ້, ແລະຄໍາຖະແຫຼງນີ້ຈະອ່ານຂໍ້ມູນພາກສະຫນາມທີ່ເລືອກທັງຫມົດຂອງຕາຕະລາງຂໍ້ມູນ chenweiliang_tbl ຢູ່ເບື້ອງຊ້າຍ, ເຖິງແມ່ນວ່າບໍ່ມີຄ່າພາກສະຫນາມທີ່ສອດຄ້ອງກັນຂອງ chenweiliang_author ໃນຕາຕະລາງ tcount_tbl ທາງດ້ານຂວາ.


ເຂົ້າຮ່ວມ MySQL

MySQL RIGHT JOIN ຈະອ່ານຂໍ້ມູນທັງໝົດໃນຕາຕະລາງຂໍ້ມູນຢູ່ເບື້ອງຂວາ, ເຖິງແມ່ນວ່າບໍ່ມີຂໍ້ມູນກົງກັນໃນຕາຕະລາງຢູ່ເບື້ອງຊ້າຍ.

ຕົວຢ່າງ

ລອງໃຊ້ຕົວຢ່າງຕໍ່ໄປນີ້ເພື່ອ chenweiliang_tbl ສໍາ​ລັບ​ຕາ​ຕະ​ລາງ​ຊ້າຍ​,tcount_tbl ສໍາລັບຕາຕະລາງທີ່ຖືກຕ້ອງ, ເຂົ້າໃຈຄໍາຮ້ອງສະຫມັກຂອງ MySQL RIGHT JOIN:

ເຂົ້າຮ່ວມສິດ

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 ຖືກນໍາໃຊ້ໃນຕົວຢ່າງຂ້າງເທິງ, ຄໍາຖະແຫຼງນີ້ຈະອ່ານຂໍ້ມູນພາກສະຫນາມທີ່ເລືອກທັງຫມົດຂອງຕາຕະລາງຂໍ້ມູນທີ່ຖືກຕ້ອງ tcount_tbl, ເຖິງແມ່ນວ່າບໍ່ມີຄ່າພາກສະຫນາມ chenweiliang_author ທີ່ສອດຄ້ອງກັນໃນຕາຕະລາງຊ້າຍ chenweiliang_tbl.


ການນໍາໃຊ້ JOIN ໃນ PHP script

ຟັງຊັນ mysqli_query() ຖືກນໍາໃຊ້ໃນ PHP ເພື່ອປະຕິບັດຄໍາສັ່ງ SQL, ທ່ານສາມາດນໍາໃຊ້ຄໍາສັ່ງ SQL ດຽວກັນກັບຂ້າງເທິງເປັນພາລາມິເຕີຂອງຟັງຊັນ mysqli_query().

ລອງໃຊ້ຕົວຢ່າງຕໍ່ໄປນີ້:

MySQL ORDER ໂດຍການທົດສອບ:

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

ຫວັງ Chen Weiliang Blog ( https://www.chenweiliang.com/ ) shared "ການນໍາໃຊ້ຫຼາຍຕາຕະລາງຂອງຖານຂໍ້ມູນ MySQL ພາຍໃນເຂົ້າຮ່ວມ? ຊ້າຍ​ຊ້າຍ​ເຂົ້າ​ຮ່ວມ​ປະ​ສິດ​ທິ​ພາບ​ການ​ນໍາ​ໃຊ້​,​, ມັນ​ຈະ​ຊ່ວຍ​ໃຫ້​ທ່ານ​.

ຍິນດີຕ້ອນຮັບແບ່ງປັນການເຊື່ອມຕໍ່ຂອງບົດຄວາມນີ້:https://www.chenweiliang.com/cwl-488.html

ເພື່ອປົດລັອກເຄັດລັບທີ່ເຊື່ອງໄວ້ເພີ່ມເຕີມ🔑, ຍິນດີຕ້ອນຮັບເຂົ້າສູ່ຊ່ອງ Telegram ຂອງພວກເຮົາ!

Share and like ຖ້າທ່ານມັກມັນ! ການແບ່ງປັນ ແລະຖືກໃຈຂອງເຈົ້າເປັນແຮງຈູງໃຈຢ່າງຕໍ່ເນື່ອງຂອງພວກເຮົາ!

 

评论评论

ທີ່ຢູ່ອີເມວຂອງເຈົ້າຈະບໍ່ຖືກເຜີຍແຜ່. ທົ່ງນາທີ່ກໍານົດໄວ້ແມ່ນຖືກນໍາໃຊ້ * ປ້າຍ ກຳ ກັບ

ເລື່ອນໄປທາງເທີງ