MySQL verilənlər bazası daxili qoşulma çox masalı istifadə? sola qoşulma istifadə səmərəliliyi

MySQL verilənlər bazasıdaxili qoşulma çox masalı istifadə? sola qoşulma istifadə səmərəliliyi

mysql əlaqənin istifadəsi

Əvvəlki fəsillərdə biz bir cədvəldən verilənləri oxumağı öyrəndik, bu nisbətən sadədir, lakin real tətbiqlərdə çox vaxt çoxlu verilənlər cədvəlindən məlumatları oxumaq lazımdır.

Bu fəsildə iki və ya daha çox cədvəldəki məlumatları sorğulamaq üçün MySQL-in JOIN-dən necə istifadə edəcəyinizi sizə göstərəcəyik.

Çox cədvəlli sorğulara qoşulmaq üçün SELECT, UPDATE və DELETE ifadələrində Mysql-in JOIN funksiyasından istifadə edə bilərsiniz.

JOIN funksiyasına görə təxminən aşağıdakı üç kateqoriyaya bölünür:

  • INNER JOIN (daxili birləşmə və ya bərabər birləşmə): İki cədvəldə uyğun sahələri olan qeydləri əldə edin.
  • SOL QOŞULMA (soldan qoşulma):Sağ cədvəldə uyğun qeydlər olmasa belə, sol cədvəldəki bütün qeydləri əldə edin.
  • SAĞ QOŞULMA (sağda qoşulma): LEFT JOIN-dan fərqli olaraq, sol cədvəldə uyğun gələn qeydlər olmasa belə, sağ cədvəldəki bütün qeydləri əldə etmək üçün istifadə olunur.

Komanda əmrində INNER JOIN-dan istifadə edin

Chenweiliang verilənlər bazasında tcount_tbl və chenweiliang_tbl adlı iki cədvəlimiz var.İki məlumat cədvəlinin məlumatları aşağıdakı kimidir:

Nümunə

Aşağıdakı nümunələri sınayın:

test nümunəsi məlumatları

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)

Sonra MySQL-dən istifadə edəcəyikINNER JOIN (həmçinin INNER-i buraxıb JOIN-dan istifadə edə bilərsiniz, effekt eynidir)Yuxarıdakı iki cədvəli birləşdirmək üçün tcount_tbl cədvəlindəki chenweiliang_tbl cədvəlindəki bütün chenweiliang_author sahələrinə uyğun gələn chenweiliang_count sahəsinin dəyərini oxumaq üçün:

İNTER 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)

Yuxarıdakı SQL ifadəsi aşağıdakılara bərabərdir:

WHERE bəndi

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 QOŞULUŞDAN SOL

MySQL sol birləşmə birləşmədən fərqlidir. MySQL LEFT JOIN, sağ cədvəldə müvafiq məlumat olmasa belə, sol verilənlər cədvəlindəki bütün məlumatları oxuyacaq.

Nümunə

Aşağıdakı nümunələri sınayın chenweiliang_tbl sol masa üçün,tcount_tbl Düzgün cədvəl üçün MySQL LEFT JOIN tətbiqini anlayın:

SOL QOŞUN

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)

Yuxarıdakı misalda LEFT JOIN istifadə olunur və bu ifadə, sağdakı tcount_tbl cədvəlində chenweiliang_author-un müvafiq sahə dəyəri olmasa belə, soldakı chenweiliang_tbl verilənlər cədvəlinin bütün seçilmiş sahə məlumatlarını oxuyacaq.


MySQL SAĞ QOŞULUN

MySQL RIGHT JOIN, soldakı cədvəldə müvafiq məlumat olmasa belə, sağdakı verilənlər cədvəlindəki bütün məlumatları oxuyacaq.

Nümunə

Aşağıdakı nümunələri sınayın chenweiliang_tbl sol masa üçün,tcount_tbl Düzgün cədvəl üçün MySQL RIGHT JOIN tətbiqini anlayın:

SAĞ QOŞULUN

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 yuxarıdakı misalda istifadə olunur, bu ifadə soldakı chenweiliang_tbl cədvəlində chenweiliang_author üçün müvafiq sahə dəyəri olmasa belə, sağdakı tcount_tbl verilənlər cədvəlinin bütün seçilmiş sahə məlumatlarını oxuyacaq.


PHP skriptində JOIN-dan istifadə

mysqli_query() funksiyası PHP-də SQL ifadələrini yerinə yetirmək üçün istifadə olunur, siz mysqli_query() funksiyasının parametri kimi yuxarıdakı SQL ifadəsindən istifadə edə bilərsiniz.

Aşağıdakı nümunəni sınayın:

MySQL SİPARİŞİ Sınaqla:

<?
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 Blogu ( https://www.chenweiliang.com/ ) paylaşılan "MySQL verilənlər bazası daxili birləşməsinin çox masalı istifadəsi? Sol Qoşulma İstifadə Effektivliyi", bu sizə kömək edəcək.

Bu məqalənin linkini paylaşmağa xoş gəlmisiniz:https://www.chenweiliang.com/cwl-488.html

Ən son yenilikləri əldə etmək üçün Chen Weiliang bloqunun Telegram kanalına xoş gəlmisiniz!

🔔 Kanalın ən yaxşı kataloqunda dəyərli "ChatGPT Məzmun Marketinq AI Aləti İstifadə Bələdçisi"ni ilk əldə edən siz olun! 🌟
📚 Bu təlimatda böyük dəyər var, 🌟Bu nadir fürsətdir, qaçırmayın! ⏰⌛💨
Bəyəndinizsə paylaşın və bəyənin!
Paylaşımlarınız və bəyənmələriniz davamlı motivasiyamızdır!

 

发表 评论

Elektron poçtunuz dərc olunmayacaq. Zəruri sahələrdən istifadə olunur * Etiket

yuxarıya sürüşdürün