Database MySQL bagian dalam bergabung dengan penggunaan multi-tabel? kiri kiri gabung efisiensi penggunaan

database MySQLpenggunaan multi-tabel bergabung dalam? kiri kiri gabung efisiensi penggunaan

Mysql penggunaan koneksi

Dalam bab-bab sebelumnya, kita telah mempelajari cara membaca data dari satu tabel, yang relatif sederhana, tetapi dalam aplikasi nyata sering kali diperlukan untuk membaca data dari beberapa tabel data.

Dalam bab ini kami akan menunjukkan kepada Anda bagaimana menggunakan MySQL's JOIN untuk query data dalam dua atau lebih tabel.

Anda dapat menggunakan JOIN Mysql dalam pernyataan SELECT, UPDATE, dan DELETE untuk menggabungkan kueri multi-tabel.

JOIN secara kasar dibagi menjadi tiga kategori berikut sesuai dengan fungsinya:

  • INNER JOIN (gabungan dalam, atau equijoin): Dapatkan catatan dengan bidang yang cocok dalam dua tabel.
  • GABUNG KIRI (gabung kiri):Dapatkan semua catatan di tabel kiri, meskipun tidak ada catatan yang cocok di tabel kanan.
  • GABUNG KANAN (gabung kanan): Berlawanan dengan LEFT JOIN, ini digunakan untuk mendapatkan semua record di tabel kanan, bahkan jika tidak ada record yang cocok di tabel kiri.

Menggunakan INNER JOIN di Command Prompt

Kami memiliki dua tabel tcount_tbl dan chenweiliang_tbl di database chenweiliang.Data dari kedua tabel data tersebut adalah sebagai berikut:

Contoh

Coba contoh berikut:

data contoh uji

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)

Selanjutnya kita akan menggunakan MySQLINNER JOIN (Anda juga dapat menghilangkan INNER dan menggunakan JOIN, efeknya sama)Untuk menghubungkan dua tabel di atas untuk membaca nilai bidang chenweiliang_count yang sesuai dengan semua bidang chenweiliang_author di tabel chenweiliang_tbl di tabel 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)

Pernyataan SQL di atas setara dengan:

klausa 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 KIRI GABUNG

Gabung kiri MySQL berbeda dengan gabung. MySQL LEFT JOIN akan membaca semua data di tabel data kiri, bahkan jika tabel kanan tidak memiliki data yang sesuai.

Contoh

Coba contoh berikut untuk chenweiliang_tbl untuk meja kiri,tcount_tbl Untuk tabel kanan, pahami aplikasi 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)

Dalam contoh di atas, LEFT JOIN digunakan, dan pernyataan ini akan membaca semua data bidang yang dipilih dari tabel data chenweiliang_tbl di sebelah kiri, bahkan jika tidak ada nilai bidang yang sesuai dari chenweiliang_author di tabel tcount_tbl di sebelah kanan.


MySQL BENAR GABUNG

MySQL RIGHT JOIN akan membaca semua data pada tabel data di sebelah kanan, meskipun tidak ada data yang sesuai pada tabel di sebelah kiri.

Contoh

Coba contoh berikut untuk chenweiliang_tbl untuk meja kiri,tcount_tbl Untuk tabel kanan, pahami aplikasi MySQL RIGHT JOIN:

GABUNG BENAR

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 digunakan dalam contoh di atas, pernyataan ini akan membaca semua data bidang yang dipilih dari tabel data kanan tcount_tbl, bahkan jika tidak ada nilai bidang chenweiliang_author yang sesuai di tabel kiri chenweiliang_tbl.


Menggunakan GABUNG dalam skrip PHP

Fungsi mysqli_query() digunakan dalam PHP untuk mengeksekusi pernyataan SQL, Anda dapat menggunakan pernyataan SQL yang sama seperti di atas sebagai parameter untuk fungsi mysqli_query().

Coba contoh berikut:

Tes MySQL ORDER BY:

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

Harapan Chen Weiliang Blog ( https://www.chenweiliang.com/ ) berbagi "Penggunaan multi-tabel dari gabungan dalam database MySQL? kiri Gabung Efisiensi Penggunaan", itu akan membantu Anda.

Selamat datang untuk membagikan tautan artikel ini:https://www.chenweiliang.com/cwl-488.html

Selamat datang di saluran Telegram blog Chen Weiliang untuk mendapatkan pembaruan terkini!

🔔 Jadilah orang pertama yang mendapatkan "Panduan Penggunaan Alat AI Pemasaran Konten ChatGPT" yang berharga di direktori teratas saluran! 🌟
📚 Panduan ini mengandung nilai yang sangat besar, 🌟Ini adalah kesempatan langka, jangan sampai terlewatkan! ⏰⌛💨
Bagikan dan sukai jika Anda suka!
Berbagi dan suka Anda adalah motivasi berkelanjutan kami!

 

发表 评论

Alamat email Anda tidak akan dipublikasikan. 必填 项 已 用 * 标注

滚动 到 顶部