mysql 学习三

本文详细讲解了SQL中的非等值连接操作,通过实例说明如何在两张无关联字段的表间进行筛选。接着探讨了自连接的概念,以及如何结合count(1)进行分组查询。此外,我们剖析了外连接(包括左外、右外和全外)的原理与应用场景,重点介绍了子查询的不同分类和用法,包括标量子查询、列子查询和行子查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.非等值连接
假设两张表没有关联字段
select * from a ,b
where a.id between b.id1 and b.id2
解释说明:拿a 的每一行,去匹配符合b表的条件。
3.自连接
把本身表的当成两张表去使用。
count(1) 统计结果集的行数
特点:
分组前筛选 where 原始表 位置 group by的前面
分组后的筛选 having 分组后的结果 group by 的后面

进阶6

语法:
select 查询列表
from 表1 别名 【连接类型】
join 表2 别名
on 连接条件
where 筛选条件
group by 分组
having 筛选条件
order by 排序列表
分类:
内连接:inner
外连接:
应用场景:用于查询一个表中有,另一个表中没有的记录
特点:
1.外连接的查询结果为主表中的所有记录
2.如果表中没有和它相匹配的,则显示null
3.外连接查询结果=内连接结果+主表中有而从表没有的记录
4.左外连接,left join左边的是主表
5.右外连接,right join 右边的是主表
5.交换顺序可以实现同样的效果
左外:left outer
右外: right outer
全外:full outer = 内连接的结果+表1中有但表2没有的+表2中有但表1没有的
理解为:两表合并,交集部分去重。
交叉连接:cross 笛卡尔积
内连接

进阶7 子查询

含义:出现在其他语句中的select 语句,,称为子查询或内查询。
外部的查询语句,称为主查询或外查询
分类:
按子查询出现的位置:
select 后面:仅仅标量子查询
from 后面:支持表子查询
where 后面 或 having 后面:标量子查询、列子查询、行子查询
exists 后面(相关子查询):表子查询
按结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行
行子查询(结果集有一行多列)
表子查询(结果集一般为多行多列)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值