Użycie wielu tabel w bazie danych MySQL? Efektywność wykorzystania lewego lewego połączenia

Baza danych MySQLwewnętrzne połączenie wielostolikowe? Efektywność wykorzystania lewego lewego połączenia

Mysql korzystanie z połączenia

W poprzednich rozdziałach nauczyliśmy się czytać dane z jednej tabeli, co jest stosunkowo proste, ale w rzeczywistych aplikacjach często konieczne jest odczytywanie danych z wielu tabel danych.

W tym rozdziale pokażemy, jak używać JOIN w MySQL do tworzenia zapytań o dane w dwóch lub więcej tabelach.

Możesz użyć Mysql's JOIN w instrukcjach SELECT, UPDATE i DELETE, aby połączyć kwerendy wielotabelowe.

JOIN jest z grubsza podzielony na następujące trzy kategorie w zależności od swojej funkcji:

  • INNER JOIN (sprzężenie wewnętrzne lub equijoin): Pobierz rekordy z pasującymi polami w dwóch tabelach.
  • LEFT JOIN (lewe sprzężenie):Pobierz wszystkie rekordy z lewej tabeli, nawet jeśli w prawej tabeli nie ma pasujących rekordów.
  • RIGHT JOIN (prawe łączenie): W przeciwieństwie do LEFT JOIN, służy do pobrania wszystkich rekordów z prawej tabeli, nawet jeśli w lewej tabeli nie ma odpowiednich pasujących rekordów.

Używanie INNER JOIN w wierszu polecenia

W bazie danych chenweiliang mamy dwie tabele tcount_tbl i chenweiliang_tbl.Dane z dwóch tabel danych są następujące:

Instancja

Wypróbuj następujące przykłady:

dane instancji testowej

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)

Następnie użyjemy MySQLINNER JOIN (możesz też pominąć INNER i użyć JOIN, efekt jest taki sam)Aby połączyć powyższe dwie tabele, aby odczytać wartość pola chenweiliang_count odpowiadającą wszystkim polom chenweiliang_author w tabeli chenweiliang_tbl w tabeli 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)

Powyższa instrukcja SQL jest odpowiednikiem:

klauzula GDZIE

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)

DOŁĄCZ DO MYSQL W LEWO

Lewe sprzężenie MySQL różni się od sprzężenia. MySQL LEFT JOIN odczyta wszystkie dane z lewej tabeli danych, nawet jeśli w prawej tabeli nie ma odpowiadających danych.

Instancja

Wypróbuj poniższe przykłady, aby chenweiliang_tbl dla lewego stołu,tliczba_tbl Aby uzyskać odpowiednią tabelę, zapoznaj się z zastosowaniem MySQL LEFT JOIN:

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)

W powyższym przykładzie użyto LEFT JOIN, a ta instrukcja odczyta wszystkie wybrane dane pola tabeli danych chenweiliang_tbl po lewej stronie, nawet jeśli nie ma odpowiadającej wartości pola chenweiliang_author w tabeli tcount_tbl po prawej stronie.


DOŁĄCZ DO MYSQL

MySQL RIGHT JOIN odczyta wszystkie dane w tabeli danych po prawej stronie, nawet jeśli nie ma odpowiadających danych w tabeli po lewej stronie.

Instancja

Wypróbuj poniższe przykłady, aby chenweiliang_tbl dla lewego stołu,tliczba_tbl Aby uzyskać odpowiednią tabelę, zapoznaj się z zastosowaniem MySQL RIGHT JOIN:

WŁAŚCIWE DOŁĄCZENIE

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)

W powyższym przykładzie użyto RIGHT JOIN, ta instrukcja odczyta wszystkie wybrane dane pola z prawej tabeli danych tcount_tbl, nawet jeśli nie ma odpowiadającej wartości pola chenweiliang_author w lewej tabeli chenweiliang_tbl.


Używanie JOIN w skrypcie PHP

Funkcja mysqli_query() jest używana w PHP do wykonywania instrukcji SQL, możesz użyć tej samej instrukcji SQL co powyżej jako parametru funkcji mysqli_query().

Wypróbuj następujący przykład:

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

Nadzieja Chen Weiliang Blog ( https://www.chenweiliang.com/ ) współdzielone "Wielotablicowe użycie wewnętrznego sprzężenia bazy danych MySQL? left Left Join Efektywność użytkowania”, to ci pomoże.

Zapraszamy do udostępnienia linku do tego artykułu:https://www.chenweiliang.com/cwl-488.html

Witamy na kanale Telegram bloga Chen Weiliang, aby uzyskać najnowsze aktualizacje!

🔔 Bądź pierwszą osobą, która otrzyma cenny „Przewodnik po użyciu narzędzia AI do marketingu treści ChatGPT” w głównym katalogu kanału! 🌟
📚 Ten przewodnik zawiera ogromną wartość, 🌟To rzadka okazja, nie przegap jej! ⏰⌛💨
Udostępnij i polub, jeśli chcesz!
Twoje udostępnianie i polubienia to nasza ciągła motywacja!

 

发表 评论

Twoj adres e-mail nie bedzie opublikowany. 必填 项 已 用 * 标注

przewiń na górę