软件测试中高级进阶直通车!5分中掌握sql的 子查询语句!

子查询和主查询

嵌入在其它查询语句中的select语句称为子查询。
其它的查询语句称为主查询。 所以说主查询是相对子查询来说的。

注意:

1 子查询是辅助主查询的,要么是充当主查询的条件,要么是充当主查询的数据源。

如果充当的是数据源,经常和连接查询配合使用。

2 子查询一定是一个完整的,可以单独执行的select查询语句。

子查询充当条件

在一个表中的某个结果,是另一个表的条件,可以用内连接去查到结果,也可以用子查询去查到结果。

1 标量子查询,返回的结果是一个字段,字段作为主查询的条件去使用

例1:查询姓名为张三的学生的成绩。
张三是在students学生表的,它的studentNo 是成绩表scores的一个字段。

select * from scores where sutdentNo =
(select studentNo from students where name = '张三')

2 列子查询,返回的结果是一列(一行,竖着多列的结果),作为主查询的条件
注意点:因为结果是一列,所以条件判断用in关键字。
例1:查询年龄为18岁的学员的成绩

select * from scores where studentNo in 
(select studentNo from students where age = 18)

3 行子查询,返回的结果是一行或多行,作为主查询的条件
注意:这个时候查询的条件是多个,用小括号一一对应的方法即可。查询的select后面是多个字段,和主查询的条件对应。
例1:查询和张三同样班级和年龄的学生信息

select * from students where (name,age) =
(select name,age from students where name = '张三')

子查询充当数据源

子查询充当数据源,就相当于子查询的结果作为一个表,使用内连接来进行主查询。
例1:查询自动化测试和前端的课程成绩
思路:
1 自动化测试和前端,从课程表(course)去查,结果是一个新的表
2 这个新的表和成绩表进行内连接查询从而得出结果
3 注意起别名,数据源整体视为一个表 ,它的结果起别名

select co.name ,sc.score from scores as sc enner join (
  select * from course  where name in ('自动化测试','前端')
)as co on sc.courseNo = co.courseNo

子查询作为条件时,几个特殊关键字

子查询作为条件时,如果结果是一列,我们可以使用in作为过滤的关键字。
1但是实际开发中,经常使用的是any或者some,我们可以理解为any和some 和in是等价的。
2 not in 和 != all 是等价的。
他们只是写法不一样,我们遇到了这样的代码能看懂即可。

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

猜你喜欢

转载自blog.csdn.net/wx17343624830/article/details/133392531