多表查询,自连接,子查询

多表查询

笛卡尔积

select * from [1],[2],...;

在这里插入图片描述
在这里插入图片描述

例如这两张表,如果我想输出全部数据,会产生下面的情况

在这里插入图片描述

会发现现在class表中的数据随机组合了stu表,这就产生了笛卡尔积的情况;

多表查询

如果想要其中的几行数据,可以这么写
select [1],[2],... from [1],[2],... where [1].[1]=[2],[2];

在这里插入图片描述

1、一定要表明字段属于哪一个表,特别是拥有相同名字的列的时候
2、使用该约束条件可以过滤两张表形成的笛卡尔积,筛选出来想要的数据

自连接

自连接是指在一张表连接查询

例如在下表中我想知道有人得了99分的班级的所有人的成绩

在这里插入图片描述

1、可以使用子查询的方式(嵌套查询)
首先我需要查出来这个人是哪个班的,再输出那个班级所有人的成绩

在这里插入图片描述

采用子查询的方式后便是

在这里插入图片描述

2、可以给这张表定义别名

在这里插入图片描述

子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询

单行子查询

返回单行单列记录的子查询

多行子查询

返回多行记录的字查询

好像在说废话

in关键字

指的是匹配结果任意一个满足就返回
这有一张表,我要找到跟赵铁柱成绩一样的人,输出班级姓名成绩

在这里插入图片描述
在这里插入图片描述

all关键字

必须和结果中的所有都进行比较,全部满足条件才返回
还是那张表,我想找到成绩比3班所有人都成绩高的

在这里插入图片描述

any关键字

只需要满足条件之一就返回
依旧是那张表,我想找到比3班任意学生分数高的,包括自己班的学生

在这里插入图片描述

在from语句中使用子查询

将每个子查询都当做临时数据表来看

合并查询

union

用于取得两个结果集的并集,当使用时会自动去掉重复行

union all

用于取得两个结果集的并集,当使用时不会自动去掉重复行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值