首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL查询-连接/联合?

MySQL查询-连接/联合是指在MySQL数据库中使用连接或联合操作来检索数据的方法。

连接操作是通过将两个或多个表中的数据进行匹配来获取结果集。连接操作可以分为内连接、外连接和交叉连接。

  • 内连接(INNER JOIN):返回两个表中匹配的行。只有在两个表中都存在匹配的行时,才会返回结果。 优势:可以根据多个表之间的关联关系获取相关数据。 应用场景:常用于需要关联多个表来获取相关信息的查询。 推荐的腾讯云相关产品:腾讯云数据库 MySQL版(https://cloud.tencent.com/product/cdb_mysql)
  • 外连接(LEFT JOIN、RIGHT JOIN):返回两个表中匹配的行以及未匹配的行。外连接可以分为左外连接和右外连接,分别返回左表和右表中的所有行,以及与另一表匹配的行。 优势:可以获取匹配和未匹配的数据,便于分析和比较。 应用场景:常用于需要获取匹配和未匹配数据的查询。 推荐的腾讯云相关产品:腾讯云数据库 MySQL版(https://cloud.tencent.com/product/cdb_mysql)
  • 交叉连接(CROSS JOIN):返回两个表中所有可能的组合。交叉连接会将第一个表的每一行与第二个表的每一行进行组合,返回所有可能的组合结果。 优势:可以获取两个表中所有可能的组合。 应用场景:常用于需要获取两个表的所有组合的查询。 推荐的腾讯云相关产品:腾讯云数据库 MySQL版(https://cloud.tencent.com/product/cdb_mysql)

联合操作是将多个SELECT语句的结果合并成一个结果集。联合操作可以使用UNION、UNION ALL、INTERSECT和EXCEPT等关键字。

  • UNION:将多个SELECT语句的结果合并成一个结果集,并去除重复的行。 优势:可以将多个查询结果合并成一个结果集。 应用场景:常用于需要合并多个查询结果的查询。 推荐的腾讯云相关产品:腾讯云数据库 MySQL版(https://cloud.tencent.com/product/cdb_mysql)
  • UNION ALL:将多个SELECT语句的结果合并成一个结果集,包括重复的行。 优势:可以将多个查询结果合并成一个结果集,并包含重复的行。 应用场景:常用于需要合并多个查询结果并保留重复行的查询。 推荐的腾讯云相关产品:腾讯云数据库 MySQL版(https://cloud.tencent.com/product/cdb_mysql)
  • INTERSECT:返回同时存在于多个SELECT语句结果集中的行。 优势:可以获取多个查询结果集中同时存在的行。 应用场景:常用于需要获取多个查询结果集中共同存在的行的查询。 推荐的腾讯云相关产品:腾讯云数据库 MySQL版(https://cloud.tencent.com/product/cdb_mysql)
  • EXCEPT:返回存在于第一个SELECT语句结果集中但不存在于其他SELECT语句结果集中的行。 优势:可以获取存在于一个查询结果集中但不存在于其他查询结果集中的行。 应用场景:常用于需要获取存在于一个查询结果集中但不存在于其他查询结果集中的行的查询。 推荐的腾讯云相关产品:腾讯云数据库 MySQL版(https://cloud.tencent.com/product/cdb_mysql)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Explain使用心得

    首先我们要了解mysql查询优化器的执行效率,大约有10个,重点几个主要就是const,ref,range ,index,all。Const效率是最块的,成本可以忽略不计,主要通过主键或者唯一值查询的sql。还有比const更快的system,这种时候必须是mysql优化器内部精确计算查询成本,所以system不适用于innoDB,只适用于myISAM。Ref代表用的是索引b+tree查询的时候,比如用连接查询的时候,连接查询的条件是索引唯一值,这时候还分为eq-ref,er-ef是当被驱动表查询的是主键或者唯一二级索引的时候,这时候就是显示eq-ref。当连接表的条件是普通索引查询的时候,这时候显示就是ref,range顾名思义就是索引区间查询的时候,index代表查询覆盖索引的时候,all就是放弃索引全盘扫描了。

    02

    记一次pgsql数据库cpu较高的事故

    接了一个小需求,是将一些用户操作记录入到我们的数据库中。观察到入库的接口平均响应时间比较差大概在几秒左右,当时没多想,就觉得是先查询是否存在,再插入这个过程中查询是否存在比较耗时(因为操作记录表比较大),但是后面发现有10%,20%的入库接口响应时间甚至达到了十秒,并且pgsql数据库cpu变高了很多,波段性的高峰存在。老样子,先查询是否存在慢sql,耗时3秒以上的sql查询load出来后发现原来是查询是否存在的这个过程出了问题。我是通过一个联合索引来查询是否存在的,他们分别是(公司id,店铺id,xxid),通过explain该sql语句发现并没有走这个联合索引,而是走了(公司id,店铺id)这个索引。而这个索引扫出来的结果并没有区分度,因为一个公司的某一个店铺可以有很多的操作记录。让我们来思考一下联合索引的定义,它满足最左前缀匹配原则,mysql的查询优化器会自动将你代码中乱序的查询条件组装成联合索引去查询,进而通过联合索引来计算查询成本。但是最左前缀匹配原则是要求越有区分度的字段应该放在左边,我误以为sql的查询优化会自动帮我把联合索引的区分度字段往左边移动。这次事故的原因主要是因为我对最左前缀匹配原则理解的不深刻,下次应该尽可能的将具有区分度的字段放在联合索引的左边。

    04
    领券