当前位置: 首页 > 情怀
总结vue3 的一些知识点:MySQL 连接的使用 全球微速讯
来源:博客园     时间:2023-06-09 08:30:16

MySQL 连接的使用

在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。

本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。


(资料图)

你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。

JOIN 按照功能大致分为如下三类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • **LEFT JOIN(左连接):**获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接):与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

本章节使用的数据库结构及数据下载:kxdang-mysql-join-test.sql。

在命令提示符中使用 INNER JOIN

我们在RUNOOB数据库中有两张表 tcount_tbl 和 kxdang_tbl。两张数据表数据如下:

实例

尝试以下实例:

测试实例数据

mysql> use RUNOOB;Database changedmysql> SELECT * FROM tcount_tbl;+---------------+--------------+| kxdang_author | kxdang_count |+---------------+--------------+| 菜鸟教程  | 10           || RUNOOB.COM    | 20           || Google        | 22           |+---------------+--------------+3 rows in set (0.01 sec) mysql> SELECT * from kxdang_tbl;+-----------+---------------+---------------+-----------------+| kxdang_id | kxdang_title  | kxdang_author | submission_date |+-----------+---------------+---------------+-----------------+| 1         | 学习 PHP    | 菜鸟教程  | 2017-04-12      || 2         | 学习 MySQL  | 菜鸟教程  | 2017-04-12      || 3         | 学习 Java   | RUNOOB.COM    | 2015-05-01      || 4         | 学习 Python | RUNOOB.COM    | 2016-03-06      || 5         | 学习 C      | FK            | 2017-04-05      |+-----------+---------------+---------------+-----------------+5 rows in set (0.01 sec)

接下来我们就使用MySQL的**INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)**来连接以上两张表来读取kxdang_tbl表中所有kxdang_author字段在tcount_tbl表对应的kxdang_count字段值:

INNER JOIN

mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a INNER JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;+-------------+-----------------+----------------+| a.kxdang_id | a.kxdang_author | b.kxdang_count |+-------------+-----------------+----------------+| 1           | 菜鸟教程    | 10             || 2           | 菜鸟教程    | 10             || 3           | RUNOOB.COM      | 20             || 4           | RUNOOB.COM      | 20             |+-------------+-----------------+----------------+4 rows in set (0.00 sec)

以上 SQL 语句等价于:

WHERE 子句

mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a, tcount_tbl b WHERE a.kxdang_author = b.kxdang_author;+-------------+-----------------+----------------+| a.kxdang_id | a.kxdang_author | b.kxdang_count |+-------------+-----------------+----------------+| 1           | 菜鸟教程    | 10             || 2           | 菜鸟教程    | 10             || 3           | RUNOOB.COM      | 20             || 4           | RUNOOB.COM      | 20             |+-------------+-----------------+----------------+4 rows in set (0.01 sec)

MySQL LEFT JOIN

MySQL left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。

实例

尝试以下实例,以kxdang_tbl为左表,tcount_tbl为右表,理解 MySQL LEFT JOIN 的应用:

LEFT JOIN

mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a LEFT JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;+-------------+-----------------+----------------+| a.kxdang_id | a.kxdang_author | b.kxdang_count |+-------------+-----------------+----------------+| 1           | 菜鸟教程    | 10             || 2           | 菜鸟教程    | 10             || 3           | RUNOOB.COM      | 20             || 4           | RUNOOB.COM      | 20             || 5           | FK              | NULL           |+-------------+-----------------+----------------+5 rows in set (0.01 sec)

以上实例中使用了 LEFT JOIN,该语句会读取左边的数据表 kxdang_tbl 的所有选取的字段数据,即便在右侧表 tcount_tbl中 没有对应的 kxdang_author 字段值。

MySQL RIGHT JOIN

MySQL RIGHT JOIN 会读取右边数据表的全部数据,即便左边边表无对应数据。

实例

尝试以下实例,以kxdang_tbl为左表,tcount_tbl为右表,理解MySQL RIGHT JOIN的应用:

RIGHT JOIN

