测试人员由于工作原因要经常检查数据库的数据是否正确,这个时候就需要频繁使用多表查询。
在多表查询中,应用最多的就是内连接,其次就是子查询。

为什么子查询是在工作中应用也有这么广泛的应用呢?原因在于子查询非常方便灵活,所以在测试工作中会经常使用。

但尴尬的是,正式因为子查询太灵活,很多测试新手使用并不能很好掌握导致放弃,所以特撰写本文来分享子查询的应用规律。本文主要分为以下几个步骤:

  1. 第一步, 准备建表语句
  2. 第二步,将建表语句输入到navicat中建立三个表(实际中只用了2个表)
  3. 第三步,了解查询题做题3步骤
  4. 第四步,做题验证步骤
  5. 第五步,总结

一. 第一步 —— 准备建表语句

1.准备sql数据

-- 员工表 employees
-- 工资表 salary
-- 部门表 departments
create table departments (
deptid int(10) primary key,
deptname varchar(20) not null -- 部门名称
);
insert into departments values ('1001', '市场部');
insert into departments values ('1002', '测试部');
insert into departments values ('1003', '开发部');create table employees (
empid int(10) primary key,
empname varchar(20) not null, -- 姓名
sex varchar(4) default null, -- 性别
deptid int(20) default null, -- 部门编号
jobs varchar(20) default null, -- 岗位
politicalstatus varchar(20) default null, -- 政治面貌
leader int(10) default null
);
insert into employees values ('1', '王昭君', '女', '1003', '开发', '群众', '9');
insert into employees values ('2', '诸葛亮', '男', '1003', '开发经理', '群众', null);
insert into employees values ('3', '张飞', '男', '1002', '测试', '团员', '4');
insert into employees values ('4', '白起', '男', '1002', '测试经理', '党员', null);
insert into employees values ('5', '大乔', '女', '1002', '测试', '党员', '4');
insert into employees values ('6', '孙尚香', '女', '1001', '市场', '党员', '12');
insert into employees values ('7', '百里玄策', '男', '1001', '市场', '团员', '12');
insert into employees values ('8', '小乔', '女', '1002', '测试', '群众', '4');
insert into employees values ('9', '百里守约', '男', '1003', '开发', '党员', '9');
insert into employees values ('10', '妲己', '女', '1003', '开发', '团员', '9');
insert into employees values ('11', '李白', '男', '1002', '测试', '团员', '4');
insert into employees values ('12', '孙膑', '男', '1001', '市场经理', '党员', null);create table salary (
sid int(10) primary key,
empid int(10) not null,
salary int(10) not null -- 工资
);insert into salary values ('1', '7', '2100');
insert into salary values ('2', '6', '2000');
insert into salary values ('3', '12', '5000');
insert into salary values ('4', '9', '1999');
insert into salary values ('5', '10', '1900');
insert into salary values ('6', '1', '3000');
insert into salary values ('7', '2', '5500');
insert into salary values ('8', '5', '2000');
insert into salary values ('9', '3', '1500');
insert into salary values ('10', '8', '4000');
insert into salary values ('11', '11', '2600');
insert into salary values ('12', '4', '5300');

二.第二步——将建表语句输入到navicat中建立三个表

1)新建数据库test

2)将sql语句输入到查询编辑器中,运行

3)创建数据表并黏贴到excel中


三. 第三步 —— 了解子查询题做题3步骤

1.明确题目要求:

要查询“王昭君的工资”

2.明确什么是子查询概念

典型的子查询语句是sql语句中带有()的,如下面sql语句所示:
select * from scores where studentNo in (select studentNo from students where age=18)
在括号里面的查询叫子查询,在括号里面的表叫做子表
在括号外面的查询叫主查询,在括号外面的表叫做主表

3.子查询做题示意图(这里只介绍更为复杂的多表子查询,重要)

4.文字分析示意图(重要)

