mysql测试要掌握的,高级软件测试人员一定要掌握的SQL语言之嵌套查询(MYSQL)

未经王豆豆同意,不予转载,如要转载,请注明出处。

查询语句(SELECT)是软件测试人员使用得最多,也是最需要被掌握的语句,查询语句可以分为单表查询,连接查询,嵌套查询(子查询)等。

3.嵌套查询

练习数据:

dd9813c1ae5b23b681e277dac62d1bff.png

软件测试人员在做自动化测试或查询数据时,经常会用到子查询,将一个查询语句的结果集作为另一个查询语句的条件或者表,从而查询出新的结果集。

嵌套查询即是子查询

一个查询语句包含其他的查询语句,则叫子查询

子查询有几种结果:

子查询返回一列语句:也就是一列一个数据,这是使用情况最多的

返回一行语句:查询结果返回一行数据,有可能是一行完整的数据

返回多行语句:查询结果返回一组数据

格式:

SELECT [ALL|DISTINCT] {*|table1.*|{table1.field1} [as alias1]|{table2.field2} [as alias2],....}

FROM table1 [别名],table2,{

SELECT [ALL|DISTINCT] {*|table1.*|{table1.field1} [as alias1]|{table2.field2} [as alias2],....}

FROM table1 [别名],table2,....

[WHERE 某列名称 = 某值]

[ORDER BY ...]

}别名,....

[WHERE (条件s){

SELECT [ALL|DISTINCT] {*|table1.*|{table1.field1} [as alias1]|{table2.field2} [as alias2],....}

FROM table1 [别名],table2,....

[WHERE 某列名称 = 某值]

[ORDER BY ...]

}]

[ORDER BY ...]

现在有三张表,表结构如下:班级(class)表(学号(id),姓名(name),班级(class),年龄(age))

课程(course)表(课程名(cname),课程号(cno))

分数(score)表(学号(xuehao),姓名(name),课程号(scno),分数(score))

(1)查询出学生数据库分数大于王豆豆测试基础的分数的学员姓名和分数

解题步骤:

1.查询王豆豆测试基础的分数SELECT score

FROM score s,course c

WHERE s.scno = c.cno AND c.cname ='测试基础' AND s.name = '王豆豆';

a8bc12cd258ea601fb0fee8fc079b461.png

2.查询出学生数据库的分数SELECT score

FROM score s,course c

WHERE s.scno = c.cno AND c.cname = "数据库";

a4097b4900fa890c4f6e615e4e78526a.png

3.合并,查询出分数大于1题查询结果的学员姓名和分数SELECT s.name,s.score

FROM score s, course c

WHERE s.scno = c.cno AND c.cname = "数据库" AND score > (SELECT score

FROM score s,course c

WHERE s.scno = c.cno AND c.cname ='测试基础' AND s.name = '王豆豆');

2863ea282cc697e69e6440cb69646bab.png

(2)查询出分数小于测试基础最低分数的学员姓名和课程,分数

解题步骤:

1.查询出测试基础的分数(查询结果为一组数据)SELECT score

FROM score s,course c

WHERE s.scno = c.cno AND c.cname ='测试基础';

ad865e43012a5fa24e916b2c6f076dbf.png

2.查询出分数小于最低分数的学员姓名和课程,分数SELECT s.name,c.cname,s.score

FROM score s,course c

WHERE s.scno = c.cno AND score

FROM score s,course c

WHERE s.scno = c.cno AND c.cname ='测试基础');

88e857e40ec9fa6f73448d853aeeea0c.png

(3)查询出分数大于测试基础最低分数的学员姓名和课程,分数SELECT s.name,c.cname,s.score

FROM score s,course c

WHERE s.scno = c.cno AND score >ANY(SELECT score

FROM score s,course c

WHERE s.scno = c.cno AND c.cname ='测试基础');

53fadbca7ccc8ee4c20ef41b09cb92b9.png

注意:

1.ANY

>ANY() : 比里面最小值的大

=ANY() == IN 包含

2.ALL

>ALL() : 大于里面最大值

(5).以课程号 '11632'为例,查询成绩高于'3'号同学的所有同学的记录。SELECT c.*

FROM class c,score s

WHERE c.id=s.xuehao AND s.scno = '11632'

AND s.score > ALL(SELECT score FROM score WHERE xuehao = '3' );

f33f6bd2215bcd584675aa862c046879.png

(6)查询与学号为'2'的同学同岁的所有学生的学号、姓名和年龄。SELECT id,name,age

FROM class

WHERE age = (SELECT age FROM class WHERE id= '2');

660642e17a28365e106af7d4c9da851f.png

(7)查询出分数小于课程号为11634的学员分数最大值的学员姓名和分数SELECT c.name,s.score

FROM class c,score s

WHERE c.id = s.xuehao AND

s.score

c16d14607040004af4a812ec4842d3ce.png

王豆豆

王豆豆是在mysql上进行的练习,各位小伙伴们可以自己搭建一个mysql数据库进行练习。

未经王豆豆同意,不予转载,如要转载,请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值