MySQL მონაცემთა ბაზის შიდა შეერთება მრავალ მაგიდასთან? მარცხენა მარცხენა მიერთების გამოყენების ეფექტურობა

MySQL მონაცემთა ბაზაშიდა შეერთების მრავალ მაგიდასთან გამოყენება? მარცხენა მარცხენა მიერთების გამოყენების ეფექტურობა

MySQL კავშირის გამოყენება

წინა თავებში ვისწავლეთ მონაცემების წაკითხვა ერთი ცხრილიდან, რაც შედარებით მარტივია, მაგრამ რეალურ აპლიკაციებში ხშირად საჭიროა მონაცემთა წაკითხვა მრავალი მონაცემთა ცხრილიდან.

ამ თავში ჩვენ გაჩვენებთ, თუ როგორ გამოიყენოთ MySQL-ის JOIN მონაცემების მოთხოვნის მიზნით ორ ან მეტ ცხრილში.

თქვენ შეგიძლიათ გამოიყენოთ Mysql-ის JOIN 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)

შემდეგ ჩვენ გამოვიყენებთ MySQLINNER JOIN (შეგიძლიათ ასევე გამოტოვოთ INNER და გამოიყენოთ JOIN, ეფექტი იგივეა)ზემოთ ორი ცხრილის დასაკავშირებლად, რათა წაიკითხოთ chenweiliang_count ველის მნიშვნელობა, რომელიც შეესაბამება chenweiliang_tbl ცხრილის ყველა chenweiliang_author ველს 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-ის აპლიკაცია:

LEFT შეერთება

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 RIGHT JOIN

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 ტესტირება:

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

იმედი ჩენ ვეილიანგის ბლოგი ( https://www.chenweiliang.com/ ) გააზიარა "MySQL მონაცემთა ბაზის შიდა შეერთების მრავალ ცხრილის გამოყენება? მარცხენა შეერთების გამოყენების ეფექტურობა“, ეს დაგეხმარებათ.

კეთილი იყოს თქვენი მობრძანება ამ სტატიის ბმულის გასაზიარებლად:https://www.chenweiliang.com/cwl-488.html

კეთილი იყოს თქვენი მობრძანება Chen Weiliang-ის ბლოგის ტელეგრამის არხზე, რომ მიიღოთ უახლესი განახლებები!

🔔 იყავით პირველი, ვინც მიიღეთ ღირებული "ChatGPT Content Marketing AI Tool Usage Guide" არხის ზედა დირექტორიაში! 🌟
📚 ეს სახელმძღვანელო შეიცავს უზარმაზარ ღირებულებას, 🌟ეს იშვიათი შესაძლებლობაა, არ გამოტოვოთ! ⏰⌛💨
გააზიარეთ და მოიწონეთ თუ მოგეწონათ!
თქვენი გაზიარება და მოწონებები ჩვენი უწყვეტი მოტივაციაა!

 

评论

თქვენი ელ.ფოსტის მისამართი არ გამოქვეყნდება. გამოყენებულია აუცილებელი ველები * ლეიბლი

გადახვევა ზევით