mysql> SELECT a.kxdang_id, a.kxdang_author, b.kxdang_count FROM kxdang_tbl a RIGHT JOIN tcount_tbl b ON a.kxdang_author = b.kxdang_author;+-------------+-----------------+----------------+| a.kxdang_id | a.kxdang_author | b.kxdang_count |+-------------+-----------------+----------------+| 1           | 菜鸟教程    | 10             || 2           | 菜鸟教程    | 10             || 3           | RUNOOB.COM      | 20             || 4           | RUNOOB.COM      | 20             || NULL        | NULL            | 22             |+-------------+-----------------+----------------+5 rows in set (0.01 sec)

以上实例中使用了 RIGHT JOIN,该语句会读取右边的数据表 tcount_tbl 的所有选取的字段数据,即便在左侧表 kxdang_tbl 中没有对应的kxdang_author 字段值。

在 PHP 脚本中使用 JOIN

PHP 中使用 mysqli_query() 函数来执行 SQL 语句,你可以使用以上的相同的 SQL 语句作为 mysqli_query() 函数的参数。

尝试如下实例:

MySQL ORDER BY 测试:

菜鸟教程 MySQL JOIN 测试

";echo "";while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)){ echo " ". " ". " ". "";}echo "
教程 ID作者登陆次数
{$row["kxdang_id"]}{$row["kxdang_author"]} {$row["kxdang_count"]}
";mysqli_close($conn);?>

标签:
最新推荐

广告

X 关闭

广告

X 关闭

户外

英媒:调查显示,欧洲年轻一代危险网络行为成常态

英媒:调查显示,欧洲年轻一代危险网络行为成常态

(相关资料图)【环球时报综合报道】据英国《卫报》5日报道,近日,一项针对英国、法国、西班牙等9个欧洲...

“网红AI”写作技巧惊人?英媒:大学生用其完成考试答题能拿满分

“网红AI”写作技巧惊人?英媒:大学生用其完成考试答题能拿满分

(资料图)【环球时报综合报道】人工智能研究机构OpenAI日前发布的全新聊天机器人模型ChatGPT,不仅会自动...

【环球报资讯】威尔士两高官公款看世界杯,被批“浪费纳税人的钱财”

【环球报资讯】威尔士两高官公款看世界杯,被批“浪费纳税人的钱财”

(相关资料图)【环球时报综合报道】因被指在卡塔尔公款旅游,英国威尔士首席部长马克·德雷克福德和经济...

新华全媒+丨年内第二次降准落地 释放长期资金约5000亿元

新华全媒+丨年内第二次降准落地 释放长期资金约5000亿元

【资料图】新华社北京12月5日电(记者吴雨)年内第二次降准12月5日正式落地,释放长期资金约5000亿元。...

我国将依托“832平台”深入推进政府采购脱贫地区农副产品

我国将依托“832平台”深入推进政府采购脱贫地区农副产品

【资料图】新华社北京12月5日电(记者申铖)记者5日从财政部了解到,财政部、农业农村部、国家乡村振兴...

全国快递日均业务量复苏提速 重回3亿件以上

全国快递日均业务量复苏提速 重回3亿件以上

(相关资料图)新华社北京12月5日电(记者戴小河)国家邮政局监测数据显示,11月27日以来,全国快递日均业...

环球热点评!报告显示中国已成世界上空气质量改善最快的国家

环球热点评!报告显示中国已成世界上空气质量改善最快的国家

(相关资料图)中国网 中国发展门户网讯 11月29日,亚洲清洁空气中心在2022中国蓝天观察论坛上发布了最...

【天天新视野】北京:完善义务教育交流轮岗激励机制

【天天新视野】北京:完善义务教育交流轮岗激励机制

(资料图)新华社北京12月3日电(记者罗鑫、赵琬微)北京市教委等十部门日前发布的《北京市新时代基础教育...

天天动态:​空间站第三批空间科学实验样品顺利返回并交付实验科学家

天天动态:​空间站第三批空间科学实验样品顺利返回并交付实验科学家

(资料图)中国网 中国发展门户网讯北京时间2022年12月4日20时09分,神舟十四号载人飞船返回舱在东风着陆...

世界速看:我国在国际上首次完成了水稻从种子到种子全生命周期空间培养实验

世界速看:我国在国际上首次完成了水稻从种子到种子全生命周期空间培养实验

中国网 中国发展门户网讯北京时间2022年12月4日20时09分,神舟十四号载人飞船返回舱在东风着陆场成功着...

露营