MySQL多表查询

本文详细介绍了MySQL中的多表查询,包括笛卡尔积错误及其产生条件、等值连接、自连接、内连接与外连接的区别及使用,以及SQL99的新特性如自然连接和USING连接。通过实例解析了各种连接的实现方式,强调了使用表别名、ON子句以及正确设置连接条件的重要性,以优化查询效率。
摘要由CSDN通过智能技术生成


多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。
多表查询的前提条件:一起查询的表之间由对应关系(一对一、一对多),一定有一些字段是关联的。

可以给表起别名,如果给表起了别名,一旦在SELECT或WHERE中使用表名的话,则必须使用表的别名,而不能再使用表的原名。


使用别名可以简化查询。
列名前使用表名前缀可以提高查询效率。

如果有n个表实现多表的查询,则需要至少n-1个连接条件

笛卡尔积的错误

笛卡尔积也成为交叉连接。笛卡尔积可以把任意表进行连接,即使这两张表不相关,此时,便出现了笛卡尔积错误。
如下图所示,employees和departments是两张表,此时没有WHERE约束条件,产生2889条记录,此时,便产生了笛卡尔积错误。
在这里插入图片描述
在这里插入图片描述

笛卡尔积的错误产生的条件

1.省略多个表的连接条件(或关联条件)
2.连接条件(或关联条件)无效
3.所有表中的所有行互相连接

为了避免笛卡尔积, 可以在 WHERE 加入有效的连接条件。
此时加入WHERE条件约束,查询出106条记录。
在这里插入图片描述
在这里插入图片描述

在查询的字段中由相同的列时,列名之前需要加上表名前缀。

在这里插入图片描述

在这里插入图片描述

在进行多表查询的时候,为了优化查询速度,可以在每个字段前都加上表名。

多表查询的分类

等值连接

分类1 :等值连接vs非等值连接

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值