举例我们现在已建好的表中,现在要求的就是“王昭君的工资”,按照示意图用子查询应该怎么做呢?1.判断哪个表为主表(确保所求字段所在的表为主表),哪个表为子表。
分析:题意要求“王昭君的工资”,所求的字段是工资,所以工资字段所在的工资表salary就是主表,要放在括号外面。相应的,王昭君所在的员工表employees就是子表,要放在括号里面。2.(关键点1)判断两表的连接字段,[也是找两表中意义相同的字段]
分析:两个表要发生关系,也是要去找意义相同的字段,为雇员字段,也叫empid字段 这是关键点13.写出主表语句 “select * from  主表 where  连接字段  in ()”
分析:因为子查询一般都是做条件用的,而where又是条件查询的关键词,所以一般子查询都是放在where后面。where做条件查询时,前面一定是表,后面一定是字段。为什么连接字段后面不用“=”而用“in”,原因是子查询可能返回结果为多个,所以用in更合适。()是子查询占位符4.写出子表语句 “select 连接字段 from 子表 where ...”
分析:看示意图有一块文字非常重要“子查询语句所求的目标(关键点)2,往往是题目中所求字段,替换成连接字段即可”,比如我们的题目是求“王昭君的工资”,那么子查询求的是“王昭君的两表连接字段”,为“王昭君的empid”,所以就是“select 连接字段 from 子表 where ...”5.结合,就是将子查询放在处查询内部

5.从文字分析示意图,可将子查询5步骤优化为3步骤

1.分清主表和子表+两表的连接字段(第1,2步优化为1步,在大脑中过)
2.写出主查询语句select * from 主表 where 连接字段 in ()
3.结合主查询写出子查询语句(子查询目标:将题目所求字段改为连接字段)

四. 第四步 ——做题验证步骤

得到“王昭君的薪资”的sql语句就为

select * from salary where empid in (select empid from employees where empname='王昭君')补充:为什么子查询方便,因为主查询缺什么(empid),子查询就去查什么

五、总结

子查询的做题步骤就分为以下三步:

1.分清主表和子表+两表的连接字段(在大脑中过)
2.写出主查询语句select * from 主表 where 连接字段 in ()
3.结合主查询写出子查询语句(子查询目标:将题目所求字段改为连接字段)

补充:为什么子查询方便,因为主查询缺什么,子查询就去查什么

相比inner join内连接的方法去求“王昭君的薪资”,你就知道子查询是多么简单了。

不信,你用内连接的方法求一下。

想要入行软件测试的小伙伴们,此时正是好时机~

软件测试学习路线图详细介绍

第一阶段 功能测试

学前导读:学习本阶段内容,可全流程功能测试解决方案、Web自动化测试解决方案、数据分离解决方案、自动化测试报告解决方案、日志收集解决方案。

1.2022全网首发、最适合新手的软件测入门到实战教程上线啦!

真正的从入门到精通,包含了基础+项目实战,所有案例实战操作均图文并茂,真正实现一套全通关!

软件测试2022最新视频教程,软件测试基础入门到项目实战(涵盖软件测试基础+黑马头条项目实战)

2.软件测试入门到精通

软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。本课程共5天,针对零基础小白录制。零基础入门的必学课。

软件测试从入门到精通_软件测试基础教程

3. Linux系统2天快速入门

本视频包含Linux操作系统介绍、Linux的常用命令、vi编辑器。学习掌握本阶段内容,可具备Linux项目搭建能力。

Linux系统操作教程2天快速入门linux项目搭建

4. 软件测试MySQL数据库知识精讲+项目实战

本视频包含数据安装,数据表操作、数据操作-增删改查、条件查询、排序、聚合函数、分组、分页、连接查询、自关联、子查询、子查询演练。学习本课程内容,可具备数据库校验能力;还可以快速、规范的掌握数据库增删改查操作。

软件测试工程师必备MySQL数据库,mysql系统精讲+课后练习

第二阶段 Python编程

学前导读:学习本阶段内容,可掌握Python语法, 具备编程能力; 能建立编程思维以及面向对象程序设计思想; 能掌握UnitTest框架管理测试用例。

10天玩转Python软件测试

