这里有新鲜出炉的 Mysql 教程,程序狗速度看过来!
MySQL 是一个开放源码的小型关联式数据库管理系统,开发者为瑞典 MySQL AB 公司。MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。
本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。对 mysql 中的 join 感兴趣的朋友一起学习吧
在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。
本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。
你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 join 来联合多表查询。
以下我们将演示 MySQL LEFT JOIN 和 JOIN 的使用的不同之处。
在命令提示符中使用 JOIN
我们在 RUNOOB 数据库中有两张表 tcount_tbl 和 runoob_tbl。两张数据表数据如下:
实例
尝试以下实例:
- root@host# mysql -u root -p password;
- Enter password:*******
- mysql> use RUNOOB;
- Database changed
- mysql> SELECT * FROM tcount_tbl;
- +-----------------+----------------+
- | runoob_author | runoob_count |
- +-----------------+----------------+
- | mahran | 20 |
- | mahnaz | NULL |
- | Jen | NULL |
- | Gill | 20 |
- | John Poul | 1 |
- | Sanjay | 1 |
- +-----------------+----------------+
- 6 rows in set (0.01 sec)
- mysql> SELECT * from runoob_tbl;
- +-------------+----------------+-----------------+-----------------+
- | runoob_id | runoob_title | runoob_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 的 JOIN 来连接以上两张表来读取 runoob_tbl 表中所有 runoob_author 字段在 tcount_tbl 表对应的 runoob_count 字段值:
- mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count
- -> FROM runoob_tbl a, tcount_tbl b
- -> WHERE a.runoob_author = b.runoob_author;
- +-------------+-----------------+----------------+
- | runoob_id | runoob_author | runoob_count |
- +-------------+-----------------+----------------+
- | 1 | John Poul | 1 |
- | 3 | Sanjay | 1 |
- +-------------+-----------------+----------------+
- 2 rows in set (0.01 sec)
- mysql>
在 PHP 脚本中使用 JOIN
PHP 中使用 mysql_query() 函数来执行 SQL 语句,你可以使用以上的相同的 SQL 语句作为 mysql_query() 函数的参数。
尝试如下实例:
- <?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.runoob_id, a.runoob_author, b.runoob_count
- FROM runoob_tbl a, tcount_tbl b
- WHERE a.runoob_author = b.runoob_author';
- mysql_select_db('RUNOOB');
- $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['runoob_author']} <br> ".
- "Count: {$row['runoob_count']} <br> ".
- "Tutorial ID: {$row['runoob_id']} <br> ".
- "--------------------------------<br>";
- }
- echo "Fetched data successfully\n";
- mysql_close($conn);
- ?>
MySQL LEFT JOIN
MySQL left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。
实例
尝试以下实例,理解 MySQL LEFT JOIN 的应用:
- root@host# mysql -u root -p password;
- Enter password:*******
- mysql> use RUNOOB;
- Database changed
- mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count
- -> FROM runoob_tbl a LEFT JOIN tcount_tbl b
- -> ON a.runoob_author = b.runoob_author;
- +-------------+-----------------+----------------+
- | runoob_id | runoob_author | runoob_count |
- +-------------+-----------------+----------------+
- | 1 | John Poul | 1 |
- | 2 | Abdul S | NULL |
- | 3 | Sanjay | 1 |
- +-------------+-----------------+----------------+
- 3 rows in set (0.02 sec)
以上实例中使用了 LEFT JOIN,该语句会读取左边的数据表 runoob_tbl 的所有选取的字段数据,即便在右侧表 tcount_tbl 中没有对应的 runoob_author 字段值。
以上所述是小编给大家介绍的 Mysql 中 Join 的使用实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/17/0428/333672.html