MySQL 데이터베이스 내부 조인 다중 테이블 사용? 왼쪽 왼쪽 조인 사용 효율성

MySQL 데이터베이스내부 조인 다중 테이블 사용? 왼쪽 왼쪽 조인 사용 효율성

mysql을 연결 사용

이전 장에서 우리는 하나의 테이블에서 데이터를 읽는 방법을 배웠습니다. 이는 상대적으로 간단하지만 실제 응용 프로그램에서는 여러 데이터 테이블에서 데이터를 읽어야 하는 경우가 많습니다.

이 장에서는 MySQL의 JOIN을 사용하여 두 개 이상의 테이블에 있는 데이터를 쿼리하는 방법을 보여줍니다.

SELECT, UPDATE 및 DELETE 문에서 Mysql의 JOIN을 사용하여 다중 테이블 쿼리를 조인할 수 있습니다.

JOIN은 기능에 따라 크게 다음 세 가지 범주로 나뉩니다.

  • INNER JOIN(내부 조인 또는 동등 조인): 두 테이블에서 일치하는 필드가 있는 레코드를 가져옵니다.
  • 왼쪽 조인(왼쪽 조인):오른쪽 테이블에 일치하는 레코드가 없더라도 왼쪽 테이블의 모든 레코드를 가져옵니다.
  • RIGHT JOIN(오른쪽 조인): LEFT JOIN과 달리 왼쪽 테이블에 일치하는 레코드가 없더라도 오른쪽 테이블의 모든 레코드를 가져오는 데 사용됩니다.

명령 프롬프트에서 INNER JOIN 사용

chenweiliang 데이터베이스에는 두 개의 테이블 tcount_tbl과 chenweiliang_tbl이 있습니다.두 데이터 테이블의 데이터는 다음과 같습니다.

다음 예를 시도해 보십시오.

테스트 인스턴스 데이터

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(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이 사용되었으며, 이 문장은 오른쪽 tcount_tbl 테이블에 해당 필드 값이 chenweiliang_author가 없더라도 왼쪽 데이터 테이블 chenweiliang_tbl에서 선택된 모든 필드 데이터를 읽습니다.


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이 사용되었으며 이 명령문은 왼쪽 테이블 chenweiliang_tbl에 해당하는 chenweiliang_author 필드 값이 없더라도 오른쪽 데이터 테이블 tcount_tbl의 선택된 모든 필드 데이터를 읽습니다.


PHP 스크립트에서 JOIN 사용

mysqli_query() 함수는 PHP에서 SQL 문을 실행하는 데 사용되며, mysqli_query() 함수에 대한 매개변수로 위와 동일한 SQL 문을 사용할 수 있습니다.

다음 예를 시도해 보세요.

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

희망 첸 웨이량 블로그( https://www.chenweiliang.com/ ) 공유 "MySQL 데이터베이스 내부 조인의 다중 테이블 사용? 왼쪽 왼쪽 조인 사용 효율성"을 참조하면 도움이 될 것입니다.

이 기사의 링크를 공유하는 것을 환영합니다:https://www.chenweiliang.com/cwl-488.html

최신 업데이트를 받으려면 Chen Weiliang 블로그의 Telegram 채널에 오신 것을 환영합니다!

🔔 채널 상위 디렉토리에서 귀중한 "ChatGPT 콘텐츠 마케팅 AI 도구 사용 가이드"를 가장 먼저 받아보세요! 🌟
📚 이 가이드에는 엄청난 가치가 담겨 있습니다. 🌟이것은 흔치 않은 기회입니다. 놓치지 마세요! ⏰⌛💨
당신이 원한다면 공유하고 좋아하십시오!
당신의 공유와 좋아요는 우리의 지속적인 동기 부여입니다!

 

发表 评论

귀하의 이메일 주소는 공개되지 않습니다. 必填 项 已 用 * 标注

맨위로 스크롤