学习本阶段内容,可掌握Python语法, 具备编程能力; 能建立编程思维以及面向对象程序设计思想; 能掌握UnitTest框架管理测试用例。

Python自动测试教程,python从基础到UnitTest框架管理测试用例

第三阶段 UI自动化

学前导读:ui自动化大体分为web自动化和App自动化,在自动化测试领域中占比很大,经常使用。

1. 软件测试web自动化测试精讲与实战

本课程将教会大家搭建Web自动化和移动自动化测试环境;掌握Web自动化测试流程和脚本编写;掌握移动自动化测试中元素的定位方法、元素操作和手势操作;熟练掌握ADB工具的使用; 掌握PO模式的设计思想,并能够对页面进行封装;掌握数据驱动的实现方式; 能够在实际项目灵活运用自动化的相关技术。

软件测试web自动化测试,Web自动化流程精讲和移动自动化测试环境

2.零基础入门移动自动化——Appium框架

本课程会详细讲解Appium框架,Appium是一个开源的、跨平台的自动化测试框架,该框架适用于Native Application、Mobile Web Application或Hybrid Application的自动化测试。

零基础入门移动自动化测试——Appium框架

3. 轻松教你使用Appium进行IOS真机自动化测试

本套课程,将环境安装的步骤和注意事项呈现给学员,模拟器到真机实操,都进行演示讲解。内容丰富,生动形象,学完即可完成IOS端环境安装及实操。

轻松教你使用Appium进行IOS真机自动化测试

第四阶段 接口自动化

学前导读:接口测试是所有自动化测试应用频率最高部分。此阶段共分成14个部分进行详讲。

接口测试精讲+传智健康实战教程

本教程会涉及HTTP,Postman,Pymysql,requests库,集成UnitTes,Dubbo等诸多工具,最后用传智健康项目进行本阶段项目实战。

4天玩转接口测试,接口重点全解析+传智健康项目实战(包含requests库,集成UnitTes,Dubbo等诸多工具)

第五阶段 性能测试

学前导读:性能测试属于高级测试范畴,对于薪资的提升帮助很大,本阶段视频讲解性能测试环境搭建,JMeter工具的使用,性能测试监控、分析和调优方法。

4天快速入门性能测试

本视频通过性能测试基础理论及JMeter工具的学习;通过轻商城项目实战,带学员掌握性能测试需求分析、性能测试计划、测试用例设计、测试脚本开发、性能监控、性能分析和调优、性能测试报告总结。

性能测试全套教程,4天快速入门性能测试+项目商城实战(含JMeter工具等)

第六阶段 综合项目强化

学前导读:通过微信小程序、金融项目两个实战项目综合强化功能测试、接口测试、性能测试。

1. 微信小程序自动化测试实战

本视频涵盖:微信小程序基础介绍、Ego微商项目介绍、Ego微商项目部署、Ego微商小程序计划篇、Ego微商小程序设计篇、Ego微商小程序执行总结篇、Ego微商小程序接口测试篇、持续集成。

软件测试微信小程序自动化测试实战

2. 软件测试4天搞定金融项目

本视频讲解金融项目功能测试解决方案、真实项目测试体验解决方案、复杂业务接口测试解决方案 接口加解密测试解决方案、数据分离解决方案 持续集成解决方案、自动化测试报告解决方案、高并发测试解决方案。

软件测试4天快速搞定金融项目功能测试实战教程

