Mysql碎片整理:多表查询

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

提示

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

  • 内联结(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表完整展示。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
29天前
|
SQL 存储 关系型数据库
轻松入门MySQL:数据库关联与多表查询,构建高效的业务决策引擎(6)
轻松入门MySQL:数据库关联与多表查询,构建高效的业务决策引擎(6)
|
4月前
|
SQL 关系型数据库 MySQL
MySQL多表查询 子查询效率(DQL语句)
MySQL多表查询 子查询效率(DQL语句)
39 0
|
5月前
|
SQL 关系型数据库 MySQL
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
89 0
|
22天前
|
关系型数据库 MySQL
3. Mysql 如何实现多表查询
MySQL多表查询主要包括内连接和外连接。内连接有隐式和显式:隐式是通过`From 表A, 表B where 连接条件`,显式是`From 表A inner join 表B on 连接条件`。外连接包括左外连接(`left join`)、右外连接(`right join`)和全外连接(较少使用)。此外,还有交叉连接(`cross join`),但也较少使用。
20 0
|
23小时前
|
SQL 关系型数据库 MySQL
【Mysql】在多表查询过程中如果已经起了别名,就不能通过表名限定字段
【Mysql】在多表查询过程中如果已经起了别名,就不能通过表名限定字段
|
23小时前
|
SQL 数据可视化 关系型数据库
【MySQL-11】多表查询全解-【多表关系/内外自连接/子查询/多表查询案例链接】(可cv代码&案例演示)
【MySQL-11】多表查询全解-【多表关系/内外自连接/子查询/多表查询案例链接】(可cv代码&案例演示)
|
3天前
|
存储 SQL 关系型数据库
MySQL表的增删改查---多表查询和联合查询
MySQL表的增删改查---多表查询和联合查询
|
4天前
|
SQL 关系型数据库 MySQL
【MySQL探索之旅】多表查询
【MySQL探索之旅】多表查询
|
8天前
|
SQL 关系型数据库 MySQL
MySQL 多表查询
MySQL 多表查询
12 0
|
15天前
|
SQL 关系型数据库 vr&ar
多表查询——“MySQL数据库”
多表查询——“MySQL数据库”