Mysql碎片整理:多表查询

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 多表查询

提示

本文简单介绍一下多表查询的基本方法,供快速复习和浏览。主要涉及到:子查询联结查询,其中联结查询主要介绍

  • 内联结(INNER JOIN
  • 外联结(LEFT OUTER JOINRIGHT OUTER JOIN

子查询

将一个 SELECT的查询结果作为 一整个单元,在另外一个 SELECT语句中使用

例子:查询商品,要求销售价格比菜刀的销售价格贵。

我们可以拆解该语句:

  1. 查询菜刀的销售价格
SELECT sale_price FROM product WHERE product_name = '菜刀'
  1. 将查询出的菜刀销售价格放在新SELECTWHERE条件中。
SELECT * FROM product WHERE sale_price > (SELECT sale_price FROM product WHERE product_name = '菜刀')

这里就用到了子查询,将一个结果的单元封装到另外一个查询语句中。

注意 : 子查询既可以用在单表中做嵌套查询,也可以用在多表中。但单表的嵌套查询是常用的。


联结

联结:主要是针对两个表中 有关联的字段,例如 A.id = B.id,A表中的id和B表中的id是有关联的。

内联结

内联结:更多的用途是以 A.id = B.id为条件后,找出两个表中的 公共部分。它的关键字是 INNER JOIN ON
SELECT * 
FROM T1 
INNER JOIN T2
ON 条件

T1 INNER JOIN T2:将两个表的记录拼接起来,它需要按条件进行拼接,即ON,执行后会对比;两个表的每行记录,如果满足ON条件,就会将两个表的所有列进行拼接,形成一个表。它的执行效果和WHERE的等值判断一样,但是效率会比WHERE高。

例子:有两个表,一个是用户表(USERS),一个是订单表(ORDERS),查询用户的购物信息

SELECT  *
FROM USERS
INNER JOIN ORDERS
ON USERS.ID = ORDERS.CUSTOMER_ID;

外联结

外联结:更多的用途是以A.id = B.id为条件后

  • A LEFT JOIN B:以A表为完整展示,B表为筛选条件 ,在B中找不到对应A的记录,则将B中的内容置为NULL。

或者

  • A RIGHT JOIN B:以B表为完整展示,A表为筛选条件,在A中找不到对应B的记录,则将A中的内容置为NULL。

还是以上面的例子展开这里可以这样说:

例子:查询所有的用户信息和它的购物信息,若没有购物信息设置为NULL即可

SELECT *
FROM USERS
LEFT JOIN ORDERS
ON USERS.ID = ORDERS.CUSTOMER_ID;

记忆起来其实比较简单,它们不光是将对应条件USERS.ID = ORDERS.CUSTOMER_ID的两个表的字段做全拼接。而且,USERS表中的内容是全部展示,如果不满足条件USERS.ID = ORDERS.CUSTOMER_ID的字段咋整?设置为NULL即可。即USERS表是完整展示信息的,而不满足条件的这一行,在ORDERS的字段中都设为NULL。

T1 RIGHT JOIN T2LEFT JOIN刚好相反,它是T2表完整展示。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
关系型数据库 MySQL
3. Mysql 如何实现多表查询
MySQL多表查询主要包括内连接和外连接。内连接有隐式和显式:隐式是通过`From 表A, 表B where 连接条件`,显式是`From 表A inner join 表B on 连接条件`。外连接包括左外连接(`left join`)、右外连接(`right join`)和全外连接(较少使用)。此外,还有交叉连接(`cross join`),但也较少使用。
222 0
|
存储 关系型数据库 MySQL
MySQL数据库碎片化:隐患与解决策略
UUID作为主键可能导致MySQL存储碎片,影响性能。频繁的DML操作、字段长度变化和非顺序插入(如UUID)都会造成碎片。碎片增加磁盘I/O,降低查询效率,浪费空间,影响备份速度。建议使用自增ID,固定长度字段,并适时运行OPTIMIZE TABLE来减少碎片。
|
SQL 存储 关系型数据库
MySQL 回收表碎片实践教程
在 MySQL 数据库中,随着数据的增删改操作,表空间可能会出现碎片化,这不仅会占用额外的存储空间,还可能降低表的扫描效率,特别是一些大表,在进行数据清理后会产生大量的碎片。本篇文章我们一起来学习下如何进行碎片回收以及相关注意点。
303 1
MySQL 回收表碎片实践教程
|
关系型数据库 MySQL 数据库
关系型数据库MySQL开发要点之多表查询2024详解
关系型数据库MySQL开发要点之多表查询2024详解
126 2
|
关系型数据库 MySQL 数据库
MySQL数据库开发之多表查询数据准备及案例实操
MySQL数据库开发之多表查询数据准备及案例实操
126 1
|
关系型数据库 MySQL 数据库
MySQL数据库基础第四篇(多表查询与事务)
MySQL数据库基础第四篇(多表查询与事务)
|
SQL 关系型数据库 MySQL
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
140 5
|
关系型数据库 MySQL 数据库
MySQL数据库——多表查询(4)-实例练习、多表查询总结
MySQL数据库——多表查询(4)-实例练习、多表查询总结
553 1
|
SQL 关系型数据库 MySQL
MySQL数据库——多表查询(3)-自连接、联合查询、子查询
MySQL数据库——多表查询(3)-自连接、联合查询、子查询
1349 1
|
关系型数据库 MySQL 数据库
MySQL数据库——多表查询(2)-内连接、外连接
MySQL数据库——多表查询(2)-内连接、外连接
204 1

推荐镜像

更多
下一篇
oss云网关配置