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