MySQL database batin gabung pamakéan multi-tabel? kénca kénca gabung efisiensi pamakéan

database MySQLgabung jero pamakéan multi-tabel? kénca kénca gabung efisiensi pamakéan

MySQL pamakéan sambungan

Dina bab saméméhna, urang geus diajar kumaha carana maca data tina hiji méja, nu kawilang basajan, tapi dina aplikasi nyata mindeng perlu maca data tina sababaraha tabel data.

Dina bab ieu kami bakal nunjukkeun anjeun kumaha ngagunakeun MySQL JOIN pikeun naroskeun data dina dua atanapi langkung tabel.

Anjeun tiasa nganggo Mysql's JOIN dina SELECT, UPDATE sareng DELETE pernyataan pikeun ngiringan patarosan multi-tabel.

JOIN kasarna dibagi kana tilu kategori ieu dumasar kana fungsina:

  • INNER JOIN (gabungan batin, atanapi equijoin): Meunang rékaman jeung widang cocog dina dua tabel.
  • Kénca gabung (kénca gabung):Kéngingkeun sadaya rékaman dina méja kénca, sanaos henteu aya rékaman anu cocog dina méja katuhu.
  • RIGHT JOIN (katuhu gabung): Sabalikna mun Kénca gabung, dipaké pikeun meunangkeun sakabéh rékaman dina tabel katuhu, sanajan euweuh rékaman cocog pakait dina tabel kénca.

Ngagunakeun INNER JOIN dina Command Prompt

Simkuring gaduh dua tabel tcount_tbl na chenweiliang_tbl dina database chenweiliang.Data tina dua tabél data ieu di handap:

Contona

Coba conto di handap ieu:

nguji data conto

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)

Salajengna urang bakal ngagunakeun MySQLINNER JOIN (anjeun ogé tiasa ngaleungitkeun INNER sareng nganggo JOIN, pangaruhna sami)Pikeun nyambungkeun dua tabel di luhur maca nilai widang chenweiliang_count pakait jeung sakabeh widang chenweiliang_author dina tabel chenweiliang_tbl dina tabel tcount_tbl:

Jero gabung

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 luhur sami sareng:

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 Kénca gabung

MySQL kénca gabung béda ti gabung. MySQL LEFT JOIN bakal maca sakabéh data dina tabel data kénca, sanajan tabel katuhu euweuh data pakait.

Contona

Coba conto di handap ieu chenweiliang_tbl pikeun méja kénca,tcount_tbl Pikeun tabel katuhu, ngartos aplikasi MySQL LEFT JOIN:

Kénca gabung

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)

Dina conto di luhur, Kénca gabung dipaké, sarta pernyataan ieu bakal maca sakabeh data widang dipilih tina tabel data chenweiliang_tbl kénca, sanajan euweuh nilai widang pakait chenweiliang_author dina tabel tcount_tbl katuhu.


MySQL katuhu gabung

MySQL RIGHT JOIN bakal maca sadaya data dina tabel data di beulah katuhu, sanaos henteu aya data anu cocog dina tabel di kénca.

Contona

Coba conto di handap ieu chenweiliang_tbl pikeun méja kénca,tcount_tbl Pikeun tabel katuhu, ngartos aplikasi MySQL RIGHT JOIN:

Katuhu gabung

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)

Katuhu gabung dipaké dina conto di luhur, pernyataan ieu bakal maca sakabeh data widang dipilih tina tcount_tbl tabel data katuhu, sanajan euweuh pakait nilai widang chenweiliang_author dina tabel kénca chenweiliang_tbl.


Ngagunakeun JOIN dina Aksara PHP

Fungsi mysqli_query () dipaké dina PHP pikeun ngaéksekusi pernyataan SQL, anjeun tiasa nganggo pernyataan SQL anu sami sareng di luhur salaku parameter pikeun fungsi mysqli_query ().

Coba conto di handap ieu:

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

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) dibagikeun "Pamakéan multi-tabel database MySQL gabung jero? ditinggalkeun Kénca Gabung Efisiensi Dianggo", éta bakal nulungan anjeun.

Wilujeng ngabagikeun tautan artikel ieu:https://www.chenweiliang.com/cwl-488.html

Wilujeng sumping di saluran Telegram blog Chen Weiliang pikeun kéngingkeun apdet panganyarna!

🔔 Janten anu pangheulana kéngingkeun "Panduan Penggunaan Alat AI Pemasaran Konten ChatGPT" dina diréktori luhur saluran! 🌟
📚 Pituduh ieu ngandung nilai anu ageung, 🌟Ieu mangrupikeun kasempetan anu jarang, tong kantun! ⏰⌛💨
Bagikeun sareng suka upami anjeun resep!
Bagikeun sareng resep anjeun mangrupikeun motivasi kontinyu kami!

 

koméntar

Alamat email anjeun moal diterbitkeun. Widang anu diperyogikeun dianggo * Labél

gulung ka luhur