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)

Հաջորդը մենք կօգտագործենք MySQLՆԵՐՔԻՆ ՄԻԱՑՈՒՄ (կարող եք նաև բաց թողնել INNER-ը և օգտագործել JOIN, էֆեկտը նույնն է)Վերոհիշյալ երկու աղյուսակները միացնելու համար tcount_tbl աղյուսակում chenweiliang_tbl աղյուսակի բոլոր chenweiliang_author դաշտերին համապատասխանող chenweiliang_count դաշտի արժեքը կարդալու համար.

ՆԵՐՔԻՆ ՄԻԱՑՈՒՄ

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 տվյալների աղյուսակի ընտրված դաշտի տվյալները, նույնիսկ եթե աջ կողմում tcount_tbl աղյուսակում չկա chenweiliang_author-ի համապատասխան դաշտի արժեքը:


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_tbl աղյուսակում չկա chenweiliang_author-ի համապատասխան դաշտի արժեքը:


Օգտագործելով 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);
?>

Հույս Chen Weiliang բլոգ ( https://www.chenweiliang.com/ ) կիսվել է «MySQL տվյալների բազայի ներքին միացումի բազմասեղանի օգտագործումը? ձախ ձախ միացման օգտագործման արդյունավետությունը», դա կօգնի ձեզ:

Բարի գալուստ՝ կիսելու այս հոդվածի հղումը.https://www.chenweiliang.com/cwl-488.html

Բարի գալուստ Chen Weiliang-ի բլոգի Telegram ալիք՝ վերջին թարմացումները ստանալու համար:

🔔 Եղեք առաջինը, ով կստանա արժեքավոր «ChatGPT բովանդակության շուկայավարման AI գործիքի օգտագործման ուղեցույցը» ալիքի վերին գրացուցակում: 🌟
📚 Այս ուղեցույցը պարունակում է հսկայական արժեք, 🌟Սա հազվագյուտ հնարավորություն է, բաց մի՛ թողեք այն։ ⏰⌛💨
Տարածեք և հավանեք, եթե հավանեցիք:
Ձեր տարածումը և հավանումները մեր շարունակական շարժառիթն են:

 

发表 评论

Ձեր էլ. Փոստի հասցեն չի հրապարակվի: Օգտագործվում են պահանջվող դաշտերը * Պիտակ

ոլորել դեպի վերև