Uso interno de várias tabelas do banco de dados MySQL? esquerda esquerda juntar eficiência de uso

banco de dados MySQLuso de várias tabelas de junção interna? esquerda esquerda juntar eficiência de uso

Mysql uso de conexão

Nos capítulos anteriores, aprendemos como ler dados de uma tabela, o que é relativamente simples, mas em aplicações reais muitas vezes é necessário ler dados de várias tabelas de dados.

Neste capítulo mostraremos como usar o JOIN do MySQL para consultar dados em duas ou mais tabelas.

Você pode usar o JOIN do Mysql em instruções SELECT, UPDATE e DELETE para unir consultas de várias tabelas.

JOIN é dividido aproximadamente nas três categorias a seguir, de acordo com sua função:

  • INNER JOIN (junção interna ou equijoin): obtenha registros com campos correspondentes em duas tabelas.
  • LEFT JOIN (junção esquerda):Obtenha todos os registros na tabela à esquerda, mesmo se não houver registros correspondentes na tabela à direita.
  • RIGHT JOIN (junção direita): Ao contrário do LEFT JOIN, ele é usado para obter todos os registros na tabela da direita, mesmo que não haja registros correspondentes na tabela da esquerda.

Usando INNER JOIN no prompt de comando

Temos duas tabelas tcount_tbl e chenweiliang_tbl no banco de dados chenweiliang.Os dados das duas tabelas de dados são os seguintes:

Instância

Tente os seguintes exemplos:

dados da instância de teste

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)

Em seguida, usaremos o MySQLINNER JOIN (você também pode omitir INNER e usar JOIN, o efeito é o mesmo)Para conectar as duas tabelas acima para ler o valor do campo chenweiliang_count correspondente a todos os campos chenweiliang_author na tabela chenweiliang_tbl na tabela 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)

A instrução SQL acima é equivalente a:

cláusula 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 LEFT JOIN

A junção esquerda do MySQL é diferente da junção. MySQL LEFT JOIN lerá todos os dados na tabela de dados da esquerda, mesmo se a tabela da direita não tiver dados correspondentes.

Instância

Tente os seguintes exemplos para chenweiliang_tbl para a mesa esquerda,tcount_tbl Para a tabela correta, entenda a aplicação do 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)

No exemplo acima, LEFT JOIN é usado e esta instrução lerá todos os dados de campo selecionados da tabela de dados chenweiliang_tbl à esquerda, mesmo se não houver nenhum valor de campo correspondente de chenweiliang_author na tabela tcount_tbl à direita.


MySQL JOIN DIREITO

MySQL RIGHT JOIN lerá todos os dados na tabela de dados à direita, mesmo se não houver dados correspondentes na tabela à esquerda.

Instância

Tente os seguintes exemplos para chenweiliang_tbl para a mesa esquerda,tcount_tbl Para a tabela correta, entenda a aplicação do MySQL RIGHT JOIN:

JUNTAR À DIREITA

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 é usado no exemplo acima, esta instrução lerá todos os dados de campo selecionados da tabela de dados direita tcount_tbl, mesmo se não houver nenhum valor de campo chenweiliang_author correspondente na tabela esquerda chenweiliang_tbl.


Usando JOIN no script PHP

A função mysqli_query() é usada em PHP para executar instruções SQL, você pode usar a mesma instrução SQL acima como parâmetro para a função mysqli_query().

Tente o seguinte exemplo:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartilhou "Uso de várias tabelas de junção interna no banco de dados MySQL? left Left Join Usage Efficiency", ele irá ajudá-lo.

Bem-vindo a compartilhar o link deste artigo:https://www.chenweiliang.com/cwl-488.html

Bem-vindo ao canal Telegram do blog de Chen Weiliang para receber as últimas atualizações!

🔔 Seja o primeiro a obter o valioso "Guia de uso da ferramenta de IA de marketing de conteúdo ChatGPT" no diretório superior do canal! 🌟
📚 Este guia contém um valor enorme, 🌟Esta é uma oportunidade rara, não perca! ⏰⌛💨
Compartilhe e curta se gostar!
Seus compartilhamentos e curtidas são nossa motivação contínua!

 

发表 评论

Seu endereço de e-mail não será publicado. 必填 项 已 用 * 标注

滚动 到 顶部