Χρήση εσωτερικής σύνδεσης σε πολλούς πίνακες βάσης δεδομένων MySQL; Αποδοτικότητα χρήσης αριστερού αριστερού συνδέσμου

Βάση δεδομένων MySQLχρήση εσωτερικής σύνδεσης πολλών τραπεζιών; Αποτελεσματικότητα χρήσης αριστερού αριστερού συνδέσμου

Mysql χρήση σύνδεσης

Στα προηγούμενα κεφάλαια, μάθαμε πώς να διαβάζουμε δεδομένα από έναν πίνακα, κάτι που είναι σχετικά απλό, αλλά σε πραγματικές εφαρμογές είναι συχνά απαραίτητο να διαβάζουμε δεδομένα από πολλούς πίνακες δεδομένων.

Σε αυτό το κεφάλαιο θα σας δείξουμε πώς να χρησιμοποιείτε το JOIN της MySQL για να αναζητήσετε δεδομένα σε δύο ή περισσότερους πίνακες.

Μπορείτε να χρησιμοποιήσετε το JOIN της Mysql στις δηλώσεις SELECT, UPDATE και DELETE για να ενώσετε ερωτήματα πολλών πινάκων.

Το JOIN χωρίζεται χονδρικά στις ακόλουθες τρεις κατηγορίες ανάλογα με τη λειτουργία του:

  • ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ (εσωτερική ένωση ή ισοσύνδεση): Λάβετε εγγραφές με αντίστοιχα πεδία σε δύο πίνακες.
  • LEFT JOIN (αριστερή σύνδεση):Λάβετε όλες τις εγγραφές στον αριστερό πίνακα, ακόμα κι αν δεν υπάρχουν αντίστοιχες εγγραφές στον δεξιό πίνακα.
  • RIGHT JOIN (δεξιά σύνδεση): Σε αντίθεση με το LEFT JOIN, χρησιμοποιείται για τη λήψη όλων των εγγραφών στον δεξιό πίνακα, ακόμα κι αν δεν υπάρχουν αντίστοιχες εγγραφές στον αριστερό πίνακα.

Χρησιμοποιώντας το INNER JOIN στη γραμμή εντολών

Έχουμε δύο πίνακες 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ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ (μπορείτε επίσης να παραλείψετε το INNER και να χρησιμοποιήσετε το JOIN, το αποτέλεσμα είναι το ίδιο)Για να συνδέσετε τους δύο παραπάνω πίνακες για να διαβάσετε την τιμή του πεδίου chenweiliang_count που αντιστοιχεί σε όλα τα πεδία chenweiliang_author στον πίνακα chenweiliang_tbl στον πίνακα tcount_tbl:

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

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

Η συνάρτηση mysqli_query() χρησιμοποιείται στην PHP για την εκτέλεση εντολών SQL, μπορείτε να χρησιμοποιήσετε την ίδια πρόταση SQL όπως παραπάνω ως παράμετρος της συνάρτησης mysqli_query().

Δοκιμάστε το ακόλουθο παράδειγμα:

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

Ιστολόγιο Hope Chen Weiliang ( https://www.chenweiliang.com/ ) κοινοποιήθηκε "Χρήση πολλαπλών πινάκων της εσωτερικής σύνδεσης της βάσης δεδομένων MySQL; αριστερά Left Join Usage Efficiency», θα σας βοηθήσει.

Καλώς ήρθατε να μοιραστείτε τον σύνδεσμο αυτού του άρθρου:https://www.chenweiliang.com/cwl-488.html

Καλώς ήρθατε στο κανάλι Telegram του ιστολογίου του Chen Weiliang για να λαμβάνετε τις τελευταίες ενημερώσεις!

🔔 Γίνετε ο πρώτος που θα αποκτήσει τον πολύτιμο "Οδηγό χρήσης εργαλείου τεχνητής νοημοσύνης μάρκετινγκ περιεχομένου ChatGPT" στον κορυφαίο κατάλογο του καναλιού! 🌟
📚 Αυτός ο οδηγός περιέχει τεράστια αξία, 🌟Αυτή είναι μια σπάνια ευκαιρία, μην τη χάσετε! ⏰⌛💨
Κοινοποιήστε και κάντε like αν σας αρέσει!
Η κοινή χρήση και τα like σας είναι το συνεχές μας κίνητρο!

 

发表 评论

Η διεύθυνση email σας δεν θα δημοσιευθεί. 必填 项 已 用 * 标注

κύλιση στην κορυφή