Cyfeiriadur Erthygl
Cronfa ddata MySQLdefnydd aml-bwrdd ymuno mewnol? effeithlonrwydd defnydd ymuno chwith chwith
Mysql defnydd o gysylltiad
Yn y penodau blaenorol, rydym wedi dysgu sut i ddarllen data o un tabl, sy'n gymharol syml, ond mewn cymwysiadau go iawn yn aml mae angen darllen data o dablau data lluosog.
Yn y bennod hon byddwn yn dangos i chi sut i ddefnyddio JOIN MySQL i ymholi data mewn dau dabl neu fwy.
Gallwch ddefnyddio Mysql's JOIN mewn datganiadau DEWIS, DIWEDDARU a DILEU i ymuno ag ymholiadau aml-bwrdd.
Rhennir JOIN yn fras i'r tri chategori canlynol yn ôl ei swyddogaeth:
- YMuno MEWNOL (uno mewnol, neu equijoin): Cael cofnodion gyda meysydd paru mewn dau dabl.
- YMUNWCH CHWITH (ymuno chwith):Sicrhewch yr holl gofnodion yn y tabl chwith, hyd yn oed os nad oes unrhyw gofnodion cyfatebol yn y tabl cywir.
- YMUNWCH I'R DDE (ymuno ar y dde): Yn groes i JOIN CHWITH, fe'i defnyddir i gael yr holl gofnodion yn y tabl cywir, hyd yn oed os nad oes unrhyw gofnodion cyfatebol cyfatebol yn y tabl chwith.
Defnyddio JOIN INNER yn Command Prompt
Mae gennym ddau dabl tcount_tbl a chenweiliang_tbl yn y gronfa ddata chenweiliang.Mae data’r ddau dabl data fel a ganlyn:
enghraifft
Rhowch gynnig ar yr enghreifftiau canlynol:
data enghreifftiau prawf
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)
Nesaf byddwn yn defnyddio MySQLJOIN INNER (gallwch hefyd hepgor INNER a defnyddio JOIN, mae'r effaith yr un peth)I gysylltu'r ddau dabl uchod i ddarllen gwerth y maes chenweiliang_count sy'n cyfateb i'r holl feysydd chenweiliang_author yn y tabl chenweiliang_tbl yn y tabl tcount_tbl:
INNER 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)
Mae'r datganiad SQL uchod yn cyfateb i:
LLE cymal
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)
YMUNO MySQL CHWITH
Mae ymuno chwith MySQL yn wahanol i ymuno. Bydd MySQL LEFT JOIN yn darllen yr holl ddata yn y tabl data chwith, hyd yn oed os nad oes gan y tabl cywir unrhyw ddata cyfatebol.
enghraifft
Rhowch gynnig ar yr enghreifftiau canlynol i chenweiliang_tbl ar gyfer y bwrdd chwith,tcyfrif_tbl Ar gyfer y tabl cywir, deallwch gymhwysiad MySQL LEFT JOIN:
YMUNWCH CHWITH
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)
Yn yr enghraifft uchod, defnyddir LEFT JOIN, a bydd y datganiad hwn yn darllen yr holl ddata maes dethol o'r tabl data chenweiliang_tbl ar y chwith, hyd yn oed os nad oes gwerth maes cyfatebol o chenweiliang_author yn y tabl tcount_tbl ar y dde.
YMUNO â MySQL DDE
Bydd MySQL RIGHT JOIN yn darllen yr holl ddata yn y tabl data ar y dde, hyd yn oed os nad oes data cyfatebol yn y tabl ar y chwith.
enghraifft
Rhowch gynnig ar yr enghreifftiau canlynol i chenweiliang_tbl ar gyfer y bwrdd chwith,tcyfrif_tbl Ar gyfer y tabl cywir, deallwch gymhwysiad MySQL RIGHT JOIN:
YMUNWCH I'R DDE
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)
Defnyddir JOIN DDE yn yr enghraifft uchod, bydd y datganiad hwn yn darllen yr holl ddata maes dethol o'r tabl data tcount_tbl ar y dde, hyd yn oed os nad oes gwerth maes cyfatebol chenweiliang_author yn y tabl chenweiliang_tbl ar y chwith.
Gan ddefnyddio JOIN yn sgript PHP
Defnyddir y ffwythiant mysqli_query() yn PHP i weithredu datganiadau SQL, gallwch ddefnyddio'r un datganiad SQL ag uchod â pharamedr y swyddogaeth mysqli_query().
Rhowch gynnig ar yr enghraifft ganlynol:
GORCHYMYN MySQL GAN brawf:
<? 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 Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ ) shared "Defnydd aml-tabl o ymuno mewnol cronfa ddata MySQL? chwith Chwith Ymunwch ag Effeithlonrwydd Defnydd", bydd yn eich helpu.
Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-488.html
Croeso i sianel Telegram o blog Chen Weiliang i gael y diweddariadau diweddaraf!
📚 Mae'r canllaw hwn yn cynnwys gwerth enfawr, 🌟Mae hwn yn gyfle prin, peidiwch â'i golli! ⏰⌛💨
Rhannwch a hoffwch os hoffech chi!
Eich rhannu a'ch hoff bethau yw ein cymhelliant parhaus!