Latest web development tutorials

MySQL의 연결을 사용하여

이전 장에서, 우리는 배운 것을 비교적 간단 테이블에서 데이터를 읽을 수 있지만, 종종 실제 응용 프로그램에서 여러 테이블에서 데이터를 읽을 필요합니다.

이 장에서는 우리가 어떻게 MySQL은 두 개 이상의 테이블에서 쿼리 데이터를 조인을 사용하는 방법에 대해 알아 보겠습니다.

당신은 공동 멀티 테이블 쿼리를 가입하기 위해 문을 SELECT, UPDATE에 MySQL을 사용하고, 삭제할 수 있습니다.

다음과 같은 세 가지 범주로 나눌 기능에 따라 가입 :

  • (내부 연결 또는 해당 연결) INNER는 가입 : 테이블이 관계를 일치에 기록 두 개의 필드를 가져옵니다.
  • LEFT은 가입 (왼쪽 연결) : 해당하는 일치하는 레코드가없는 경우에도 왼쪽 테이블에 오른쪽 테이블에서 모든 레코드를 가져옵니다.
  • RIGHT (오른쪽 연결) 가입 : 왼쪽과 대조적으로 가입, 왼쪽 테이블에 해당하는 일치하는 레코드가없는 경우에도 모든 레코드에 적합한 테이블을 찾으실 수 있습니다.

데이터베이스 구조와 데이터는이 섹션 다운로드에 사용 : w3big.sql을 .


INNER 명령 프롬프트를 가입 사용

우리는 두 개의 테이블 w3big 데이터베이스에 tcount_tbl 및 w3big_tbl 있습니다. 다음과 같이 두 개의 데이터 테이블의 데이터는 다음과 같습니다

다음 예를보십시오 :

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT * FROM tcount_tbl;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahran          |             20 |
| mahnaz          |           NULL |
| Jen             |           NULL |
| Gill            |             20 |
| John Poul       |              1 |
| Sanjay          |              1 |
+-----------------+----------------+
6 rows in set (0.01 sec)
mysql> SELECT * from w3big_tbl;
+-------------+----------------+-----------------+-----------------+
| w3big_id | w3big_title | w3big_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-24      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-24      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-06      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.00 sec)
mysql>

다음으로 우리는 MySQL의 내부 조인 사용 tcount_tbl 테이블에 대응하는 모든 w3big_author 필드 w3big_count 필드 값을 w3big_tbl 읽기 표에 두 개 이상의 테이블을 연결하는 온 (사용은 내부 조인 같은 효과를 생략 할 수있다)

mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a INNER JOIN tcount_tbl b ON a.w3big_author = b.w3big_author;
+-----------+---------------+--------------+
| w3big_id | w3big_author | w3big_count |
+-----------+---------------+--------------+
|         1 | John Poul     |            1 |
|         3 | Sanjay        |            1 |
+-----------+---------------+--------------+
2 rows in set (0.00 sec)

SQL 문 위의 동일합니다 :

mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a, tcount_tbl b WHERE a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
2 rows in set (0.01 sec)
mysql>


MySQL은 LEFT는 가입

MySQL은 가입하고 다른 가입 떠났다. MySQL은 LEFT는 왼쪽에있는 데이터 테이블의 모든 데이터, 테이블도없이 해당 데이터가있는 경우의 오른쪽을 읽 가입하세요.

MySQL은 LEFT 응용 프로그램을 가입 이해, 오른쪽 테이블 tcount_tbl, 다음 예, w3big_tbl 왼쪽 테이블을보십시오 :

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a LEFT JOIN tcount_tbl b ON a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)

상기 실시 예는 성명 w3big_author 필드 값에 해당하는 우측 테이블 tcount_tbl가없는 경우에도, 데이터 테이블 w3big_tbl의 왼쪽으로 선택된 데이터 필드를 판독하고, 좌 조인 사용한다.


MySQL의 권리는 가입

MySQL의 권리 JOIN 테이블의 좌측에도없는 경우 해당 데이터의 데이터 테이블의 오른쪽에있는 모든 데이터를 판독한다.

오른쪽 테이블 w3big_tbl, MySQL은 RIGHT 응용 프로그램을 가입 이해하기 위해, 다음 예, tcount_tbl 왼쪽 테이블을보십시오 :

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT b.w3big_id, b.w3big_author, a.w3big_count FROM tcount_tbl a RIGHT JOIN w3big_tbl b ON a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)

권리를 사용하는 상기 실시 예는 성명 w3big_author 필드 값의 좌측 tcount_tbl에 상응하는 테이블이없는 경우에도, 데이터 테이블 w3big_tbl 오른쪽 선택된 모든 데이터 필드를 판독 JOIN.


PHP 스크립트의 사용을 가입

PHP 사용하여 mysql_query () SQL 문을 실행하는 기능, 당신은 상 mysql_query () 함수 매개 변수와 같은 SQL 문보다 더 사용할 수 있습니다.

다음 예를보십시오 :

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a INNER JOIN tcount_tbl b ON a.w3big_author = b.w3big_author';

mysql_select_db('w3big');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "Author:{$row['w3big_author']}  <br> ".
         "Count: {$row['w3big_count']} <br> ".
         "Tutorial ID: {$row['w3big_id']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>