测试高薪必备:3步教测试人员破解子查询相关推荐

  1. 一步一步教你写一个快递查询APP(适合新手)

    前言: 水平:自学Android十五天,以前有过混日子的编程经验. 目标: <第一行代码>学完之后,总想写个APP,天气的APP写了个初版,后面再说,今天演示的是制作快递查询APP的整个经 ...

  2. paddlepaddle测试安装_专栏 | 新手入门?一步一步教你如何安装PaddlePaddle

    原标题:专栏 | 新手入门?一步一步教你如何安装PaddlePaddle 机器之心发布 来源:百度PaddlePaddle 不久之前,机器之心联合百度推出 PaddlePaddle 专栏,为想要学习这 ...

  3. 测试开发必备技能-Jmeter二次开发

    为什么需要做二次开发?JMeter作为一款开源的性能.接口测试工具,有时候无法满足我们工作的需要,一般体现在:协议不支持.没有相应数据处理功能等. 一般这种情况下,我们可以做的选择有: 第一种找插件 ...

  4. 重读《从菜鸟到测试架构师》-- 测试专家的第一步

    无论是大学毕业的第一份工作还是工作多年后重新入职新公司,我们都不可避免的会遇到上班第一天,在这第一天的时间里我们需要完成领设备.装系统等准备工作,当然,不可或缺的还有新人培训,这本书的第一章也直白地使 ...

  5. 测试开发工程师成长日记018 - 测试面试必备题记录(持续更新)

    技术模块 一.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测试范围 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 ...

  6. 【测试新人必备】测试报告如何编写?模板来了

    目录 第1部分:引言包括两部分1.1项目背景 和 1.2参考资料 第2部分:测试基本信息主要包含测试范围,测试方案设计思路 第3部分:测试结果及缺陷分析主要包括测试执行情况与记录.缺陷的统计与分析 第 ...

  7. 5G网优工程师的外场CQT测试怎么做?手把手教你路测!

    路测是通信行业中对道路无线信号的一种最常用的测试方法,为提高测试效率,一般测试人员都是坐在汽车中,用专业的测试仪表对整个路段进行测试. 无线网络性能测试包括CQT和DT两个方面,作为5G网优工程师都必 ...

  8. c++可达矩阵_测试分析人员必备知识—需求管理和可追溯性矩阵

    测试分析人员必备知识-需求管理和可追溯性矩阵 严格的软件开发过程的基石是需求管理以及这些需求对实施的可追溯性,以及随后对正确实施的证明. 需求可追溯性由作者Gotel和Finkelstein定义为&q ...

  9. 新手测试周报范文_作为新手自动化测试人员,我应该避免的14个错误

    新手测试周报范文 当您开始作为自动化测试员的旅程时,错误肯定会发生. 如果您不参加Selenium自动化测试脚本的深入研究而参加自动化网站测试,也可能会发生这种情况. 虽然可以从错误中学习,但最好还是 ...

最新文章

  1. 解决javascript动态改变img的src属性图片不显示问题
  2. Java为什么print显示不完全,read-eval-print-loop – 在Java 9上,为什么System.getenv()的输出在jshell中不完整?...
  3. OpenGL 加载模型Model
  4. Docker/Docker 起步123
  5. 杭电acm2059-龟兔赛跑 java
  6. fixed 语句(C# 参考)
  7. Spring5 新特性
  8. ubuntu15.04源失效问题修复
  9. 大数据分析常用的方法有哪些
  10. zabbix 如何监控tcp的SYN,establised?
  11. Kubernetes持久化方案(PV、PVC、StorageClass)
  12. Android 学习JNI,用JAVA调用C
  13. 3~7串锂电池保护板
  14. MongoDB数据库去重
  15. 操作系统---IO设备
  16. 矩阵和向量的范式(Norms for Vectors and Matrices)
  17. backdrop-filter,让你的网站熠熠生”毛’
  18. Oracle数据系列(四)、高级查询2
  19. 小白记录——识别RNA编辑位点
  20. python判断素数的方法简书_深入浅出RSA在CTF中的攻击套路

热门文章

  1. 【JY】45天缩短到4天,突发性Fluent仿真任务怎么破?
  2. AHRS简要说明及使用例程(外加踩坑)
  3. 开发常用镜像站 - 阿里云镜像站
  4. Excel批量合并相同表头的表格
  5. Could not get a resource from the pool 错误解决
  6. 还不清楚如何编辑图片上的文字的话,就看看这篇文章吧
  7. 威联通 php配置,威联通(qnap) NAS docker 安装 IYUU 步骤
  8. 同城信息小程序服务器,同城小程序正式上线,这大概是目前信息量最大的小程序了...
  9. python处理金融数据_Python金融大数据分析-数据获取与简单处理
  10. 10.3 配置前缀列表