Cơ sở dữ liệu MySQL bên trong tham gia nhiều bảng sử dụng? bên trái hiệu quả sử dụng tham gia

Cơ sở dữ liệu MySQLtham gia bên trong nhiều bảng sử dụng? bên trái hiệu quả sử dụng tham gia

Mysql sử dụng kết nối

Ở các chương trước, chúng ta đã biết cách đọc dữ liệu từ một bảng, cách này tương đối đơn giản, tuy nhiên trong các ứng dụng thực tế thường phải đọc dữ liệu từ nhiều bảng dữ liệu.

Trong chương này, chúng tôi sẽ chỉ cho bạn cách sử dụng JOIN của MySQL để truy vấn dữ liệu trong hai hoặc nhiều bảng.

Bạn có thể sử dụng Mysql's JOIN trong các câu lệnh SELECT, UPDATE và DELETE để tham gia các truy vấn nhiều bảng.

JOIN được chia thành ba loại sau theo chức năng của nó:

  • INNER JOIN (tham gia bên trong hoặc tương đương): Nhận các bản ghi có các trường phù hợp trong hai bảng.
  • THAM GIA TRÁI (tham gia bên trái):Nhận tất cả các bản ghi trong bảng bên trái, ngay cả khi không có bản ghi nào phù hợp trong bảng bên phải.
  • THAM GIA PHẢI (tham gia ngay): Trái ngược với LEFT JOIN, nó được sử dụng để lấy tất cả các bản ghi trong bảng bên phải, ngay cả khi không có bản ghi nào phù hợp tương ứng trong bảng bên trái.

Sử dụng INNER JOIN trong Command Prompt

Chúng tôi có hai bảng tcount_tbl và chenweiliang_tbl trong cơ sở dữ liệu chenweiliang.Dữ liệu của hai bảng dữ liệu như sau:

Phiên bản

Hãy thử các ví dụ sau:

dữ liệu phiên bản thử nghiệm

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)

Tiếp theo chúng ta sẽ sử dụng MySQLINNER JOIN (bạn cũng có thể bỏ INNER và sử dụng JOIN, hiệu quả là như nhau)Để kết nối hai bảng trên để đọc giá trị của trường chenweiliang_count tương ứng với tất cả các trường chenweiliang_author trong bảng chenweiliang_tbl trong bảng 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)

Câu lệnh SQL trên tương đương với:

Mệnh đề 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 THAM GIA TRÁI

MySQL left join khác với join. MySQL LEFT JOIN sẽ đọc tất cả dữ liệu trong bảng dữ liệu bên trái, ngay cả khi bảng bên phải không có dữ liệu tương ứng.

Phiên bản

Hãy thử các ví dụ sau để chenweiliang_tbl cho bảng bên trái,tcount_tbl Đối với bảng bên phải, hãy hiểu ứng dụng của 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)

Trong ví dụ trên, LEFT JOIN được sử dụng và câu lệnh này sẽ đọc tất cả dữ liệu trường đã chọn của bảng dữ liệu chenweiliang_tbl ở bên trái, ngay cả khi không có giá trị trường tương ứng của chenweiliang_author trong bảng tcount_tbl ở bên phải.


THAM GIA QUYỀN MySQL

MySQL RIGHT JOIN sẽ đọc tất cả dữ liệu trong bảng dữ liệu bên phải, ngay cả khi không có dữ liệu tương ứng trong bảng bên trái.

Phiên bản

Hãy thử các ví dụ sau để chenweiliang_tbl cho bảng bên trái,tcount_tbl Đối với bảng bên phải, hãy hiểu ứng dụng của MySQL RIGHT JOIN:

THAM GIA ĐÚNG

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 được sử dụng trong ví dụ trên, câu lệnh này sẽ đọc tất cả dữ liệu trường đã chọn của bảng dữ liệu tcount_tbl ở bên phải, ngay cả khi không có giá trị trường tương ứng của chenweiliang_author trong bảng chenweiliang_tbl ở bên trái.


Sử dụng JOIN trong tập lệnh PHP

Hàm mysqli_query () được sử dụng trong PHP để thực thi các câu lệnh SQL, bạn có thể sử dụng câu lệnh SQL tương tự như trên làm tham số của hàm mysqli_query ().

Hãy thử ví dụ sau:

MySQL ORDER BY thử nghiệm:

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

Hy vọng Chen Weiliang Blog ( https://www.chenweiliang.com/ ) đã chia sẻ "Sử dụng nhiều bảng của tham gia bên trong cơ sở dữ liệu MySQL? left Kết hợp sử dụng Hiệu quả ", nó sẽ giúp bạn.

Chào mừng bạn đến chia sẻ liên kết của bài viết này:https://www.chenweiliang.com/cwl-488.html

Chào mừng bạn đến với kênh Telegram trên blog của Chen Weiliang để cập nhật những thông tin mới nhất!

🔔 Hãy là người đầu tiên nhận được "Hướng dẫn sử dụng Công cụ AI tiếp thị nội dung ChatGPT" có giá trị trong thư mục trên cùng của kênh! 🌟
📚 Hướng dẫn này chứa đựng giá trị to lớn, 🌟Đây là cơ hội hiếm có, đừng bỏ lỡ! ⏰⌛💨
Chia sẻ và thích nếu bạn thích!
Chia sẻ và thích của bạn là động lực không ngừng của chúng tôi!

 

发表 评论

Địa chỉ email của bạn sẽ không được công bố. 项 已 * 标注

cuộn lên trên cùng